1、DRBD簡介node
DRBD的全稱爲:Distributed ReplicatedBlock Device(DRBD)分佈式塊設備複製,DRBD是由內核模塊和相關腳本而構成,用以構建高可用性的集羣。其實現方式是經過網絡來鏡像整個設備。你能夠把它看做是一種網絡RAID。它容許用戶在遠程機器上創建一個本地塊設備的實時鏡像。linux
2、DRBD是如何工做的呢?算法
(DRBD Primary)負責接收數據,把數據寫到本地磁盤併發送給另外一臺主機(DRBD Secondary)。另外一個主機再將數據存到本身的磁盤中。目前,DRBD每次只容許對一個節點進行讀寫訪問,但這對於一般的故障切換高可用集羣來講已經足夠用了。有可能之後的版本支持兩個節點進行讀寫存取。vim
3、DRBD與HA的關係api
一個DRBD系統由兩個節點構成,與HA集羣相似,也有主節點和備用節點之分,在帶有主要設備的節點上,應用程序和操做系統能夠運行和訪問DRBD設備(/dev/drbd*)。在主節點寫入的數據經過DRBD設備存儲到主節點的磁盤設備中,同時,這個數據也會自動發送到備用節點對應的DRBD設備,最終寫入備用節點的磁盤設備上,在備用節點上,DRBD只是將數據從DRBD設備寫入到備用節點的磁盤中。如今大部分的高可用性集羣都會使用共享存儲,而DRBD也能夠做爲一個共享存儲設備,使用DRBD不須要太多的硬件的投資。由於它在TCP/IP網絡中運行,因此,利用DRBD做爲共享存儲設備,要節約不少成本,由於價格要比專用的存儲網絡便宜不少;其性能與穩定性方面也不錯bash
4、DRBD複製模式服務器
協議A:網絡
異步複製協議。一旦本地磁盤寫入已經完成,數據包已在發送隊列中,則寫被認爲是完成的。在一個節點發生故障時,可能發生數據丟失,由於被寫入到遠程節點上的數據可能仍在發送隊列。儘管,在故障轉移節點上的數據是一致的,但沒有及時更新。這一般是用於地理上分開的節點併發
協議B:app
內存同步(半同步)複製協議。一旦本地磁盤寫入已完成且複製數據包達到了對等節點則認爲寫在主節點上被認爲是完成的。數據丟失可能發生在參加的兩個節點同時故障的狀況下,由於在傳輸中的數據可能不會被提交到磁盤
協議C:
同步複製協議。只有在本地和遠程節點的磁盤已經確認了寫操做完成,寫才被認爲完成。沒有任何數據丟失,因此這是一個羣集節點的流行模式,但I / O吞吐量依賴於網絡帶寬
通常使用協議C,但選擇C協議將影響流量,從而影響網絡時延。爲了數據可靠性,咱們在生產環境使用時須慎重選項使用哪種協議
4、 DRBD工做原理圖
DRBD是linux的內核的存儲層中的一個分佈式存儲系統,可用使用DRBD在兩臺Linux服務器之間共享塊設備,共享文件系統和數據。相似於一個網絡RAID-1的功能,如圖所示:
5、環境介紹及安裝前準備
環境介紹:
系統版本:CentOS 6.4_x86_64
DRBD軟件:drbd-8.4.3-33.el6.x86_64 drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64 下載地址:http://rpmfind.net
注意:這裏兩個軟件的版本必須使用一致,而drbd-kmdl的版本要與當前系統的版本相對應,固然在實際應用中須要根據本身的系統平臺下載符合須要的軟件版本;查看系統版本 "uname -r"
安裝前準備:
一、每一個節點的主機名稱須跟"uname -n"命令的執行結果同樣
######NOD1節點執行 sed -i 's@\(HOSTNAME=\).*@\1nod1.allen.com@g' /etc/sysconfig/network hostname nod1.allen.com ######NOD2節點執行 sed -i 's@\(HOSTNAME=\).*@\1nod2.allen.com@g' /etc/sysconfig/network hostname nod2.allen.com 註釋:修改文件須重啓系統生效,這裏先修改文件而後執行命令修改主機名稱能夠不用重啓
二、兩個節點的主機名稱和對應的IP地址能夠正常解析
######在NOD1與NOD2節點執行 cat > /etc/hosts << EOF 192.168.137.225 nod1.allen.com nod1 192.168.137.222 nod2.allen.com nod2 EOF
三、配置epel的yum源 點此下載並安裝
######在NOD1與NOD2節點安裝 rpm -ivh epel-release-6-8.noarch.rpm
四、須要爲兩個節點分別提供大小相同的分區
######在NOD1節點上建立分區,分區大小必須與NOD2節點保持同樣 [root@nod1 ~]# fdisk /dev/sda Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (7859-15665, default 7859): Using default value 7859 Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +2G Command (m for help): w [root@nod1 ~]# partx /dev/sda #讓內核從新讀取分區 ######查看內核有沒有識別分區,若是沒有須要從新啓動,這裏沒有識別須要重啓系統 [root@nod1 ~]# cat /proc/partitions major minor #blocks name 8 0 125829120 sda 8 1 204800 sda1 8 2 62914560 sda2 253 0 20971520 dm-0 253 1 2097152 dm-1 253 2 10485760 dm-2 253 3 20971520 dm-3 [root@nod1 ~]# reboot
######在NOD2節點上建立分區,分區大小必須與NOD1節點保持同樣 [root@nod2 ~]# fdisk /dev/sda Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (7859-15665, default 7859): Using default value 7859 Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +2G Command (m for help): w [root@nod2 ~]# partx /dev/sda #讓內核從新讀取分區 ######查看內核有沒有識別分區,若是沒有須要從新啓動,這裏沒有識別須要重啓系統 [root@nod2 ~]# cat /proc/partitions major minor #blocks name 8 0 125829120 sda 8 1 204800 sda1 8 2 62914560 sda2 253 0 20971520 dm-0 253 1 2097152 dm-1 253 2 10485760 dm-2 253 3 20971520 dm-3 [root@nod2 ~]# reboot
6、安裝並配置DRBD
一、在NOD1與NOD2節點上安裝DRBD軟件包
######NOD1 [root@nod1 ~]# ls drbd-* drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm [root@nod1 ~]# yum -y install drbd-*.rpm ######NOD2 [root@nod2 ~]# ls drbd-* drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm [root@nod2 ~]# yum -y install drbd-*.rpm
二、查看DRBD配置文件
ll /etc/drbd.conf;ll /etc/drbd.d/ -rw-r--r-- 1 root root 133 May 14 21:12 /etc/drbd.conf #主配置文件 total 4 -rw-r--r-- 1 root root 1836 May 14 21:12 global_common.conf #全局配置文件 ######查看主配置文件內容 cat /etc/drbd.conf ######主配置文件中包含了全局配置文件及"drbd.d/"目錄下以.res結尾的文件 # You can find an example in /usr/share/doc/drbd.../drbd.conf.example include "drbd.d/global_common.conf"; include "drbd.d/*.res";
三、修改配置文件以下:
[root@nod1 ~]#vim /etc/drbd.d/global_common.conf global { usage-count no; #是否參加DRBD使用統計,默認爲yes # minor-count dialog-refresh disable-ip-verification } common { protocol C; #使用DRBD的同步協議 handlers { # These are EXAMPLE handlers only. # They may have severe implications, # like hard resetting the node under certain circumstances. # Be careful when chosing your poison. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; } startup { # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb } options { # cpu-mask on-no-data-accessible } disk { on-io-error detach; #配置I/O錯誤處理策略爲分離 # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes # disk-drain md-flushes resync-rate resync-after al-extents # c-plan-ahead c-delay-target c-fill-target c-max-rate # c-min-rate disk-timeout } net { cram-hmac-alg "sha1"; #設置加密算法 shared-secret "allendrbd"; #設置加密密鑰 # protocol timeout max-epoch-size max-buffers unplug-watermark # connect-int ping-int sndbuf-size rcvbuf-size ko-count # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri # after-sb-1pri after-sb-2pri always-asbp rr-conflict # ping-timeout data-integrity-alg tcp-cork on-congestion # congestion-fill congestion-extents csums-alg verify-alg # use-rle } syncer { rate 1024M; #設置主備節點同步時的網絡速率 } }
註釋: on-io-error <strategy>策略可能爲如下選項之一
detach 分離:這是默認和推薦的選項,若是在節點上發生底層的硬盤I/O錯誤,它會將設備運行在Diskless無盤模式下
pass_on:DRBD會將I/O錯誤報告到上層,在主節點上,它會將其報告給掛載的文件系統,可是在此節點上就每每忽略(所以此節點上沒有能夠報告的上層)
-local-in-error:調用本地磁盤I/O處理程序定義的命令;這須要有相應的local-io-error調用的資源處理程序處理錯誤的命令;這就給管理員有足夠自由的權力命令命令或是腳本調用local-io-error處理I/O錯誤
四、添加資源文件:
[root@nod1 ~]# vim /etc/drbd.d/drbd.res resource drbd { on nod1.allen.com { #第個主機說明以on開頭,後面是主機名稱 device /dev/drbd0;#DRBD設備名稱 disk /dev/sda3; #drbd0使用的磁盤分區爲"sda3" address 192.168.137.225:7789; #設置DRBD監聽地址與端口 meta-disk internal; } on nod2.allen.com { device /dev/drbd0; disk /dev/sda3; address 192.168.137.222:7789; meta-disk internal; } }
五、將配置文件爲NOD2提供一份
[root@nod1 ~]# scp /etc/drbd.d/{global_common.conf,drbd.res} nod2:/etc/drbd.d/ The authenticity of host 'nod2 (192.168.137.222)' can't be established. RSA key fingerprint is 29:d3:28:85:20:a1:1f:2a:11:e5:88:cd:25:d0:95:c7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'nod2' (RSA) to the list of known hosts. root@nod2's password: global_common.conf 100% 1943 1.9KB/s 00:00 drbd.res 100% 318 0.3KB/s 00:00
六、初始化資源並啓動服務
######在NOD1節點上初始化資源並啓動服務 [root@nod1 ~]# drbdadm create-md drbd Writing meta data... initializing activity log NOT initializing bitmap lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory New drbd meta data block successfully created. #提示已經建立成功 lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory ######啓動服務 [root@nod1 ~]# service drbd start Starting DRBD resources: [ create res: drbd prepare disk: drbd adjust disk: drbd adjust net: drbd ] .......... *************************************************************** DRBD's startup script waits for the peer node(s) to appear. - In case this node was already a degraded cluster before the reboot the timeout is 0 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 0 seconds. [wfc-timeout] (These values are for resource 'drbd'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 12]: yes ######查看監聽端口 [root@nod1 ~]# ss -tanl |grep 7789 LISTEN 0 5 192.168.137.225:7789 *:*
######在NOD2節點上初始化資源並啓動服務 [root@nod2 ~]# drbdadm create-md drbd Writing meta data... initializing activity log NOT initializing bitmap lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory New drbd meta data block successfully created. lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory ######啓動服務 [root@nod2 ~]# service drbd start Starting DRBD resources: [ create res: drbd prepare disk: drbd adjust disk: drbd adjust net: drbd ] ######查看監聽地址與端口 [root@nod2 ~]# netstat -anput|grep 7789 tcp 0 0 192.168.137.222:42345 192.168.137.225:7789 ESTABLISHED - tcp 0 0 192.168.137.222:7789 192.168.137.225:42325 ESTABLISHED - ######查看DRBD啓動狀態 [root@nod2 ~]# drbd-overview 0:drbd/0 Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
七、資源的鏈接狀態詳細介紹
7.一、如何查看資源鏈接狀態?
[root@nod1 ~]# drbdadm cstate drbd #drbd爲資源名稱 Connected
7.二、資源的鏈接狀態;一個資源可能有如下鏈接狀態中的一種
StandAlone 獨立的:網絡配置不可用;資源尚未被鏈接或是被管理斷開(使用 drbdadm disconnect 命令),或是因爲出現認證失敗或是腦裂的狀況
Disconnecting 斷開:斷開只是臨時狀態,下一個狀態是StandAlone獨立的
Unconnected 懸空:是嘗試鏈接前的臨時狀態,可能下一個狀態爲WFconnection和WFReportParams
Timeout 超時:與對等節點鏈接超時,也是臨時狀態,下一個狀態爲Unconected懸空
BrokerPipe:與對等節點鏈接丟失,也是臨時狀態,下一個狀態爲Unconected懸空
NetworkFailure:與對等節點推進鏈接後的臨時狀態,下一個狀態爲Unconected懸空
ProtocolError:與對等節點推進鏈接後的臨時狀態,下一個狀態爲Unconected懸空
TearDown 拆解:臨時狀態,對等節點關閉,下一個狀態爲Unconected懸空
WFConnection:等待和對等節點創建網絡鏈接
WFReportParams:已經創建TCP鏈接,本節點等待從對等節點傳來的第一個網絡包
Connected 鏈接:DRBD已經創建鏈接,數據鏡像如今可用,節點處於正常狀態
StartingSyncS:徹底同步,有管理員發起的剛剛開始同步,將來可能的狀態爲SyncSource或PausedSyncS
StartingSyncT:徹底同步,有管理員發起的剛剛開始同步,下一狀態爲WFSyncUUID
WFBitMapS:部分同步剛剛開始,下一步可能的狀態爲SyncSource或PausedSyncS
WFBitMapT:部分同步剛剛開始,下一步可能的狀態爲WFSyncUUID
WFSyncUUID:同步即將開始,下一步可能的狀態爲SyncTarget或PausedSyncT
SyncSource:以本節點爲同步源的同步正在進行
SyncTarget:以本節點爲同步目標的同步正在進行
PausedSyncS:以本地節點是一個持續同步的源,可是目前同步已經暫停,多是由於另一個同步正在進行或是使用命令(drbdadm pause-sync)暫停了同步
PausedSyncT:以本地節點爲持續同步的目標,可是目前同步已經暫停,這能夠是由於另一個同步正在進行或是使用命令(drbdadm pause-sync)暫停了同步
VerifyS:以本地節點爲驗證源的線上設備驗證正在執行
VerifyT:以本地節點爲驗證目標的線上設備驗證正在執行
7.三、資源角色
查看資源角色命令
[root@nod1 ~]# drbdadm role drbd Secondary/Secondary [root@nod1 ~]# cat /proc/drbd version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2103412 註釋: Parimary 主:資源目前爲主,而且可能正在被讀取或寫入,若是不是雙主只會出如今兩個節點中的其中一個節點上 Secondary 次:資源目前爲次,正常接收對等節點的更新 Unknown 未知:資源角色目前未知,本地的資源不會出現這種狀態
7.四、硬盤狀態
查看硬盤狀態命令
[root@nod1 ~]# drbdadm dstate drbd Inconsistent/Inconsistent
本地和對等節點的硬盤有可能爲下列狀態之一:
Diskless 無盤:本地沒有塊設備分配給DRBD使用,這表示沒有可用的設備,或者使用drbdadm命令手工分離或是底層的I/O錯誤致使自動分離
Attaching:讀取無數據時候的瞬間狀態
Failed 失敗:本地塊設備報告I/O錯誤的下一個狀態,其下一個狀態爲Diskless無盤
Negotiating:在已經鏈接的DRBD設置進行Attach讀取無數據前的瞬間狀態
Inconsistent:數據是不一致的,在兩個節點上(初始的徹底同步前)這種狀態出現後當即建立一個新的資源。此外,在同步期間(同步目標)在一個節點上出現這種狀態
Outdated:數據資源是一致的,可是已通過時
DUnknown:當對等節點網絡鏈接不可用時出現這種狀態
Consistent:一個沒有鏈接的節點數據一致,當創建鏈接時,它決定數據是UpToDate或是Outdated
UpToDate:一致的最新的數據狀態,這個狀態爲正常狀態
7.五、啓用和禁用資源
######手動啓用資源 drbdadm up <resource> ######手動禁用資源 drbdadm down <resource> 註釋: resource:爲資源名稱;固然也可使用all表示[停用|啓用]全部資源
7.六、升級和降級資源
######升級資源 drbdadm primary <resource> ######降級資源 drbdadm secondary <resource> 註釋:在單主模式下的DRBD,兩個節點同時處於鏈接狀態,任何一個節點均可以在特定的時間內變成主;但兩個節點中只能一爲主,若是已經有一個主,需先降級纔可能升級;在雙主模式下沒有這個限制
八、初始化設備同步
8.一、選擇一個初始同步源;若是是新初始化的或是空盤,這個選擇能夠是任意的,可是若是其中的一個節點已經在使用幷包含有用的數據,那麼選擇同步源是相當重要的;若是選錯了初始化同步方向,就會形成數據丟失,所以須要十分當心
8.二、啓動初始化徹底同步,這一步只能在初始化資源配置的一個節點上進行,並做爲同步源選擇的節點上;命令以下:
[root@nod1 ~]# drbdadm -- --overwrite-data-of-peer primary drbd [root@nod1 ~]# cat /proc/drbd #查看同步進度 version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n- ns:1897624 nr:0 dw:0 dr:1901216 al:0 bm:115 lo:0 pe:3 ua:3 ap:0 ep:1 wo:f oos:207988 [=================>..] sync'ed: 90.3% (207988/2103412)K finish: 0:00:07 speed: 26,792 (27,076) K/sec ######當同步完成時如如下狀態 version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:2103412 nr:0 dw:0 dr:2104084 al:0 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 註釋: drbd:爲資源名稱 ######查看同步進度也可以使用如下命令 drbd-overview
九、建立文件系統
9.一、文件系統只能掛載在主(Primary)節點上,所以在設置好主節點後才能夠對DRBD設備進行格式化操做
######格式化文件系統 [root@nod1 ~]# mkfs.ext4 /dev/drbd0 ######掛載文件系統 [root@nod1 ~]# mount /dev/drbd0 /mnt/ ######查看掛載 [root@nod1 ~]# mount |grep drbd0 /dev/drbd0 on /mnt type ext4 (rw) 註釋: "/dev/drbd0"爲資源中定義已定義的資源名稱 ######查看DRBD狀態 [root@nod1 ~]# drbd-overview 0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r----- 註釋: Primary:當前節點爲主;在前面爲當前節點 Secondary:備用節點爲次
9.二、在掛載目錄中建立一個測試文件並卸載;而後
[root@nod1 ~]# mkdir /mnt/test [root@nod1 ~]# ls /mnt/ lost+found test ######在切換主節點時必須保證資源不在使用 [root@nod1 ~]# umount /mnt/
9.三、切換主備節點
######先把當前主節點降級爲次 [root@nod1 ~]# drbdadm secondary drbd ######查看DRBD狀態 [root@nod1 ~]# drbd-overview 0:drbd/0 Connected Secondary/Secondary UpToDate/UpToDate C r----- ######在NOD2節點升級 [root@nod2 ~]# drbdadm primary drbd ######查看DRBD狀態 [root@nod2 ~]# drbd-overview 0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r-----
9.四、掛載設備並驗證文件是否存在
[root@nod2 ~]# mount /dev/drbd0 /mnt/ [root@nod2 ~]# ls /mnt/ lost+found test
7、DRBD腦裂的模擬及修復
註釋:咱們還接着上面的實驗繼續進行,如今NOD2爲主節點而NOD1爲備節點
一、斷開主(parmary)節點;關機、斷開網絡或從新配置其餘的IP均可以;這裏選擇的是斷開網絡
二、查看兩節點狀態
[root@nod2 ~]# drbd-overview 0:drbd/0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4% [root@nod1 ~]# drbd-overview 0:drbd/0 StandAlone Secondary/Unknown UpToDate/DUnknown r----- ######由上能夠看到兩個節點已經沒法通訊;NOD2爲主節點,NOD1爲備節點
三、將NOD1節點升級爲主(primary)節點並掛載資源
[root@nod1 ~]# drbdadm primary drbd [root@nod1 ~]# drbd-overview 0:drbd/0 StandAlone Primary/Unknown UpToDate/DUnknown r----- [root@nod1 ~]# mount /dev/drbd0 /mnt/ [root@nod1 ~]# mount | grep drbd0 /dev/drbd0 on /mnt type ext4 (rw)
四、假如原來的主(primary)節點修復好從新上線了,這時出現了腦裂狀況
[root@nod2 ~]# tail -f /var/log/messages Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_a_drbd Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0 exit code 0 (0x0) Sep 19 01:56:06 nod2 kernel: block drbd0: Split-Brain detected but unresolved, dropping connection! Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0 Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0 exit code 0 (0x0) Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( NetworkFailure -> Disconnecting ) Sep 19 01:56:06 nod2 kernel: d-con drbd: error receiving ReportState, e: -5 l: 0! Sep 19 01:56:06 nod2 kernel: d-con drbd: Connection closed Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( Disconnecting -> StandAlone ) Sep 19 01:56:06 nod2 kernel: d-con drbd: receiver terminated Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_r_drbd Sep 19 01:56:18 nod2 kernel: block drbd0: role( Primary -> Secondary )
五、再次查看兩節點的狀態
[root@nod1 ~]# drbdadm role drbd Primary/Unknown [root@nod2 ~]# drbdadm role drbd Primary/Unknown
六、查看NOD1與NOD2鏈接狀態
[root@nod1 ~]# drbd-overview 0:drbd/0 StandAlone Primary/Unknown UpToDate/DUnknown r----- /mnt ext4 2.0G 68M 1.9G 4% [root@nod2 ~]# drbd-overview 0:drbd/0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4% ######由上可見,狀態爲StandAlone時,主備節點是不會通訊的
七、查看DRBD的服務狀態
[root@nod1 ~]# service drbd status drbd driver loaded OK; device status: version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21 m:res cs ro ds p mounted fstype 0:drbd StandAlone Primary/Unknown UpToDate/DUnknown r----- ext4 [root@nod2 ~]# service drbd status drbd driver loaded OK; device status: version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21 m:res cs ro ds p mounted fstype 0:drbd WFConnection Primary/Unknown UpToDate/DUnknown C /mnt ext4
八、在NOD1備用節點處理辦法
[root@nod1 ~]# umount /mnt/ [root@nod1 ~]# drbdadm disconnect drbd drbd: Failure: (162) Invalid configuration request additional info from kernel: unknown connection Command 'drbdsetup disconnect ipv4:192.168.137.225:7789 ipv4:192.168.137.222:7789' terminated with exit code 10 [root@nod1 ~]# drbdadm secondary drbd [root@nod1 ~]# drbd-overview 0:drbd/0 StandAlone Secondary/Unknown UpToDate/DUnknown r----- [root@nod1 ~]# drbdadm connect --discard-my-data drbd ######執行完以上三步後,你查看會發現仍是不可用 [root@nod1 ~]# drbd-overview 0:drbd/0 WFConnection Secondary/Unknown UpToDate/DUnknown C r-----
九、須要在NOD2節點上從新創建鏈接資源
[root@nod2 ~]# drbdadm connect drbd ######查看節點鏈接狀態 [root@nod2 ~]# drbd-overview 0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt ext4 2.0G 68M 1.9G 4% [root@nod1 ~]# drbd-overview 0:drbd/0 Connected Secondary/Primary UpToDate/UpToDate C r----- ######由上可見已經恢復到正常運行狀態
注意:特別提醒,若是是單主模式,資源只能在主(Primary)節點上掛載使用,並且不建議手動切換主備節點
到此DRBD的安裝配置及故障修復已結束,DRBD的雙主模式通常狀況不會用到,這裏也再也不介紹雙主模式的配置;這篇博客寫於中秋節當天,在這裏祝你們中秋節愉快!!!