フェイルオーバーとは?障害時でも止まらない仕組みと運用の罠を解説
Q1:フェイルオーバーが完了するまでの間、アクセスしている一般ユーザーにはどう見えますか?
A1:切り替え方式やシステムの設計によって異なります。セッション情報がRedis等の外部キャッシュに保持されていれば、数秒から数十秒の読み込み遅延(プチフリーズ)を感じる程度でそのまま処理が継続します。一方、セッション同期を行っていないシステムやDNS切り替えを伴う場合は、一時的に「502 Bad Gateway」や「接続できません」といったエラー画面が表示され、ページの再読み込み(リロード)を求められる挙動が一般的です。
Q2:AWS RDSで自動フェイルオーバーが発生した際、アプリ側で必要な実装は何ですか?
A2:最も重要なのは、データベース接続が切断された際に即座にクラッシュせず、一定の間隔を空けて再接続を試みる「指数バックオフ付きリトライ処理(Exponential Backoff)」の実装です。あわせて、アプリケーションが動作するランタイム(JVMなど)のDNSキャッシュTTLを短め(数秒から数十秒程度)に設定し、新プライマリのIPアドレスへ素早く再接続できるように構成する必要があります。
Q3:フェイルオーバーと「ロードバランサーのヘルスチェック機能」は何が決定的に違うのですか?
A3:ロードバランサーは、配下にある複数のWebサーバーへリクエストを振り分け、応答のないサーバーを一時的にグループから外す「通信トラフィックの交通整理」を行います。対してフェイルオーバーは、主にデータベースや共有ストレージなど「1つの主権や最新データを確実に引き継がなければならないシステム」において、主系から待機系へマスター権限を公式に委譲・昇格させる処理を指します。