はじめに
ロードバランサーは、複数のサーバー(ターゲット)に対して負荷を分散する仕組みです。高い可用性と拡張性を実現する上で欠かせないツールですが、その運用には注意が必要です。特に重要なのが、ターゲットの健全性を監視する「ヘルスチェック」の設定です。今回は、ヘルスチェックの基本的な仕組みから、具体的な設定方法、ベストプラクティスまでを解説します。
ターゲットグループとヘルスチェックの役割
ロードバランサーの構築では、まず負荷分散の対象となるターゲット(EC2インスタンスなど)を「ターゲットグループ」としてまとめます。ターゲットグループには、同じ役割を持つターゲットを登録します。
ロードバランサーは、ターゲットグループ内の「正常な」ターゲットにのみトラフィックを転送します。つまり、どのターゲットが正常で、どのターゲットが異常かを常に把握しておく必要があります。ここで活躍するのが「ヘルスチェック」です。
ヘルスチェックは、ロードバランサーからターゲットに対して定期的に行われるリクエストです。応答内容に基づいて、各ターゲットの状態が「正常」か「異常」か判定されます。異常と判定されたターゲットには、ロードバランサーからのトラフィックが流れなくなります。
ヘルスチェックの仕組み
ヘルスチェックの具体的な流れは次のようになります。
1. ロードバランサーが、指定されたプロトコル(HTTP、HTTPS、TCP)とポートを使ってターゲットにリクエストを送信
2. ターゲットからの応答を一定時間(タイムアウト)待つ
3. 応答内容に基づいてターゲットの状態を判定
a. 正しい応答があった場合は「正常」
b. タイムアウトしたり、指定されたHTTPステータスコード以外の応答があった場合は「異常」
4. 一定回数の成功/失敗に基づいて、最終的なターゲットの状態を決定
つまり、ヘルスチェックの設定では、リクエスト先のプロトコルやポート、パス(HTTP/HTTPSの場合)、タイムアウト値、実行間隔、異常/正常と判断する基準(しきい値)などを指定します。
ヘルスチェック設定の変更方法
ヘルスチェックの設定は、ターゲットグループの作成時に行いますが、後からの変更も可能です。変更手順は以下の通りです。
1. EC2管理コンソールにログインし、左ペインの「ロードバランシング」から「ターゲットグループ」を選択
2. 設定を変更したいターゲットグループをクリック
3. 「ヘルスチェック」タブを開き、「編集」ボタンをクリック
4. 必要な項目(プロトコル、パス、タイムアウト値など)を変更
5. 「変更内容の保存」ボタンをクリック
変更内容は数分以内に反映されます。なお、コマンドラインから設定変更する場合は、modify-target-groupコマンドを使用します。
ターゲットのヘルスステータス
ヘルスチェックの結果は、各ターゲットの「ヘルスステータス」として表示されます。主なステータスは以下の通りです。
initial:ターゲット登録直後、またはヘルスチェック開始直後の状態
healthy:ヘルスチェックに成功した状態
unhealthy:ヘルスチェックに失敗した状態
unused:ターゲットがターゲットグループに登録されていない状態
draining:ターゲットの登録解除作業中の状態
これらのステータスは、EC2管理コンソールのターゲットグループ詳細画面や、describe-target-healthコマンドで確認できます。ステータスがhealthy以外の場合は、その理由を示すエラーコードも表示されます。
ヘルスチェック設定のベストプラクティス
最後に、ヘルスチェックを効果的に活用するためのポイントをまとめます。
・ターゲットの用途に合ったプロトコルとポートを使う
→ 例えばWebサーバーならHTTP/80、APIサーバーならHTTP/8080など
・HTTP/HTTPSの場合、ヘルスチェック専用のエンドポイントを用意する
→ 処理の軽いシンプルなパスにする。レスポンスで過剰な処理が走らないよう注意
・間隔は長めに設定する
→ ターゲットに過剰な負荷がかからないよう、60秒以上の間隔がおすすめ
・異常しきい値は小さめに設定する
→ 2~3回の連続失敗で異常とみなすのが一般的
・正常しきい値は大きめに設定する
→ 異常から復帰したターゲットを安全に運用に戻すため、5回以上の連続成功を条件とする
以上を踏まえつつ、実際のトラフィックパターンに合わせて設定値を微調整するのが理想的です。状況に合わせて柔軟に設定を見直し、ターゲットの状態変化を的確に捉えられるよう努めましょう。
ヘルスチェックはロードバランサーを運用する上で重要な機能ですが、設定次第で大きな効果を発揮します。本記事を参考に、ぜひ最適なヘルスチェック設定を見つけてください。適切なヘルスチェックは、ロードバランサーの安定運用に大きく役立つはずです。
参考