脚本解决drbd脑裂问题

5.模拟心跳down机实验以及恢复 bash

5.1 在目前主机上面创建crontab任务 less

问题:drbd脑裂问题,小心跳线断掉的时候,两个节点同时能够对外提供服务,经过corosync管理服务机制出现问题,双方都对外提供服务,会致使最终数据产生不一致。
按照上面实验filer01做为主机对外提供服务,在filer01上面添加crontab任务,当检测到本身网卡down掉,或者是心跳线出现问题,在验证属于本身问题后,将集群服务停掉,自动退出集群节点。

[root@filer01 ~]# cat drbd.sh ide

#!/bin/bash spa

#env > /root/bbb crontab

/sbin/ifconfig | grepeth1 get

if [ $? = 0 ] 同步

then it

 echo " $(date +%F/%H:%M) : eth1 OK" io

else class

 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服务,脱离集群,这个时候经过
查看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掉按照上述过程从新切换回去便可。

相关文章
相关标签/搜索