スプリットブレインの通知と自動修復

スプリットブレイン自動修復機能はDRBD 8.0以降で現在の姿になりました。 DRBD 0.7も本機能を持っていましたが、 「より若いプライマリ側のデータを捨てる」戦略しか持っておらず、 設定によって調整することはできませんでした。 DRBD 8以降ではスプリットブレイン自動修復機能はデフォルトでは無効になっています。

スプリットブレイン通知機能はDRBD 8.2.1以降から利用可能です。

クラスタノード間のすべての通信が一時的に中断され、 クラスタ管理ソフトウェアまたは人為的な操作ミスによって 両方のノードがプライマリになった場合に、スプリットブレインの状態に陥ります。 それぞれのノードでデータの書き換えが行われることが可能になってしまうため、 この状態はきわめて危険です。

[注意]注意

クラスタのスプリットブレインは、 heartbeatなどが管理するホスト間の通信がすべて途絶えたときに生じます。 これとDRBDのスプリットブレインは区別して考える必要があります。 このため、本書では次のような記載方法を使うことにします。

  • DRBDのスプリットブレインのことをスプリットブレインと表記します。

  • クラスタノード間の通信の断絶のことをクラスタ断絶と表記します。 これはクラスタのスプリットブレインのことです。

スプリットブレインに陥ったことを検出すると、 DRBDは電子メールまたは他の方法によって管理者に自動的に通知できます。 この機能を有効にする方法については 「スプリットブレインの通知」を参照してください。

スプリットブレインへの望ましい対処方法は、 手動でのスプリットブレイン修復を実施した後、 根本原因を取り除くことです。 しかし、ときにはこのプロセスを自動化する方がいい場合もあります。 自動化のために、DRBDは以下のいくつかのアルゴリズムを提供します。

[注意]注意

自動修復機能を使うべきかどうかの判断は、 個々のアプリケーションに強く依存します。 「変更量が少ないノードのデータを切り捨てる」アプローチは、 ある種のWebアプリケーションの場合適しているかもしれません。 一方、金融関連のデータベースアプリケーションでは、 どんなタイプであっても自動的にデータを切り捨てるアプローチは受け入れがたく、 スプリットブレインの事後処理はすべて手作業で行うべきでしょう。 スプリットブレイン自動修復機能を使う場合、 アプリケーションの特性を十分に考慮してください。

DRBDのスプリットブレイン自動修復機能を設定する方法については、 「スプリットブレインからの自動復旧ポリシー」を参照してください。