Linux高可用集群(二):DRBD分布式复制块设备简介和使用

DRBD简介:

DRBD全称Distributed Replicated Block (分布式的复制块设备),属于Device公司,但是完全开源。它是一款基于块设备的文件复制解决方案,速度比文件级别的软件如NFSsamba快很多,是很多中小企业的共享存储首选解决方案。


DRBD工作需要在两个节点上同时准备一块一模一样的分区组成镜像,这就是为什么它叫做分布式复制块设备,它主要通过复制数据来实现文件同步(备份),主要用于集群文件共享, 我们通过它的工作原理来了解块复制和文件复制的不同,如下图:


首先,您需要知道,DRBD是工作在系统内核空间,而不是用户空间,它直接复制的是二进制数据,这是它速度快的根本原因。

其次,DRBD至少需要两个节点来工作,一主一次。


DRBD的文件同步过程和普通复制过程的不同: 

DRBD在数据进入Buffer Cache时,先经过DRBD这一层,复制一份数据经过TCP/IP协议封装,发送到另一个节点上,另一个节点通过TCP/IP协议来接受复制过来的数据,同步到次节点的DRBD设备上。


下面我们来配置DRBD,前提:

1)主机名称和uname -n 命令输出的一致,最好是FQDN格式

2)DRBD的两个分区大小一致,先不要格式化

3)两个节点上准备都准备一个2G的分区/dev/sda5


准备两台虚拟机 ,我使用的是vm6.5+redhat5.4 ,主机名称和IP地址如下

node1.a.org   172.16.14.11

node2.a.org   172.16.14.12

一.安装,修改配置文件

1)安装drbd软件包,需要的软件包如下:

[root@node1 ~]# ls drbd/

drbd83-8.3.8-1.el5.centos.i386.rpm  kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

# 使用rpm -i安装,这两个软件包并没有什么依赖关系

[root@node1 drbd]# rpm -ivh *.rpm

[root@node2 drbd]# rpm -ivh *.rpm

2)复制配置文件到/etc下

[root@node2 drbd]# cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc/

cp: overwrite `/etc/drbd.conf'? Y       # 直接覆盖,原文件没有任何内容

[root@node2 drbd]# cat /etc/drbd.conf 

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

# 配置文件里只有下面两行,告诉我们定义在drbd.d下面定义.res结尾的文件为drbd的资源

include "drbd.d/global_common.conf";            # 真正的主配置文件

include "drbd.d/*.res";

# 修改 global_common.conf ,内容如下

[root@node2 drbd]# vim /etc/drbd.d/global_common.conf 
global {
        usage-count no;
}
common {
        protocol C;           # C 指同步    A 异步 B 半同步   
        handlers {
                pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
        }
        startup {
                wfc-timeout 120;
                degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach;
fencing resource-only;
        }
        net {
cram-hmac-alg "sha1";
 	 shared-secret "mydrbdlab";
        }
        syncer {
                rate 100M;                    # 你网卡的速率
        }
}

3)定义一个资源web,用来存放网页文件,给集群提供文件服务

resource web {
  on node1.a.org {                           # 注意主机名
    device    /dev/drbd0;
    disk      /dev/sda5;                     # 分区
    address   172.16.14.11:7789;             # 注意IP
    meta-disk internal;
  }
  on node2.a.org {                           # 注意主机名
    device    /dev/drbd0;
    disk      /dev/sda5;                     # 分区
    address   172.16.14.12:7789;             # 注意IP
    meta-disk internal;
  }
}

4)将配置文件复制到node1上

[root@node2 drbd]# scp /etc/drbd.conf node1:/etc/

[root@node2 drbd]# scp /etc/drbd.d/* node1:/etc/drbd.d/


二.初始化已经以的资源,启动drbd服务

1)初始化资源

[root@node1 drbd]# drbdadm create-md web

[root@node2 drbd]# drbdadm create-md web

2)启动服务,这里需要说明,当一个节点启动服务后,如果另一个节点不启动,它会一直卡在那处于等待状态。

[root@node1 drbd]# service drbd start

[root@node2 drbd]# service drbd start

3)查看同步状态

[root@node1 drbd]# watch -n 1 'cat /proc/drbd'


也可以通过下面的命令来查看

[root@node1 drbd]# drbd-overview 

  0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r---- 


三.设置node1为主节点,开始数据同步

1)设置主节点

[root@node1 drbd]# drbdsetup /dev/drbd0 primary -o

或者drbdadm -- --overwrite-data-of-peer primary web

查看节点信息状态,已经成为primiary了,中间有一个数据同步过程

[root@node1 drbd]# drbd-overview 

  0:web  Connected Primary/Secondary UpToDate/UpToDate C r---- 

2)创建文件系统,挂载之

[root@node1 drbd]# mke2fs -j -L DRBD /dev/drbd0

[root@node1 drbd]# mkdir /mnt/drbd

[root@node1 drbd]# mount /dev/drbd0 /mnt/drbd/

创建几个空文件

[root@node1 drbd]# cd /mnt/drbd/

[root@node1 drbd]# touch a b c


四.切换主节点

# 先卸载,将node1改为次节点

[root@node1 ~]# umount /mnt/drbd/

[root@node1 ~]# drbdadm secondary web

# 在node2上设置为主节点

[root@node2 ~]# mkdir /mnt/drbd            # 穿件挂载点

[root@node2 ~]# drbdadm primary web

[root@node2 ~]# drbd-overview 

  0:web  Connected Secondary/Primary UpToDate/UpToDate C r---- 

[root@node2 ~]# drbdadm primary web

查看刚才创建的文件是否存在

[root@node2 ~]# mount /dev/drbd0 /mnt/drbd/

[root@node2 ~]# ls /mnt/drbd/

a  b  c  lost+found


























你可能感兴趣的:(工作,linux,集群,redhat,disk,文件同步)