Application Load Balancer (ALB) のバックエンドサーバーの可用性を監視するには、ALB サーバーグループに対してヘルスチェックを構成します。ヘルスチェックにより、不健全なバックエンドサーバーを早期に検出し、サービス中断を防ぐことで、サービスの信頼性が向上します。本トピックでは、ヘルスチェックの作成、変更、削除方法について説明します。
背景情報
ALB では、各サーバーグループごとにヘルスチェック構成を定義できます。すべてのサーバーグループで、ヘルスチェックはデフォルトで有効になっています。
ヘルスチェックが有効になっている場合、ALB はクライアントリクエストを自動的に健全なバックエンドサーバーにルーティングし、サーバーグループ内のすべてのバックエンドサーバーの状態を継続的にモニターします。バックエンドサーバーが健全と判断されるには、連続して N 回ヘルスチェックに合格する必要があります。N はユーザーが設定する健全しきい値です。複数回のチェックにより、ネットワークジッターによる誤検知を回避できます。
バックエンドサーバーがヘルスチェックに失敗した場合、ALB はそのサーバーに新しいリクエストを送信しなくなります。
サーバーが回復すると、ALB は自動的にトラフィックの送信を再開します。
ヘルスチェックは短命接続を使用します。チェック完了後、接続は閉じられます。
説明重みが 0 のバックエンドサーバーはヘルスチェックに参加しません。
ALB は特定の IP アドレスを使用してバックエンドサーバーと通信し、ヘルスチェックを実行します。iptables ルールやサードパーティ製セキュリティソフトウェアなど、バックエンドサーバー側でこれらの IP アドレスをブロックしないようにしてください。
スペックアップ済みの ALB インスタンス は、vSwitch CIDR ブロック内のローカル IP アドレスを使用してバックエンドサーバーと通信します。ALB コンソール にログインし、インスタンス詳細ページでローカル IP アドレスを確認できます。
ALB スペックアップインスタンスのエラスティック機能を確保するため、ALB インスタンスが配置されている各 vSwitch に少なくとも 8 個の IP アドレスを予約し、これらの vSwitch CIDR ブロックを事前に許可してください。
スペックアップされていない ALB インスタンスは、100.64.0.0/10 CIDR ブロック内の IP アドレスを使用してバックエンドサーバーと通信します。
サーバーグループ内のすべてのバックエンドサーバーがヘルスチェックに失敗した場合でも、ALB はスケジューリングアルゴリズムに基づいてリクエストをグループにルーティングし続け、サービスへの影響を最小限に抑えます。詳細については、「サーバーグループ内のすべてのバックエンドサーバーが不健全な場合、ALB はどのようにリクエストを転送しますか?」をご参照ください。
HTTPS ヘルスチェックの制限事項
Standard Edition 以上の ALB インスタンスは HTTPS ヘルスチェックをサポートしています。Basic Edition の ALB インスタンスは HTTPS ヘルスチェックをサポートしていません。
ヘルスチェックの作成
方法 1: ヘルスチェックページの使用
ALB コンソール にログインします。
上部ナビゲーションバーで、ヘルスチェックを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ヘルスチェック ページで、ヘルスチェックの作成 をクリックします。
ヘルスチェックの作成 ダイアログボックスで、以下の表に従ってパラメーターを設定し、作成 をクリックします。
特別な要件がない限り、ヘルスチェックパラメーターはデフォルト値を使用してください。これにより、ヘルスチェックの失敗による頻繁なサーバースイッチオーバーを防ぎ、システムの可用性を維持できます。
ヘルスチェック構成
説明
ヘルスチェック名
ヘルスチェックの名前を入力します。
プロトコル
ヘルスチェックに使用するプロトコルを選択します。
HTTP:ALB は HEAD または GET リクエストを送信してブラウザの動作をシミュレートし、バックエンドサーバーが健全かどうかを確認します。
HTTPS:ALB は HEAD または GET リクエストを送信してブラウザの動作をシミュレートし、バックエンドサーバーが健全かどうかを確認します。制限事項については、「HTTPS ヘルスチェックの制限事項」をご参照ください。
TCP:ALB は SYN パケットを送信してバックエンドサーバーのポートが利用可能かどうかを確認します。
gRPC:ALB は POST または GET リクエストを送信してバックエンドサーバーが健全かどうかを確認します。
ヘルスチェックメソッド
ヘルスチェックメソッドを選択します。
HEAD:HTTP ヘルスチェックではデフォルトで HEAD が使用されます。バックエンドサーバーが HEAD リクエストをサポートしていることを確認してください。サポートしていない場合、ヘルスチェックが失敗する可能性があります。その場合は、代わりに GET を使用してください。
POST:gRPC ヘルスチェックではデフォルトで POST が使用されます。バックエンドサーバーが POST リクエストをサポートしていることを確認してください。サポートしていない場合、ヘルスチェックが失敗する可能性があります。その場合は、代わりに GET を使用してください。
GET:応答が 8 KB を超える場合、切り捨てられます。これはヘルスチェック結果に影響しません。
説明このパラメーターは、ヘルスチェックプロトコルが HTTP、HTTPS、または gRPC の場合にのみ適用されます。
HTTP および HTTPS ヘルスチェックは HEAD と GET をサポートしています。gRPC ヘルスチェックは POST と GET をサポートしています。
ヘルスチェック HTTP プロトコルバージョン
HTTP バージョンを選択します:HTTP1.0 または HTTP1.1。
説明このパラメーターは、ヘルスチェックプロトコルが HTTP または HTTPS の場合にのみ適用されます。
ポート
ALB がバックエンドサーバーをプローブするために使用するポートを入力します。
デフォルトでは、このフィールドは空です。ALB はバックエンドサーバーのポートを使用します。カスタムポートを指定する場合は、1 ~ 65535 の範囲で 1 つのポート番号を入力します。
パス
チェック対象のページの URL を入力します。静的ページの使用を推奨します。
デフォルトでは、ALB はバックエンド ECS インスタンスのプライベート IP アドレスに対して HTTP HEAD リクエストを送信し、インスタンスに設定されたデフォルトのホームページを対象とします。別のページを使用する場合は、そのパスを指定してください。
ドメイン名
ヘルスチェック用のドメイン名を入力します。
デフォルトでは、ALB はバックエンドサーバーのプライベート IP アドレスを使用します。代わりにドメイン名を指定することもできます。
ヘルスステータスコード
バックエンドサーバーが健全であることを示すステータスコードを選択します。ALB のバックエンドサーバーは、プローブリクエストが成功し、指定されたステータスコードを返した場合にのみヘルスチェックに合格します。
HTTP または HTTPS の場合、http_2xx、http_3xx、http_4xx、または http_5xx を選択できます。デフォルトでは、http_2xx および http_3xx が選択されています。
gRPC の場合、有効値は 0 ~ 99 です。最大 20 個の範囲を入力できます。範囲はカンマ (,) で区切ります。
説明このパラメーターは、ヘルスチェックプロトコルが HTTP、HTTPS、または gRPC の場合にのみ適用されます。
警告ヘルスステータスコードに 4XX または 5XX を含めると、障害のあるインスタンスの削除が遅れる可能性があります。たとえば、バックエンドサーバーが HTTP 500 を返しても http_5xx が許容されている場合、ALB はそのサーバーを健全と見なし、引き続きトラフィックを送信します。この設定は、ビジネスシナリオを慎重に評価したうえでのみ使用してください。バックエンドサービスからは、正しい 2XX または 3XX ステータスコードを返すことを推奨します。
応答タイムアウト
ALB がヘルスチェックの応答を待機する時間を設定します。バックエンド ECS がこの時間内に応答しない場合、ヘルスチェックは失敗します。
有効値:1 ~ 300 秒。デフォルト:5 秒。
ヘルスチェック間隔
連続する 2 回のヘルスチェックの間隔を設定します。
有効値:1 ~ 50 秒。デフォルト:2 秒。
健全しきい値
ALB がバックエンドサーバーを健全と判断するまでに必要な、連続したヘルスチェック成功回数を設定します。
有効値:2 ~ 10。デフォルト:3。
不健全しきい値
ALB がバックエンドサーバーを不健全と判断するまでに必要な、連続したヘルスチェック失敗回数を設定します。
有効値:2 ~ 10。デフォルト:3。
タグとリソースグループ
タグキー および タグ値 を設定します。
タグを設定すると、ヘルスチェック ページでタグによるヘルスチェックのフィルターが可能になります。
リソースグループ:ヘルスチェック用のリソースグループを選択します。
ヘルスチェックを作成後、ALB サーバーグループを作成する際に、ヘルスチェック設定 セクションで該当のヘルスチェックを選択します。詳細については、「サーバーグループの作成」をご参照ください。
方法 2:サーバーグループ作成ページから作成
サーバーグループを作成する際に、ヘルスチェック構成をテンプレートとして保存できます。これにより、後で簡単に再利用できます。
ALB コンソール にログインします。
上部ナビゲーションバーで、サーバーグループを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、パラメーターを設定し、作成 をクリックします。
このセクションでは、本トピックに関連するパラメーターのみを記載しています。その他のパラメーターについては、「サーバーグループの作成と管理」をご参照ください。
編集 の横にある ヘルスチェック設定 をクリックします。設定後、ヘルスチェック構成をテンプレートとして保存し、後で簡単に再利用できるようにする を選択し、ヘルスチェック名 を入力します。
オプション。左側のナビゲーションウィンドウで、 を選択します。ヘルスチェック ページで、保存されたヘルスチェックテンプレートを確認できます。
ヘルスチェックの変更
方法 1: ヘルスチェックページから
ALB コンソール にログインします。
上部ナビゲーションバーで、ヘルスチェックを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ヘルスチェック ページで、変更するヘルスチェックを見つけ、操作 列の 変更 をクリックします。
ヘルスチェックの変更 ダイアログボックスで、必要に応じてパラメーターを更新し、保存 をクリックします。
警告ヘルスチェックを無効にすると、ALB はバックエンドサーバーのヘルスステータスをチェックしなくなります。バックエンドサーバーがダウンした場合、ネットワークトラフィックを自動的に健全なバックエンドサーバーに切り替えることができません。
ヘルスチェック間隔を長く設定すると、ALB が不健全なバックエンドサーバーを検出するまでに時間がかかります。
方法 2:サーバーグループ詳細ページから変更
ALB コンソール にログインします。
上部ナビゲーションバーで、サーバーグループを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
サーバーグループ ページで、管理対象のサーバーグループを見つけ、操作 列の ヘルスチェックの変更 をクリックします。
ヘルスチェックの変更 ダイアログボックスで、ヘルスチェックを有効または無効にします。または、編集 の横にある ヘルスチェック設定 をクリックして設定を更新します。
警告ヘルスチェックを無効にすると、ALB はバックエンドサーバーのヘルスステータスをチェックしなくなります。バックエンドサーバーがダウンした場合、ネットワークトラフィックを自動的に健全なバックエンドサーバーに切り替えることができません。
ヘルスチェック間隔を長く設定すると、ALB が不健全なバックエンドサーバーを検出するまでに時間がかかります。
ヘルスチェックステータスの確認
ALB インスタンスにリスナーが設定されており、そのサーバーグループでヘルスチェックが有効になっている場合、リスナー タブでバックエンドサーバーのヘルスチェックステータスを確認できます。
ALB コンソール にログインします。
上部ナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
インスタンス ページで、管理対象の ALB インスタンスを見つけ、インスタンス ID をクリックします。
リスナー タブをクリックします。ヘルスチェックステータス 列で、バックエンドサーバーのヘルスチェックステータスを確認します。

