フェイルオーバーとは?フェイルバックとの違いと冗長化設計の鉄則
フェイルオーバーとは?フェイルバックとの違いと冗長化設計の鉄則に関する気になる情報を徹底的にまとめました。要点を確実におさえることができます。
「自動復旧を設定していたから安心していたが、深夜にスマホが鳴り止まなくなった」——国内大手ECプラットフォームのインフラ刷新を主導したシニアエンジニアの手記には、背筋の凍るようなインシデントの記録が残されています。原因は、データベース自動切り替えの過敏なヘルスチェック設定と、ネットワーク分断時の排他制御不備でした。
特に危険視されるのが、両系統が同時に「自分が主系だ」と誤認して独立稼働する「スプリットブレイン(Split-Brain)」現象です。監視用のインターコネクト回線だけが瞬断した際、主系は正常に稼働しているにもかかわらず、待機系は「主系が死亡した」と判断して昇格。双方が共有ディスクやDBへ同時に書き込みを行った結果、データベースファイルが物理的に破損し、整合性修復に38時間以上の全面サービス停止を余儀なくされた事例が報告されています。
この惨劇を防ぐためのスプリットブレイン対策として、実務では「クォーラム(定足数)アルゴリズム」が不可欠です。サーバーノードを3台以上の奇数構成、あるいは第3の証人ノード(監視専用の軽量インスタンス)を配置し、過半数の合意が得られないノードを即座にネットワークから切り離すフェンシング処理(STONITH:Shoot The Other Node In The Head)を徹底します。