DRBD 發生 Split Brain (腦裂) 問題簡易排除

DRBD (Distributed Replicated Block Device) 是常見於 Linux 作業系統下高可靠度解決方案之一, 用於兩台機器間網路通訊讓指定磁區資料一致, 有點像網路版的 RAID 1, 通常採用兩機一組架構, 有對外服務的 Primary 角色與 備援的 Secondary 角色機器, 當 Primary 機器出了問題, Secondary 機器可以很快的切換為 Primary 角色繼續伺服器上的服務, 保持服務不中斷。不過在某些情況下, DRBD 也是會出問題的, 畢竟兩台機器間是要靠網路通訊, 比較慘的情況是兩邊資料發生了不一致狀況, 也就是 Split Brain (腦裂), 兩台機器已無法確認誰是 Primary 或是 Secondary, 都成為 "StandAlone" 狀態

檢視 DRBD 的服務狀態
cat /proc/drbd

如果出現"腦裂", 會出現類似下面的訊息
DRBD 發生 Split Brain (腦裂) 問題簡易排除

這時你需要判斷這兩台機器哪個成為"存活者"與"犧牲者", 顧名思義"存活者"機器將依照現狀服務下去, 而"犧牲者"將要捨棄 DRBD 同步的磁區資料, 重新 sync 資料, 所以存活者會成為 Primary 角色機器, 犧牲者成為 Secondary 角色機器

首先從犧牲者來處理
drbdadm disconnect all
drbdadm -- --discard-my-data connect all

all 這裡是指定全部 DRBD 資源, 也可指定某個資源代號, --discard-my-data 參數意味著捨棄犧牲者 DRBD 磁區資料

接著在存活者主機上
drbdadm connect all

即可重新 sync, 存活者成為 Primary 角色

依照 DRBD 磁區大小不同, 所需的 sync 時間也就不同, 耐心等待 Secondary 完全同步, 期間可用 cat /proc/drbd 來檢視 sync 狀態
出現"ds:UpToDate/UpToDate"磁區狀態就代表完成 sync
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!