5.模拟心跳down机实验以及恢复
5.1 在目前主机上面建立crontab任务
问题:drbd脑裂问题,当心跳线断掉的时候,两个节点同时可以对外提供服务,通过corosync管理服务机制出现问题,双方都对外提供服务,会导致最终数据产生不一致。
按照上面实验filer01作为主机对外提供服务,在filer01上面添加crontab任务,当检测到自己网卡down掉,或者是心跳线出现问题,在验证属于自己问题后,将集群服务停掉,自动退出集群节点。
[root@filer01 ~]# cat drbd.sh
#!/bin/bash
#env > /root/bbb
/sbin/ifconfig | grepeth1
if [ $? = 0 ]
then
echo " $(date +%F/%H:%M) : eth1 OK"
else
echo "$(date +%F/%H:%M): eth1 down ,stop service" >> /root/fail.txt
pkill corosync
fi
ping -c1192.168.11.223 &> /dev/null
if [ $? = 0 ]
then
echo " $(date +%F/%H:%M) : ping OK"
else
ping -c1 192.168.11.1 &> /dev/null
if [ $? = 0 ]
then
echo "$(date +%F/%H:%M) : ping 11.1OK 223 failed" >> /root/alter.txt
else
echo"$(date +%F/%H:%M): ping failed , stop service " >> /root/fail.txt
pkillcorosync
fi
fi
添加到crontab,时时检测问题。
[root@filer01 ~]#crontab -l
* * * * * sh/root/drbd.sh &
5.2 进行filer01 down机实验
在filer01上面down掉网卡,通过检测到网卡down之后。
[root@filer01 ~]#ifdown eth1
Filer01会自动关闭corosync服务,脱离集群,这个时候通过
https://192.168.10.248:446
查看openfiler时正常对外提供服务的,一直ping 虚拟IP(192.168.10.248)也查看到没有超时的状况,符合我们本来的需求。
当filer01恢复的时候,需要重新添加到集群里面。
以下操作需要在filer01上面执行:
首先设置filer01作为备机出现
[root@filer01 ~]# drbdadm secondary all(在drbd.conf中设置的名称,可以用all)
[root@filer01 ~]# drbdadm disconnect all (备机断掉可以用all)
[root@filer01 ~]# drbdadm ----discard-my-data connect all (同步数据连接上)
现在查看drbd的状态会发现时 diskless/uptodate 解决diskless需要运行下面命令
[root@filer01 ~]#
drbdadmattach all
(解决diskless问题)
[root@filer01 ~]# drbdadm invalidate all(从头重新同步数据,这个持续时间会很长)
通过以上恢复步骤,filer01会重新添加进来,然后记住手动启动起来corosync服务
然后主备的身份完成切换了,如果需要更换回到filer01,需要手动将filer02的网卡down掉按照上述过程重新切换回去即可。