Application Load Balancer (ALB) のバックエンドサーバーの可用性を監視するには、ALBのサーバーグループにヘルスチェックを設定する必要があります。これにより、異常なバックエンドサーバーをいち早く検出し、サービスの可用性を確保することができます。この記事では、ヘルスチェックの作成、変更、および削除の方法について説明します。
背景情報
ALB では、サーバーグループのヘルスチェックを設定することができます。すべてのサーバーグループではヘルスチェックがデフォルトで有効になっています。
ヘルスチェックが有効になっている場合、ALB は正常なバックエンドサーバーへリクエストを自動的にルーティングし、指定された間隔ですべてのバックエンドサーバーの可用性を監視します。バックエンドサーバーは、連続で N 回のヘルスチェックに合格しないと、正常とは判断できません。N は業務要件に基づいて指定できます。数回のヘルスチェックは、ネットワークジッターによるヘルスチェックエラーの影響を抑えるためです。
バックエンドサーバーが特定特定回数のヘルスチェックルスチェックに失敗した場合、そのバックエンドサーバーは異常と判断されます。この場合、ALB はバックエンドサーバーへのリクエスト配信を自動的に停止します。
バックエンドサーバーが正常になった後、ALB はバックエンドサーバーへのリクエスト配信を自動的に再開します。
ヘルスチェックは持続的に接続しません。ヘルスチェックが完了すると、接続は切断されます。
重みが 0 のバックエンドサーバーでは、ヘルスチェックは実行されません。
ALB インスタンスは、特定の IP アドレスを使用してバックエンドサーバーと通信し、ヘルスチェックを実行します。バックエンドサーバーが iptables ルールまたはその他の方法でこれらの IP アドレスをブロックしていないことは重要です。
アップグレードされた ALB インスタンスは、デフォルトでは、所属する vSwitch から割り当てられたローカル IP アドレスを使用してバックエンドサーバーと通信します。ALB コンソールにログインし、インスタンスの詳細ページでインスタンスのローカル IP アドレスを確認できます。
アップグレードされた ALB インスタンスがスケーリングできるようには、所属する vSwitch の CIDR ブロック内に少なくとも 8 つの IP アドレスを予約し、CIDR ブロックからのアクセスを許可しておくことをお勧めします。
アップグレードされていない ALB インスタンスは、100.64.0.0/10 CIDR ブロックの IP アドレスを使用してバックエンドサーバーと通信します。
サーバーグループ内のすべてのバックエンドサーバーが異常な場合、ALB はサービス中断を防ぐために、スケジューリングアルゴリズムによってサーバーグループへリクエストを転送します。詳細については、「同じバックエンドサーバー内のすべてのバックエンドサーバーが異常な場合、ALB インスタンスはどのようにリクエストを転送しますか?」をご参照ください。
HTTPS ヘルスチェックの使用制限
Standard 版および WAF 対応の ALB インスタンスはヘルスチェック機能をサポートしています。Basic 版の ALB インスタンスは HTTPS ヘルスチェックをサポートしていません。
ヘルスチェックを作成する
方法 1:ヘルスチェックページでの作成
ALB コンソール にログインします。
上部のナビゲーションバーで、ヘルスチェックを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
[ヘルスチェック] ページで、[ヘルスチェックの作成] をクリックします。
[ヘルスチェックの作成] ダイアログボックスで、下表に示すパラメーターを設定し、[作成] をクリックします。
ヘルスチェックを設定する際には、ヘルスチェックの失敗による頻繁なスイッチオーバーを防ぐために、デフォルト値の使用をお勧めします。これにより、システムの可用性への悪影響が軽減されます。
パラメーター
説明
ヘルスチェック名
ヘルスチェックの名前を入力します。
プロトコル
ヘルスチェックに使用するプロトコルを選択します。
HTTP: HEAD または GET リクエストをバックエンドサーバーに送信して、バックエンドサーバーが正常かどうかを確認します。
HTTPS: HEAD または GET リクエストをバックエンドサーバーに送信して、バックエンドサーバーが正常かどうかを確認します。詳細については、この記事の HTTPS ヘルスチェックの使用制限セクションョンをご参照ください。
TCP: SYN パケットをバックエンドサーバーに送信して、バックエンドサーバーのポートがリクエストを受信できるかどうかを確認します。
gRPC: POST または GET リクエストをバックエンドサーバーに送信して、バックエンドサーバーが正常かどうかを確認します。
ヘルスチェック方法
ヘルスチェック方法を選択します。
HEAD: デフォルトでは、HTTP ヘルスチェックは HEAD メソッドを使用します。まず、バックエンドサーバーが HEAD リクエストをサポートしていることは必要です。バックエンドサーバーが HEAD メソッドをサポートしていないか、HEAD メソッドが無効になっている場合、ヘルスチェックは失敗する可能性があります。この場合、GET メソッドを使用できます。
POST: デフォルトでは、gRPC ヘルスチェックは POST メソッドを使用します。まず、バックエンドサーバーが POST リクエストをサポートしていることは必要です。バックエンドサーバーが 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 がバックエンドサーバーでヘルスチェックを実行する際に使用されるポートを入力します。
デフォルトでは、このパラメーターは空であり、バックエンドサーバーによって選択されたポートがヘルスチェックに使用されることを示します。ヘルスチェックに特定のポートを指定する場合は、ポート番号を入力してください。有効値:1 ~ 65535。ポート番号は 1 つのみを入力できます。
パス
ヘルスチェックを実行する Web ページの URL を入力します。静的 Web ページの URL を入力することをお勧めします。
デフォルトでは、ALB は HTTP HEAD リクエストをバックエンドの Elastic Compute Service (ECS) インスタンスのプライベート IP アドレスに送信し、ECS インスタンスに設定されているデフォルトのホームページにアクセスすることで、HTTP ヘルスチェックを実行します。デフォルトのホームページをヘルスチェックに使用したくない場合は、URL を指定できます。
ドメイン名
ヘルスチェックに使用するドメイン名を入力します。
デフォルトでは、ALB はヘルスチェックにバックエンドサーバーのプライベート IP アドレスを使用します。ただし、ドメイン名を指定することもできます。
ヘルスチェックステータスコード
正常なバックエンドサーバーを示すステータスコードを選択します。ALB のバックエンドサーバーは、ヘルスチェックリクエストに対して指定されたステータスコードを返す場合にのみ、ヘルスチェックに合格します。
ヘルスチェックプロトコルは HTTP または HTTPS の場合、http_2xx、http_3xx、http_4xx、http_5xx を選択できます。デフォルトでは、http_2xx と http_3xx が選択されています。
ヘルスチェックプロトコルは gRPC の場合、有効値が 0 ~ 99 です。範囲値の入力も可能であり、コンマ (,) で区切って最大 20 個を入力できます。
説明このパラメーターは、ヘルスチェックプロトコルが HTTP、HTTPS、または gRPCの場合にのみ有効になります。
ヘルスチェック応答タイムアウト
ヘルスチェックレスポンスのタイムアウト期間を指定します。バックエンドサーバーは指定されたタイムアウト期間内にヘルスチェックレスポンスを返さなかった場合、ヘルスチェックに失敗します。
有効値:1 ~ 300。デフォルト値:5。単位:秒。
ヘルスチェック間隔
ヘルスチェックの間隔を指定します。
有効値:1 ~ 50。デフォルト値:2。単位:秒。
正常しきい値
異常なバックエンドサーバーが正常と判断できるまでにヘルスチェック連続合格の必要な回数を指定します。
有効値:2 ~ 10。デフォルト値:3。
異常しきい値
正常なバックエンドサーバーが異常と判断できるまでにヘルスチェック連続失敗の必要な回数を指定します。
有効値:2 ~ 10。デフォルト値:3。
タグとリソースグループ
タグキーとタグ値 のパラメーターを設定します。
タグを指定した後、[ヘルスチェック] ページでタグ別にヘルスチェックをフィルタリングできます。
リソースグループ: ヘルスチェックのリソースグループを選択します。
ヘルスチェックが作成された後、ALB サーバーグループを作成するときに、[ヘルスチェック設定] セクションでヘルスチェックを選択できます。詳細については、「サーバーグループの作成と管理」をご参照ください。
方法 2:サーバーグループページでの作成
サーバーグループを作成するときに、ヘルスチェックの設定をヘルスチェックテンプレートとして保存できます。このようにして、ヘルスチェックを作成するときにテンプレートを利用できます。
ALB コンソール にログインします。
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 ]を選択します。
[サーバーグループ] ページで、[サーバーグループの作成] をクリックします。
[サーバーグループの作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。
ここで記載しているのは、本記事に密接に関連する設定項目のみです。その他のパラメーターについては、「サーバーグループの作成と管理」をご参照ください。
[ヘルスチェックの設定] の横にある [編集] をクリックします。ヘルスチェック設定後、[ヘルスチェックとして新しい設定を保存すると、次回クイックコピーして使用できます。] を選択し、[ヘルスチェック名] を入力します。
オプション。コンソールの左側のナビゲーションウィンドウで、 を選択します。[ヘルスチェック] ページで、保存されたヘルスチェックテンプレートを確認できます。
ヘルスチェックを変更する
方法 1:ヘルスチェックページでの変更
ALB コンソール にログインします。
上部のナビゲーションバーで、ヘルスチェック作成のリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
[ヘルスチェック] ページで、変更対象の [操作] 列の [編集] をクリックします。
[ヘルスチェック設定の変更] ダイアログボックスで、業務要件に合わせてパラメーターを変更し、[保存] をクリックします。
警告ヘルスチェックが無効になると、ALB はバックエンドサーバーのヘルスステータスを確認しなくなります。いったんバックエンドサーバーに障害が発生すると、ネットワークトラフィックが正常なバックエンドサーバーに自動的に切り替わることはできません。
ヘルスチェック間隔を長く指定すると、ALB は異常なバックエンドサーバーを検出するのにより多くの時間がかかります。
方法 2:サーバーグループページでの変更
ALB コンソール にログインします。
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
[サーバーグループ] ページで、変更対象の [操作] 列の [ヘルスチェックの変更] をクリックします。
[ヘルスチェックの変更] ダイアログボックスで、ヘルスチェックをオンまたはオフにします。[ヘルスチェックの設定] の横にある [編集]をクリックして、ヘルスチェックの各パラメーターを変更することもできます。
警告ヘルスチェックが無効になっていると、ALB はバックエンドサーバーのヘルスステータスを確認しなくなります。バックエンドサーバーがダウンしている場合、ネットワークトラフィックを正常なバックエンドサーバーに自動的に切り替えることはできません。
ヘルスチェック間隔を長く指定すると、ALB が異常なバックエンドサーバーを検出するのにより多くの時間がかかります。
ヘルスチェックの結果を確認する
ALB インスタンスにリスナーが配置されていて、バックエンドサーバーグループでヘルスチェックが有効になっている場合は、[リスナー] タブでヘルスチェックの結果を確認できます。
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、変更対象の ALB インスタンスの ID をクリックします。
[リスナー] タブをクリックし、[ヘルスチェックステータス] 列でバックエンドサーバーのヘルスチェックの結果を確認します。

ヘルスチェックを削除する
ALB コンソール にログインします。
上部のナビゲーションバーで、ヘルスチェックを作成するリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
[ヘルスチェック] ページで、削除対象の [操作] 列の [削除] をクリックします。
[削除] ダイアログボックスで、情報を確認し、[OK] をクリックします。