- Linux集群之美
- 余洪春
- 804字
- 2021-01-08 10:57:40
1.1.8 高可用塊設備DRBD
DRBD(Distributed Replicated Block Device)是一種塊設備,可以用于高可用(HA)之中。它的功能類似于一個網絡RAID-1。當你將數據寫入本地文件系統時,數據還將會被發送到網絡中的另一臺主機上,并以相同的形式記錄在一個文件系統中。本地(主節點)與遠程主機(備用節點)的數據可以保證實時同步。當本地系統出現故障時,遠程主機上還保留著一份相同的數據,可以繼續使用。在高可用(HA)中使用DRBD功能,可以代替一個共享盤陣。因為數據同時存儲于本地主機和遠程主機上,切換時,遠程主機只要使用它上面的那份備份數據就可以繼續服務了。
DRBD的工作原理如圖1-2所示。

圖1-2 DRBD工作原理圖
DRBD支持3種不同的復制協議,允許使用3種程度的復制同步。
協議A:異步復制協議。只要主節點完成本地寫操作就認為寫操作完成,并且需要復制的數據包會被存放到本地TCP發送緩存中。當發生fail-over故障時,在standby節點的數據被認為仍是穩固的,然而,在崩潰發生的時間點上很多最新的更新操作會丟失。
協議B:內存同步(半同步,semi-synchronous)復制協議。如果本地磁盤的寫已經完成,并且復制數據包已經到達對應的從節點,此時主節點才會認為磁盤寫已經完成。通常情況下,發生fail-over不會導致數據丟失(因為后備系統內存中已經獲得了數據更新)。然而,如果所有節點同時出現電源故障,則主節點數據存儲會發生不可逆的錯誤結果,主節點上多數最新寫入的數據可能會丟失。
協議C:同步復制協議。只有在本地和遠程磁盤都確定寫入已完成時,主節點才會認為寫入完成。這樣可確保發生單點故障時不會導致任何數據丟失。如果發生數據丟失的現象,那也只會在所有節點同時存在存儲錯誤時才會發生。
在DRBD設置中,最常用的復制協議是協議C。選擇哪種復制協議受部署的兩個因素影響:保護要求和延遲。為了保證數據的一致性和可靠性,建議選擇協議C。
另外,我們在線上環境中主要采用DRBD+Heartbeat+NFS組成高可用的文件系統,此項目上線多年沒有發生過丟失數據的現象;另外,DRBD已被MySQL官方寫入文檔手冊,作為推薦的高可用方案之一。