1、DRBD开机自自动(chkconfig --add drbd),需要注意一下wait time out选项:
wfc-timeout 120; 如果为0的话,它会无限的等待下去;
在配置高可用如keepalived时候,要注意 先保证drbd数据的一致性;然后在启动keepalived
小插曲:
在linux 自起中,先运行 /etc/rc.d/rc#. d 里面设定的脚本,最后是/etc/rc.local ,如果同样是在某运行级别下的脚本,根据S后面的数字,数字越小优先级越高,所以drbd的数字要比keepalived的小一些;
2、磁盘IO故障
推荐配置为 detach 策略;这个时候主从角色状态没有改变,磁盘状态变为diskless(这个需要监控);
模拟实验:
drbd-primary:
drbdadm detach all;
此时磁盘还处于挂接状态;为了正常切换角色,执行以下命令:
drbdadm secondary all;
umount /dev/drbd0;
在drbd-secondary 上执行:
drbdadm primary all;
mount /dev/drbd0 /data
3、更换磁盘
如果secondary节点出现磁盘故障需要换硬盘:
注意:新添加的硬盘的磁盘名如果被占用,需要修改配置文件!
进行的操作:
drbdadm create-md all
service drbd start
drbdadm attach all
drbdadm secondary all
以上情况 属于内部元数据, 下面可以看看使用外部元数据更换硬盘;
除以上操作外,还有进行 drbdadm invalidate all
即进行以下操作:
drbdadm create-md all
drbdadm attach all
drbdadm invalidate all
drbdadm secondary all
4、处理节点故障:
当primary node 出现故障后,Drbd并不升级存活的节点到主,需要集群管理程序重要做。
切换完毕后需要做 的事情:
1)将出现故障的硬件替换为与之类似性能和容量的磁盘。(性能最好一致;替换为磁盘容量比较小,会导致drbd拒绝连接被替换的节点。)
2)安装基本系统和应用程序。
3)安装drbd并从幸存的节点上拷贝/etc/drbd.conf和所有的/etc/drbd.d
4)drbdadm create-md resource (创建元数据设备)
5)service drbd start
6)drbdadm attach resource (将drbd资源和后端设备连接 )
7)drbdadm syncer resource (设置drbd资源的同步参数)
8)drbdadm connect resource (连接对等节点)
Look:千万不要初始化设备,
5、脑裂问题处理
DRBD检测到primary 恢复连接并变成可用,和对等节点达成初步的握手。如果drbd检测到两个节点(也可能是两个节点断开时)都是主角色,它就连接关闭复制的连接。可以在系统日 志中发现:Split-Brain detected, dropping connection!
一个节点将保持始终以StandAlone状态连接资源,另外一个节点也可能处于StandAlone状态(如果两个节点被探测到同时处于裂脑状态),也可能是WFConnection状态(如果对等接在 还没有来得及探测到裂脑就down掉的话)。
必须手工干预选择丢失一个节点的修改被丢失(这个节点被称为裂脑受害者),除非配置drbd的裂脑自动修复。
(在出现脑裂的情况下,service drbd stop 是不会生效的,返回会hang住,一直处于等待状态)
在需要放弃修改的那一端做如下操作:
drbdadm secondary <resource>
drbdadm -- --discard-my-data connect <resource>
在其他节点上(裂脑幸存者),如果它的状态也为StandAlone状态,可输入以下命令:
drbdadm connect <resource>
如果节点已经处于WFConnection状态,可是省略这一步,因为它会自动进行重新连接。
当连接时裂脑受害者将立即改变连接状态为SyncTarget,并被主节点覆盖其余节点的修改。
Look:裂脑受害者不是一个完整的设备同步,相反,还有可能执行本地修改的回滚操作,而将裂脑幸存者的所做的修改完整的传输到裂脑受害者。当重新完成同步后,就认为裂脑问题已经解决,两个节点的数据再次达成一致,形成一个冗余复 制的存储系统。
相关阅读:
CentOS 6.3下DRBD安装配置笔记