スプリットブレインを自動的に解決するDRBD設定

スプリットブレインを自動的に解決するDRBD設定

私は、drbd systemd サービスによって管理される DRBD (アクティブ/パッシブ) と、リソースがプライマリになるたびにボリュームをマウントする小さなスクリプトを備えた 2 ノード クラスターを実行しています。

DRBD を、スプリット ブレインを常に解決し、両方のマシンがダウンしていない限り、常にプライマリで機能できるノードが少なくとも 1 つ存在するように構成したいと考えています。

私は次の構成を試しました(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 と比べると)、それでも実稼働では使用できません。解決策は 1 つしかありません。時間を節約して、より信頼性の高いものに移行することです。たとえば、Ceph などです。

関連情報