drbd腦裂問題的解決


DRBD產生腦裂的原因:

(1. 采用HA環境的時候自動切換導致腦裂;

(2. 人為操作或配置失誤,導致產生的腦裂;

(3. 經驗有限,慚愧的很,只碰到以上2中產生腦裂的原因。

 

如何判斷腦裂行為?

(1. 其中一個節點的連接狀態始終為 StandAlone

(2. 其中一個節點的連接狀態始終為 WFConnection

 


 

[root@master1 ~]# service drbd status;     #主節點狀態

drbd driver loaded OK; device status:

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2

m:res  cs          ro              ds                p      mounted  fstype

1:data  StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----  ext3     #存在StandAlone

 

[root@master2 ~]# /etc/init.d/drbd status    #從節點狀態

drbd driver loaded OK; device status:

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

m:res  cs          ro                ds                p      mounted  fstype

1:data  StandAlone  Secondary/Unknown  UpToDate/DUnknown  r-----     #存在StandAlone


 

從上邊兩個看出drbd已經發生腦裂,修復步聚如下:

 

——Primary節點

如果Primary節點查看連接狀態為 StandAlone ,需要手動連接 執行命令:drbdadm connect r0

[root@master1 ~]# drbdadm connect data   #手動執行此命令 


注意:上邊的data是在/etc/drbd.conf中定義的resource的名稱

[root@master2 ~]# cat /etc/drbd.conf  | grep resource

resource data {   #這就是資源名


[root@master1 ~]# cat /proc/drbd    #查看執行后的drbd狀態

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

ns:0 nr:0 dw:703 dr:15894 al:23 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:592

——Secondary節點操作

1. 斷開連接

[root@master2 ~]# drbdadm disconnect data

2.設置為secondary狀態

[root@master2 ~]# drbdadm secondary data

3. 告訴slave,secondary 上的數據不正確,以primary 上的數據為准

[root@master2 ~]# drbdadm -- --discard-my-data connect data  #注意中間的四個中間線

 


 

——查看結果

   master結果

[root@master1 ~]# cat /proc/drbd

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

ns:0 nr:0 dw:703 dr:15894 al:23 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:592

    從節點結果

[root@master2 ~]# cat /proc/drbd

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

ns:0 nr:616 dw:210519 dr:8443 al:22 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

 

通過上述發現,drbd的腦裂問題已經解決。



五. drbd的相關問題處理

1. 腦裂之后的手工處理

(1)首先在確定要作為secondary的節點上面切換成secondary並放棄該資源的數據:

drbdadm disconnect resource_name/all

drbdadm secondary resource_name/all

drbdadm -- --discard-my-data connect resource_name/all

(2)在要作為primary的節點重新連接secondary(如果這個節點當前的連接狀態為WFConnection的話,可以省略)

drbdadm connect resource_name/all

 

2.主從都StandAlone的情況

重啟服務仍然無法鏈接成功,可以在兩端分別執行:

drbdadm disconnect resource_name/all

drbdadm connect resource_name/all

 

六. drbd相關命令的使用

1. drbdsetup

drbsetup是drbd 程序套件中的底層配置工具。您可以使用該工具把低層模塊設備和drbd 設備聯系起來、安裝drbd設備對,以便鏡像它們的低層模塊設備和檢查運行drbd 設備的配置。

如:

在節點node2上,您可以發出以下命令

[root@node2 ~]# insmod drbd.o

[root@node2 ~]# drbdsetup /dev/drbd0 disk /dev/vg01/lv01

[root@node2 ~]# drbdsetup /dev/drbd0 net 10.160.100.33 10.160.100.32 B   #B:同步協議

 

在節點node3上,您可以發出以下命令:

[root@node2 ~]# insmod drbd.o

[root@node2 ~]# drbdsetup /dev/drbd0 disk /dev/vg01/lv01

[root@node2 ~]# drbdsetup /dev/drbd0 net 10.160.100.32 10.160.100.33 B

[root@node2 ~]# drbdsetup /dev/drbd0  primary

此時,您就可以像在其他設備一樣使用/dev/drbd0 了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM