フェイルオーバーとは?障害時に自動で切り替えるシステム継続の仕組み

システム開発・テクノロジー
フェイルオーバーとは?ざっくりと3行で
  • システムや機器に障害が発生したとき自動的にスタンバイ機・バックアップシステムに切り替えてサービスの継続を実現する仕組みのこと
  • プライマリとスタンバイの2系統を用意しておきヘルスチェックで障害を検知した瞬間に切り替えを行うことで人の介入なしにサービスを回復する
  • 障害からの回復後にスタンバイ系からプライマリ系に戻す作業を「フェイルバック」と呼び、フェイルオーバーとセットで理解することが重要だ

【深掘り】これだけ知ってればOK!

フェイルオーバーの代表的な構成:アクティブ-スタンバイ(コールドスタンバイ)(平常時はプライマリだけが稼働・切り替えに数十秒〜数分かかる)・ウォームスタンバイ(スタンバイも起動した状態で待機・切り替えが速い)・アクティブ-アクティブ(両系統が常に稼働してロードバランサーで分散・片方が落ちても即座に継続)。

AWSでのフェイルオーバーの実装例:RDS Multi-AZ(プライマリDBに障害が発生すると自動的にスタンバイに切り替わる、切り替え時間は通常60〜120秒程度)・Route 53のフェイルオーバールーティング(ヘルスチェックが失敗したエンドポイントを除外して別リージョンに切り替える)。

フェイルオーバーのテスト(DR訓練)が重要だ。フェイルオーバーの仕組みを用意しても定期的にテストしないと「いざというとき動かない」リスクがある。意図的にプライマリを落としてフェイルオーバーが正常に動作するかを定期的に確認することが運用品質の基本だ。

フェイルオーバー後のフェイルバックのタイミングには注意が必要だ。フェイルバックを急ぐとプライマリの修復が不完全な状態で戻してしまい再び障害が発生するリスクがある。プライマリの原因究明と完全修復を確認してから計画的にフェイルバックを実施することが重要だ。

カオスエンジニアリングツール(AWS Fault Injection Simulator・Chaos Monkey)を使って自動化した定期的なフェイルオーバーテストも有効だ。平常時から障害を意図的に注入してシステムの回復力を検証することが高可用性システムの運用品質を維持する現代的なアプローチだ。

よくある誤解

フェイルオーバーがあれば絶対に止まらないと思っている

フェイルオーバーには切り替え時間(数秒〜数分)があるため完全なゼロダウンタイムを保証するものではない。またフェイルオーバーが起きること自体が障害であり、フェイルオーバー後の状態の監視と原因究明が必要だ。

フェイルオーバーとフェイルバックは同じだと思っている

フェイルオーバーはプライマリ障害時にスタンバイへ切り替える処理だ。フェイルバックは障害回復後にスタンバイからプライマリに戻す逆方向の切り替えで、どちらも慎重に計画して実施することが求められる。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

RDS Multi-AZを設定しているので障害が起きてもフェイルオーバーで自動的にスタンバイに切り替わります。切り替え時間は最大2分程度です。

インフラエンジニアがDBのフェイルオーバーの仕組みと切り替え時間を説明している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

フェイルオーバーのテストを半年ごとにやっています。先週実施したら切り替えに3分かかったのでRTOの2分以内に収まっていません。改善が必要です。

SREエンジニアがフェイルオーバーテストの結果を報告してRTO未達の問題を指摘している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

フェイルバックは急がずにプライマリの原因究明と完全修復を確認してから計画的に実施してください。

インシデント対応のリーダーがフェイルバックのタイミングについて慎重な判断を指示している場面。

【まとめ】3つのポイント

  • 障害検知から自動切り替えまでを人の介入なしに実現する仕組み:ヘルスチェックでプライマリの障害を即座に検知してスタンバイに自動切り替えすることで人が気づく前にサービス継続が確保される
  • コールドスタンバイ・ウォームスタンバイ・アクティブ-アクティブでコストと切り替え速度が変わる:コールドスタンバイは安価だが切り替えが遅く、アクティブ-アクティブはコストが高いが即時継続できるためRTOの要件に合わせた選択が重要だ
  • 定期的なフェイルオーバーテストでRTO内の切り替えを確認する:仕組みを用意するだけでなく定期的にテストを実施して実際の切り替え時間がRTOの目標値に収まることを確認し続けることが高可用性システムの運用品質の基本だ

よくある質問

Q
RDS Multi-AZのフェイルオーバーにかかる時間はどのくらいですか?
A

AWSの公式では通常60〜120秒程度とされています。ただし実際の切り替え時間はDB負荷・インスタンスタイプによって変動するため、DR訓練で実際の時間を計測してRTOの要件を満たすか確認することが重要です。

Q
フェイルオーバーとロードバランシングはどう違いますか?
A

ロードバランシングは複数の正常なサーバーにトラフィックを分散する仕組みです。フェイルオーバーは障害が発生したときに正常な系統に切り替える仕組みです。

Q
フェイルオーバーのテストはどのくらいの頻度で行うべきですか?
A

重要なシステムでは年2回以上のDR訓練を推奨します。カオスエンジニアリングツールを使って自動化した定期的なフェイルオーバーテストも有効です。

Q
フェイルオーバーとフォールトトレランスはどう違いますか?
A

フェイルオーバーは障害を検知してから切り替えるため数秒〜数分の停止が発生します。フォールトトレランスは障害が発生してもダウンタイムゼロで継続稼働する完全冗長化設計です。

【出典】参考URL

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Concepts.MultiAZSingleStandby.html :AWS RDS Multi-AZの公式ドキュメント
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-failover.html :Route 53フェイルオーバールーティングの公式ドキュメント
https://e-words.jp/w/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC.html :IT用語辞典「フェイルオーバー」

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました