スプリットブレイン自動修復機能はDRBD 8.0以降で現在の姿になりました。 DRBD 0.7も本機能を持っていましたが、 「より若いプライマリ側のデータを捨てる」戦略しか持っておらず、 設定によって調整することはできませんでした。 DRBD 8以降ではスプリットブレイン自動修復機能はデフォルトでは無効になっています。
スプリットブレイン通知機能はDRBD 8.2.1以降から利用可能です。
クラスタノード間のすべての通信が一時的に中断され、 クラスタ管理ソフトウェアまたは人為的な操作ミスによって 両方のノードがプライマリになった場合に、スプリットブレインの状態に陥ります。 それぞれのノードでデータの書き換えが行われることが可能になってしまうため、 この状態はきわめて危険です。
![]() | 注意 |
|---|---|
クラスタのスプリットブレインは、 heartbeatなどが管理するホスト間の通信がすべて途絶えたときに生じます。 これとDRBDのスプリットブレインは区別して考える必要があります。 このため、本書では次のような記載方法を使うことにします。
|
スプリットブレインに陥ったことを検出すると、 DRBDは電子メールまたは他の方法によって管理者に自動的に通知できます。 この機能を有効にする方法については 「スプリットブレインの通知」を参照してください。
スプリットブレインへの望ましい対処方法は、 手動でのスプリットブレイン修復を実施した後、 根本原因を取り除くことです。 しかし、ときにはこのプロセスを自動化する方がいい場合もあります。 自動化のために、DRBDは以下のいくつかのアルゴリズムを提供します。
「若い」プライマリ側の変更を切り捨てる . ネットワークの接続が回復してスプリットブレインを検出すると、 DRBDはそのときにプライマリになったノードのデータを切り捨てます。
「古い」プライマリ側の変更を切り捨てる . このモードでは、DRBDは最初に プライマリに切り替わったノードのデータを切り捨てます。
変更量が少ないノードのデータを切り捨てる . このモードでは、2つのノードの変更の程度を調べて、 変更量が少ない方のノードのすべての変更箇所を切り捨てます。
まったく変更が起きなかったノードのデータを切り捨てる . スプリットブレインに陥っていた期間に まったく書き換えが起こらなかったノードがある場合、 DRBDはスプリットブレインの修復が完了したと判断し、処理を続けます。 しかし、こういった状況はほとんど考えられません。 仮にリードオンリーでファイルシステムをマウントしただけでも、 デバイスへの書き換えが起きるためです。
DRBDのスプリットブレイン自動修復機能を設定する方法については、 「スプリットブレインからの自動復旧ポリシー」を参照してください。