ヘルスチェックの削除
ALB コンソール にログインします。
上部ナビゲーションバーで、ヘルスチェックを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ヘルスチェック ページで、削除するヘルスチェックを見つけ、操作 列の 削除 をクリックします。
削除 ダイアログボックスでメッセージを確認し、OK をクリックします。
ヘルスチェックのベストプラクティス
ヘルスチェックの正確性と信頼性を確保するため、以下のベストプラクティスに従ってください。
専用のヘルスチェックエンドポイントを作成する:バックエンドサーバー上に
/healthや/healthcheckなどの専用ヘルスチェックインターフェイスを作成します。このインターフェイスは常に HTTP 200 を返すようにしてください。権限検証やリソース不足により 4XX ステータスコードを返す可能性があるビジネスパスをヘルスチェックに使用しないでください。まずバックエンドサービスを修正する:ヘルスチェックが失敗した場合は、まずバックエンドサービスをトラブルシューティングして修正し、ヘルスチェックパスが正しい 2XX または 3XX ステータスコードを返すようにしてください。絶対に必要な場合を除き、ステータスコードの要件を緩和しないでください。
ヘルスチェックパラメーターを慎重に設定する:ビジネス要件に基づいて、ヘルスチェック間隔、タイムアウト、しきい値に適切な値を設定してください。不適切な設定は、誤検知または見逃しを引き起こす可能性があります。
curl を使用してヘルスチェックをシミュレートする:トラブルシューティング時に、次のコマンドを使用して ALB ヘルスチェックをシミュレートできます。
curl -Iv -X HEAD --http1.0 -H "Host: your-domain.com" http://backend_ip:port/health_path