「フェイルオーバー」という言葉はシステム設計・インフラ管理の文脈でよく登場しますが、詳しく知らないという方も多いでしょう。
本記事では、フェイルオーバーの意味・仕組み・フェイルバックとの違い・NAS・MySQLでの活用まで、わかりやすく解説していきます。
システムの高可用性を学びたい方はぜひ最後までご覧ください。
フェイルオーバーとは?意味と基本的な仕組み
それではまず、フェイルオーバーの基本的な意味と仕組みについて解説していきます。
フェイルオーバー(Failover)とは、稼働中のシステム・サーバーに障害が発生した際に、自動的に待機中のバックアップシステムへ切り替えてサービスを継続する仕組みのことです。
「Fail(失敗)」+「Over(引き継ぐ)」という意味で、障害発生時の自動切り替えによってダウンタイム(停止時間)を最小化します。
【フェイルオーバーの基本的な動作】
通常時:プライマリサーバー(メイン)が稼働中
スタンバイサーバー(待機系)が同期・待機
障害発生:プライマリサーバーに障害が発生
フェイルオーバー:スタンバイサーバーが自動的にプライマリに昇格
サービス継続:スタンバイサーバーがサービスを引き継ぐ
フェイルオーバーにより、障害発生時も最小限のダウンタイムでサービスを継続できます。
フェイルバックとの違い
フェイルバック(Failback)とは、フェイルオーバー後に元のプライマリシステムが回復した際に、元の構成に戻す(プライマリを復活させる)処理のことです。
| 用語 | 意味 |
|---|---|
| フェイルオーバー | 障害発生時にスタンバイへ自動切り替え |
| フェイルバック | 修復後に元のプライマリに切り戻し |
フェイルバックは手動で行うことも自動で行うこともあります。
フェイルオーバー→障害修復→フェイルバックという流れが高可用性システムの標準的なライフサイクルです。
フェイルオーバーとスイッチオーバーの違い
スイッチオーバー(Switchover)は計画的なシステム切り替えを指します。
たとえばメンテナンスのために意図的にスタンバイへ切り替える場合がスイッチオーバーです。
フェイルオーバーは「予期しない障害時の自動切り替え」、スイッチオーバーは「計画的な手動・自動切り替え」という使い分けがされます。
フェイルオーバーのRTO・RPO
フェイルオーバーの性能を評価する指標として「RTO」と「RPO」があります。
RTO(Recovery Time Objective、目標復旧時間)とは障害発生からサービス復旧までの目標時間です。
RPO(Recovery Point Objective、目標復旧地点)とは復旧した際に失われてもよいデータの最大量(時間で表現)です。
フェイルオーバーの設計ではRTOとRPOを要件として明確にすることが重要です。
フェイルオーバーの実装方式
続いては、フェイルオーバーの主な実装方式を確認していきます。
アクティブ・スタンバイ構成
最も基本的なフェイルオーバー構成で、プライマリ(アクティブ)とスタンバイの2台構成です。
スタンバイは常に同期状態を保ち(ホットスタンバイ)、プライマリが障害を起こすと自動的にアクティブに昇格します。
スタンバイがウォームスタンバイ(定期的に同期・起動に時間がかかる)やコールドスタンバイ(停止状態・手動で起動)の場合もあります。
アクティブ・アクティブ構成
複数のサーバーがすべてアクティブな状態でサービスを提供し、1台が障害を起こしても他のサーバーが引き継ぐ構成です。
負荷分散とフェイルオーバーを同時に実現できる高度な構成で、ロードバランサーと組み合わせることで高可用性と性能の両立が可能です。
ハートビートによる障害検知
フェイルオーバーシステムでは「ハートビート(heartbeat)」という定期的な死活確認信号を使って障害を検知します。
プライマリからのハートビートが一定時間途絶えた場合に障害と判断してフェイルオーバーが開始されます。
ハートビートのタイムアウト設定が短すぎると誤検知、長すぎると切り替えが遅くなるというトレードオフがあります。
NAS・データベース(MySQL)でのフェイルオーバー
続いては、NASとMySQLでのフェイルオーバーの具体的な活用を確認していきます。
NASのフェイルオーバー(ストレージの高可用性)
企業のストレージ(NAS・SAN)では、ストレージコントローラーの二重化とフェイルオーバーが重要です。
NETAPP・EMC・HPE NimbleなどのエンタープライズNASは二重化コントローラーとフェイルオーバー機能を標準で提供しています。
コントローラー障害時に自動的に待機コントローラーが引き継ぎ、ストレージアクセスを継続します。
重要業務データを格納するNASには必ず冗長化・フェイルオーバー機能を持つ製品を選ぶことが推奨されます。
MySQLのフェイルオーバー(レプリケーション)
MySQLでは「レプリケーション」を使ってプライマリ(マスター)からスレーブへデータを同期し、フェイルオーバーを実現します。
MySQLの「InnoDB Cluster」や「MySQL Router」・「MHA(Master High Availability Manager)」などのツールで自動フェイルオーバーが実装できます。
【MySQLフェイルオーバーの基本フロー】
① プライマリが障害
② スレーブの中から最新状態のものがプライマリに昇格
③ アプリケーション・Routerが新プライマリに接続先変更
④ サービス継続
データベースの高可用性にはMySQLのフェイルオーバー設計が不可欠です。
AWSでのフェイルオーバー(Route 53・RDS)
AWSでは様々なフェイルオーバー機能が提供されています。
Route 53のフェイルオーバールーティングを使えば、プライマリリージョンに障害が発生した際に自動でセカンダリリージョンに切り替えられます。
Amazon RDS(マネージドデータベース)はマルチAZ(複数アベイラビリティーゾーン)配置によって自動フェイルオーバーを提供します。
AWSのマネージドサービスを活用することで、複雑なフェイルオーバー設定を大幅に簡略化できます。
まとめ
本記事では、フェイルオーバーの意味・仕組み・フェイルバックとの違い・構成方式・ハートビート・NAS・MySQL・AWSでの活用まで詳しく解説しました。
フェイルオーバーとは障害発生時に自動でバックアップシステムへ切り替えてサービスを継続する仕組みであり、高可用性システムの根幹を成す技術です。
RTO・RPOを明確にし、要件に合ったフェイルオーバー構成を設計することが信頼性の高いシステム構築の鍵となるでしょう。
ぜひ本記事を参考に、フェイルオーバーの理解と設計に役立ててみてください。