文档参考:https://ubuntu.com/server/docs/distributed-replicated-block-device-drbd
#主从节点安装drbd
apt install drbd-utils
#编辑主从节点配置文件
vi /etc/drbd.d/global_common.conf
global { usage-count no; }
common { syncer { rate 100M; } }
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "secret";
}
on node1 {
device /dev/drbd0;
disk /dev/sdd;
address 192.168.1.10:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdd;
address 192.168.1.11:7788;
meta-disk internal;
}
}
#在主从节点上分别初始化元数据
drbdadm create-md r0
#在主从节点上启动drbd服务
systemctl start drbd.service
#在主节点上执行如下命令
drbdadm -- --overwrite-data-of-peer primary all
#监控drbd同步状态
watch -n1 cat /proc/drbd
#在drbd0上创建文件系统
mkfs.ext3 /dev/drbd0
#挂载文件系统
mount /dev/drbd0 /srv
#此时应用可以将/srv目录作为普通数据盘使用,当主节点(primary)连接丢失时,
#从节点(secondary)会自动变为primary节点,在keepalived脚本中添加挂载/dev/drbd0
#命令及重启使用/srv/目录的相应服务,可以实现主从切换
#脑裂恢复
#查看挂载状态,卸载drbd0
mount | grep /dev/drbd0
umount /dev/drbd0 #如果报错可以尝试:umount -l /dev/drbd0
#降级为secondary,由于脑裂时有两个primary,选择不需要保留数据的节点执行如下命令
drbdadm secondary r0
drbdadm -- --discard-my-data connect r0
#恢复连接
drbdadm connect r0
cat /proc/drbd
#集群状态变为Connected则说明集群已经恢复到正常状态