1 概要
フェイルオーバーは、稼働中の系統に障害が起きた際、あらかじめ用意した待機系へ処理を移す仕組みである。主に情報技術の分野で用いられ、停止時間の短縮、可用性の確保、運用継続性の向上を目的とする。
この概念は、単に予備装置を備えるだけでは完結しない。障害の検出、切り替えの判定、サービスの引き継ぎ、元系への復帰までを含めた、総合的な設計として扱われる。
1.1 定義
フェイルオーバーは、主系の異常を契機に、待機系へ役割を移管する手順または機構を指す。切り替えは自動の場合もあれば、運用者の判断で実施される場合もある。
対象はサーバー、ネットワーク機器、ストレージ、データベースなど多岐にわたる。冗長構成の中核を成す要素として位置づけられることが多い。
1.2 目的
最大の目的は、障害時のサービス停止をできるだけ短くすることである。利用者への影響を抑え、業務処理や通信を継続しやすくする。
また、復旧作業を主系に集中させる間も、待機系で最低限の機能を維持できる点も重要である。結果として、運用全体の安定性が高まる。
1.3 高可用性との関係
高可用性は、システムを長時間にわたって利用可能な状態に保つ設計思想である。フェイルオーバーは、その実現手段の一つとして用いられる。
ただし、高可用性は切り替え機能だけで成立するわけではない。冗長化、監視、復旧設計、データ整合性の確保など、複数の要素が組み合わさって成立する。
2 動作原理
フェイルオーバーの基本的な流れは、異常の把握、切り替えの決定、処理の移管という三段階に整理できる。実装によって細部は異なるが、全体の考え方は共通している。
障害の種類によっては、完全停止ではなく部分劣化を契機に切り替える場合もある。そのため、単純な生存確認だけでなく、応答品質や接続状態も評価対象となる。
2.1 障害検知
障害検知は、主系が正常に機能しているかを確認する工程である。監視対象には、機器の稼働状態、通信の応答、サービスの提供状況などが含まれる。
検知が不十分だと、切り替えが遅れたり、誤って無事な系統を停止扱いにしたりするおそれがある。したがって、精度と速度の両立が求められる。
2.1.1 心拍監視
心拍監視は、主系と待機系の間で定期的に信号をやり取りし、相手の生存を確認する方法である。一定間隔で応答が得られれば正常、途絶すれば異常の可能性が高いと判断する。
比較的単純で広く使われるが、ネットワーク遅延や一時的な負荷の影響を受けることがある。そのため、他の監視手法と併用されることが多い。
2.1.2 監視タイムアウト
監視タイムアウトは、応答待ちの上限時間を定め、それを超えた場合に障害とみなす考え方である。応答遅延が続く状況を切り分けるのに有効である。
ただし、閾値を短くしすぎると誤検知が増え、長くしすぎると切り替えが遅れる。運用環境に応じた調整が必要になる。
2.2 切り替え判断
切り替え判断では、監視結果をもとに実際に待機系へ移すかどうかを決める。単純な故障だけでなく、データ整合性や現在の処理状態も考慮される。
自動切り替えは迅速だが、誤作動時の影響も大きい。一方、手動切り替えは慎重に行える反面、対応に時間を要する。
2.3 復旧と復帰
障害が解消した後は、主系を修復し、必要に応じて再び元の構成へ戻す。これを復帰または切り戻しと呼ぶ。
復帰時には、データ差分の同期、セッションの扱い、再接続の順序などを丁寧に扱う必要がある。手順が粗いと、再度の障害や不整合につながりやすい。
3 構成方式
フェイルオーバーの構成は、どの系を待機させるか、どの程度の冗長性を持たせるかによって分類される。性能、費用、復旧速度のバランスが設計の焦点となる。
3.1 アクティブとスタンバイ
アクティブとスタンバイの方式では、通常時に主系が処理を担当し、待機系は予備として待機する。構成が分かりやすく、切り替えの考え方も比較的明快である。
待機系は、完全に停止している場合もあれば、更新を受けながら待機する場合もある。後者は切り替え後の立ち上がりが速い。
3.1.1 単一待機構成
単一待機構成は、1台の主系に対して1台の予備系を備える形である。最も基本的な冗長化であり、小規模環境でも採用しやすい。
実装が簡潔な一方、予備系も故障すると保護手段が失われる。必要最小限の冗長性を確保する方式といえる。
3.1.2 二重待機構成
二重待機構成は、主系に加えて複数の待機系を用意する形である。障害が連続した場合や、保守のために一部を停止する場面で有効である。
ただし、構成が複雑になり、監視や同期の設計も難しくなる。運用手順の整備が重要になる。
3.2 アクティブとアクティブ
アクティブとアクティブの方式では、複数の系統が同時に稼働し、負荷を分担する。どちらか一方が停止しても、残りが処理を継続できる。
この方式は切り替えというより、障害時に処理量を再配分する性格が強い。性能面で有利だが、状態管理と整合性の制御が難しい。
3.3 ホットスタンバイ
ホットスタンバイは、待機系が常時稼働し、主系に近い状態を保つ方式である。切り替え後の再開が速く、停止時間を抑えやすい。
その反面、常時稼働のため資源消費が大きい。費用対効果を考慮して採用可否が決まることが多い。
3.4 コールドスタンバイ
コールドスタンバイは、待機系が停止状態または低稼働状態で保持される方式である。平常時の負荷は小さいが、切り替えには起動時間が必要となる。
導入コストを抑えやすい一方、復旧速度は相対的に遅い。緊急性よりも経済性を重視する場面で選ばれる。
4 運用上の課題
フェイルオーバーは有効だが、誤検知、同期遅延、構成差異などの問題を伴う。特にデータを扱う系では、切り替えの前後で内容がずれないよう注意が必要である。
定期試験も欠かせない。机上設計だけでは、実際の切り替え手順や復帰処理が想定通りに動くとは限らないためである。
5 関連概念
フェイルオーバーは、冗長化、レプリケーション、ロードバランシング、災害復旧などと密接に関係する。これらは目的や動作が近い場合もあるが、役割は同一ではない。
冗長化は予備資源を持つ広い考え方であり、レプリケーションはデータや状態の複製、ロードバランシングは処理の分散を主眼とする。フェイルオーバーは、それらを利用して障害時の継続運転を実現する枠組みといえる。