转载自:http://www.dearda.com/index.php/archives/2020

另有配置档说明好文:https://blog.51cto.com/aaronsa/2130434

CentOS7.6中drbd-9.0.17安装配置和验证 da2019年04月16日 两台机器的操作系统:CentOS 7.6,uname -r:3.10.0-957.el7.x86_64

到drbd官网下载文件: drbd-9.0.17-1.tar.gz drbd-utils-9.8.0.tar.gz

两台机器增加hosts记录并确定已生效 192.168.1.108 centos1 192.168.1.109 centos2

1、安装drbd模块 安装kernel相关组件,yum install kernel-*,包括kernel-devel,kernel-headers,kernel-tools等, 注意安装的kernel-devel的版本要与uname -r的版本一致,关系到后面的安装,否则会出现报错“Module drbd not found”。 完成后有新增目录/usr/src/kernels/3.10.0-957.el7.x86_64

安装drbd内核模块,直接make安装 tar xzf drbd-9.0.17-1.tar.gz cd drbd-9.0.17-1 make KDIR=/usr/src/kernels/3.10.0-957.el7.x86_64/ make install

完成安装后新增如下文件 ll /lib/modules/3.10.0-957.el7.x86_64/updates/ total 13832 -rw-r–r– 1 root root 13496680 Apr 16 19:31 drbd.ko -rw-r–r– 1 root root 662264 Apr 16 19:31 drbd_transport_tcp.ko

加载drbd模块并确认生效 modprobe drbd lsmod|grep drbd drbd 554407 0 libcrc32c 12644 4 xfs,drbd,nf_nat,nf_conntrack

2、安装drbd-utils yum install -y flex po4a libxslt docbook* tar xzf drbd-utils-9.8.0.tar.gz cd drbd-utils-9.8.0 ./configure –prefix=/usr/local/drbd-utils-9.8.0 –without-83support –without-84support make&&make install

进入drbd-utils安装文件的目录复制drbd-overview.pl这个脚本到系统目录 cd drbd-9.0.17-1/scripts cp -p drbd-overview.pl /usr/sbin/ chmod +x /usr/sbin/drbd-overview.pl

3、修改drbd配置

两台机器新增硬盘sdb,通过fdisk分区为sdb1

共三个配置文件 /usr/local/drbd-utils-9.8.0/etc/drbd.conf 保持默认 /usr/local/drbd-utils-9.8.0/etc/drbd.d/global_common.conf 保持默认 新建配置 vim /usr/local/drbd-utils-9.8.0/etc/drbd.d/r000.res 内容如下:

resource r000 { on centos1 { device /dev/drbd1; disk /dev/sdb1; address 192.168.1.108:8888; meta-disk internal; } on centos2 { device /dev/drbd1; disk /dev/sdb1; address 192.168.1.109:8888; meta-disk internal; } }

新建资源 drbdadm create-md r000 drbdadm up r000

查看节点的角色,当前两台均为备机 [root@centos1 block]# drbdadm role r000 Secondary [root@centos2 drbd-utils-9.8.0]# drbdadm role r000 Secondary

将主节点设置primary drbdadm primary –force r000

查看drbd状态执行drbd-overview 主节点显示如下: [root@centos1 ~]# drbd-overview.pl NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.

1:r000/0 Connected(2*) Primar/Second UpToDa/UpToDa

从节点显示如下: [root@centos2 scripts]# drbd-overview.pl NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.

1:r000/0 Connected(2*) Second/Primar UpToDa/UpToDa

4、验证drbd主从同步

上一步设置了/dev/drbd1此设备为同步,则将此设备当成一块硬盘用于操作即可。

主节点执行格式化、挂载、写文件: mkfs.ext4 /dev/drbd1 mkdir /mnt/drbd_dir mount /dev/drbd1 /mnt/drbd_dir dd if=/dev/zero of=/mnt/drbd_dir/100M.file bs=1M count=100 touch test{1,2,3,4,5}

查看drbd状态,显示已使用120M [root@centos1 ~]# drbd-overview.pl NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.

1:r000/0 Connected(2*) Primar/Second UpToDa/UpToDa /mnt/drbd_dir ext4 4.8G 120M 4.5G 3%

查看共享目录下的文件: [root@centos1 ~]# ll /mnt/drbd_dir total 102416 -rw-r–r– 1 root root 104857600 Apr 16 23:19 100M.file drwx—— 2 root root 16384 Apr 16 23:19 lost+found -rw-r–r– 1 root root 0 Apr 16 23:25 test1 -rw-r–r– 1 root root 0 Apr 16 23:25 test2 -rw-r–r– 1 root root 0 Apr 16 23:25 test3 -rw-r–r– 1 root root 0 Apr 16 23:25 test4 -rw-r–r– 1 root root 0 Apr 16 23:25 test5

验证从节点是否有复制到文件:

主节点卸载硬盘并降级: umount /dev/drbd1 drbdadm secondary r000

从节点升级为primary并挂载文件系统 drbdadm primary r000 mkdir /mnt/drbd_dir mount /dev/drbd1 /mnt/drbd_dir

文件与主节点看到的一致 ll /mnt/drbd_dir [root@centos2 scripts]# ll /mnt/drbd_dir total 102416 -rw-r–r– 1 root root 104857600 Apr 16 23:19 100M.file drwx—— 2 root root 16384 Apr 16 23:19 lost+found -rw-r–r– 1 root root 0 Apr 16 23:25 test1 -rw-r–r– 1 root root 0 Apr 16 23:25 test2 -rw-r–r– 1 root root 0 Apr 16 23:25 test3 -rw-r–r– 1 root root 0 Apr 16 23:25 test4 -rw-r–r– 1 root root 0 Apr 16 23:25 test5

下面是一个配置双主模型的例子。结合PACEMAKER,COROSYNC,RESOURCE-AGENT,配置OCFS,DLM可以实现双活DRBD资源

resource mydrbd {
 
        net {
                protocol C;
                allow-two-primaries yes;
        }
 
        startup {
                become-primary-on both;
        }
 
        disk {
                fencing resource-and-stonith;
        }
 
        handlers {
                # Make sure the other node is confirmed
                # dead after this!
                outdate-peer "/sbin/kill-other-node.sh";
        }
 
        on node1 {
                device  /dev/drbd0;
                disk    /dev/vg0/mydrbd;
                address 172.16.200.11:7789;
                meta-disk       internal;
        }
 
        on node2 {
                device  /dev/drbd0;
                disk    /dev/vg0/mydrbd;
                address 172.16.200.12:7789;
                meta-disk       internal;
        }
}