腳本解決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掉按照上述過程從新切換回去便可。

相關文章
相關標籤/搜索