「フェイルオーバーさえ導入すれば、システムの耐障害性は完璧になる」という認識は、現場を知らない層が抱きがちな典型的な誤解です。フェイルオーバー設計において最も恐れられている致命的障害が、通称「スプリットブレイン現象(Split-Brain)」です。
スプリットブレイン現象とは、サーバー自体は2台とも正常に動いているにもかかわらず、サーバー間を結ぶハートビート監視ネットワークだけが断線・輻輳した場合に発生します。待機系から見ると「メイン系からの信号が途絶えたため、メイン系が死んだ」と誤認し、自らプライマリに昇格して書き込み受付を開始します。しかし、元のメイン系も「自分は元気に動いている」と認識したまま処理を継続しています。
この結果、1つのシステムの中に「書き込み権限を持つプライマリサーバーが2台同時に存在する」という脳分裂状態に陥ります。クライアントAのデータは旧メイン機へ、クライアントBのデータは新メイン機へと分散して書き込まれ、データベースの中身が取り返しのつかないレベルで矛盾・破壊されてしまうのです。
この惨劇を防ぐため、現代の冗長化クラスタ設計では以下の厳格な安全装置が組み込まれています。
1つは「クォーラム(多数決)方式」です。サーバーを奇数台(最低3台以上)配置するか、第3の監視ノード(Witness)を置き、ネットワークが分断された際、全ノードの過半数(50%超)と通信できているグループだけが稼働を継続し、孤立した側は自動的に自殺(処理停止)する設計です。
もう1つが「フェンシング(STONITH:Shoot The Other Node In The Head)」です。異常を検知した待機系が新プライマリに昇格する直前、電源管理ユニット経由で物理的に旧メイン機の電源を強制遮断します。「確実に息の根を止めてから交代する」という冷徹な仕組みを採用することで、二重稼働によるデータ破損を物理的に根絶しています。