当前位置: 首页IT技术 → drbd脑裂问题解决方法

drbd脑裂问题解决方法

更多

drbd脑裂问题怎么解决?下面小编跟大家分享下用脚本解决drbd脑裂问题,希望能帮上朋友们吧!

1、 在目前主机上面建立crontab任务

问题:drbd脑裂问题,当心跳线断掉的时候,两个节点同时可以对外提供服务,通过corosync管理服务机制出现问题,双方都对外提供服务,会导致最终数据产生不一致。

按照上面实验filer01作为主机对外提供服务,在filer01上面添加crontab任务,当检测到自己网卡down掉,或者是心跳线出现问题,在验证属于自己问题后,将集群服务停掉,自动退出集群节点。

[root@filer01 ~]# cat drbd.sh

#!/bin/bash

#env > /root/bbb

/sbin/ifconfig | grep eth1

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 -c1 192.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.1 OK 223 failed" >> /root/alter.txt

else

echo "$(date +%F/%H:%M): ping failed , stop service " >> /root/fail.txt

pkill corosync

fi

fi

添加到crontab,时时检测问题。

[root@filer01 ~]# crontab -l

* * * * * sh /root/drbd.sh &

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 ~]#  drbdadm attach all (解决diskless问题)

[root@filer01 ~]# drbdadm invalidate all(从头重新同步数据,这个持续时间会很长)

通过以上恢复步骤,filer01会重新添加进来,然后记住手动启动起来corosync服务。

然后主备的身份完成切换了,如果需要更换回到filer01,需要手动将filer02的网卡down掉按照上述过程重新切换回去即可。

好了,通过以上方法就可以解决drbd脑裂问题了。

热门评论
最新评论
昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)