DRBD安装与配置

1.什么是DRBD?
DRBD是由内核模块和相关脚本构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。也可以把它看成一个网络RAID1。

工作原理:
DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群已经够了。

DRBD协议:
A:数据一旦写入磁盘并发送到网络中就认为完成了写入操作
B:收到接受确认就认为完成了写入操作
C:收到写入确认就完成了写入操作
目前运用最多的就是C协议


下面就开始安装配置DRBD


1.前提

1)本环境共有两个测试节点,分别ha1.fpj.com和ha2.fpj.com,相的IP地址分别为192.168.3.100和192.168.3.101

2) ha1.fpj.com和ha2.fpj.com两个节点上各提供了一个大小相同的分区作为drbd设备;我们这里为在两个节点上均为/dev/sdb1,大小为10GB;

3) 系统一台为Centos6.3.i686,一台为Centos6.5.i686(先前因安装了)

4)内核分别为2.6.32-279.el6.i686;2.6.32-431.el6.i686

2.准备工作

  配置双方hostname、hosts并建立ssh无密码互通

DRBD的安装与配置_drbd

 2/1.下载软件包

   wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz

   drbd共有两部分组成:内核模块和用户空间的管理工具。

 2/2.安装kernel-devel与kernel-headers最好用本地源安装

3.安装DRBD

我这边用编译安装,两个节点上都需要安装。

tar zxvf drbd-8.4.3.tar.gz

cd drbd-8.4.3

./configure --prefix=/usr/local/drbd --with-km #--!prefix是制定安装路径。--with-km是启用内核模块

make KDIR=/usr/src/kernels/2.6.32-431.el6.i686/ #--!KDIR指的是自己的内核路径

make install

mkdir -p /usr/local/drbd/var/run/drbd  #--!这里需创建这个目录,不然启动服务会报错

cp /usr/local/drbd/etc/rc.d/init.d/drbd  /etc/rc.d/init.d/

chkconfig --add drbd  
chkconfig drbd on

安装DRBD模块

cd drbd
make clean
make KDIR=/usr/src/kernels/2.6.32-431.el6.i686/
cp drbd.ko /lib/modules/2.6.32-431.el6.i686/kernel/lib/
moprobe drbd #加载内核模块
lsmod | grep drbd

drbd                  292339  0

libcrc32c                841  1 drbd

4.配置DRBD

通常/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段。每一个.res的文件用于定义一个资源。resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。

下面,先在ha1主机上配置global_common.conf与定义fpj.res资源,配置定义完以后拷贝到ha2一份。

1.配置global-common.conf

global {
        usage-count no;#是否参加drbd的使用者统计,默认为yes
        # minor-count dialog-refresh disable-ip-verification
}

common {
        protocol C;#使用drbd的同步协议

        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;#配置I/O错误处理策略为分离
                rate 200M;#设置主备节点同步时的网络速率
        }

        net {
                cram-hmac-alg "sha1";
                shared-secret "123456";
        }

}

2.定义一个资源fpj.res,内容如下:
resource fpj {   #fpj是定义资源的名字
   on ha1 {   #on后面是主机名称
   address 192.168.3.100:7789;#设置DRBD的监听端口,用于与另一台主机通信。
   device /dev/drbd0; #drbd设备名称
   disk /dev/sdb1;    #drbd使用的磁盘分区为sdb1
   meta-disk     internal;
   }

  on ha2 {
  address 192.168.3.101:7789;
   device /dev/drbd0;
   disk /dev/sdb1;
   meta-disk    internal;
   }
}

3.在两个节点上初始化已定义完的资源并启动drbd服务

drbdadm create-md fpj:

DRBD的安装与配置_drbd安装_02

再启动drbd服务:

DRBD的安装与配置_配置_03

查看下启动状态:

DRBD的安装与配置_配置_04

从上面的图片中可以看出此时两个节点均处于Secondary状态。我们接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:

drbdadm-- --overwrite-data-of-peer primary fpj也可以用 drbdadmn primary --force fpj

而后再次查看状态,可以发现数据同步过程已经开始:

DRBD的安装与配置_配置_05

等数据同步完,再次查看已经有了主和备:

DRBD的安装与配置_配置_06

4.格式化文件系统;注意:文件系统的挂载只能在Primary节点进行。因此,也只有在设置了主节点后才能对drbd设备进行格式化:

mkfs.ext4 /dev/drbd0
mkdir /mydata  #创建挂载目录
mount /dev/drbd0 /mydata#挂载文件系统
df -h #查看挂载

DRBD的安装与配置_drbd安装_07

写入文件,我这里写入了一个fpj.txt的文件:

DRBD的安装与配置_配置_08

5.切换主备节点

对主Primary/Secondary的drbd服务来讲,在某个时间只能有一个节点为Primary。因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:(注意:这里必须先把ha1上的挂载目录卸载掉)

先将ha1设置为备节点:

drbdadmn secondary fpj

再将ha2设置为主节点:

drbdadmn primary fpj

DRBD的安装与配置_drbd _09

再ha2上创建目录,挂载磁盘,查看下fpj.txt是否存在:成功切换

DRBD的安装与配置_drbd安装_10

至此,DRBD安装配置成功!!