我正在運行 2 節點集群,其中 DRBD(主動/被動)由 drbd systemd 服務管理,還有一個小腳本,每當資源成為主要資源時就會安裝卷。
我想以這樣一種方式配置 DRBD,使其始終能夠解決任何腦裂問題,並且始終至少有一個節點是主節點,並且只要兩台機器都沒有宕機,就能夠在任何情況下提供服務。
我嘗試了以下配置(其中pri-lost-after-sb
是 "reboot"
)
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;
和on-suspended-primary-outdated force-secondary
一些其他組合。
但我總是發現集群進入不良狀態並且無法從裂腦中恢復的情況。通常我會StandAlone
存取節點和force-io-failures
輔助節點(因此,在主節點再次發生故障後,即使已連接,該輔助節點也將無法運作)。
考慮到我高度重視服務正常運行時間而不是避免資料遺失,我還能做些什麼來提高此設定的穩健性嗎?
答案1
過去,我曾多次嘗試設定類似的叢集。直到我了解到 DRBD 的設計已被破壞,並以「裂腦」作為它的第二個名字。在 DRBD9 中,情況有所好轉(僅與噩夢般的 8.xx 相比),但它仍然無法在生產中使用。我只看到一種解決方案 - 節省您的時間並遷移到更可靠的解決方案。例如,頭孢。