Classic Load Balancer のヘルスチェックを設定する - Elastic Load Balancing

Classic Load Balancer のヘルスチェックを設定する

Classic Load Balancer は、ステータスをテストするため、登録されたインスタンスに定期的にリクエストを送信します。これらのテストは、ヘルスチェックと呼ばれます。ヘルスチェック時に正常なインスタンスのステータスは、InService となります。ヘルスチェック時に異常があるインスタンスのステータスは、OutOfService となります。ロードバランサーは、インスタンスの状態が正常であるか異常であるかにかかわらず、すべての登録済みインスタンスでヘルスチェックを実行します。

ロードバランサーは、正常なインスタンスのみにリクエストをルーティングします。インスタンスが異常であると判断した場合、ロードバランサーはそのインスタンスへのリクエストのルーティングを中止します。インスタンスが正常な状態に戻ると、ロードバランサーはそのインスタンスへのリクエストのルーティングを再開します。

ロードバランサーは、Elastic Load Balancing によって提供されるデフォルトのヘルスチェック設定、またはユーザーが指定するヘルスチェック設定を使用して、登録済みインスタンスの状態をチェックします。

Auto Scaling グループを Classic Load Balancer に関連付けている場合は、ロードバランサーのヘルスチェックを使用して、Auto Scaling グループのインスタンスの状態を確認できます。デフォルトでは、Auto Scaling グループで各インスタンスのヘルス状態が定期的に判断されます。詳細については、Amazon EC2 Auto Scaling ユーザーガイドの「Auto Scaling グループに Elastic Load Balancing ヘルスチェックを追加する」を参照してください。

ヘルスチェックの設定

ヘルス設定には、登録されているインスタンスのヘルス状態を判断するめに、ロードバランサーが使用する情報が含まれています。次の表は、ヘルスチェック設定のフィールドの説明を示しています。

フィールド 説明

ping プロトコル

インスタンスと接続するために使用するプロトコル。

有効な値: TCPHTTPHTTPS、および SSL

コンソールのデフォルト: HTTP

CLI/API のデフォルト: TCP

ping ポート

インスタンスに接続するために使用するポート (protocol:port ペアなど)。ロードバランサーが、設定された応答タイムアウト期間内に指定されたポートでインスタンスに接続できない場合、インスタンスは異常と見なされます。

Ping プロトコル: TCPHTTPHTTPS、および SSL

Ping ポート範囲: 1 ~ 65535

コンソールのデフォルト: HTTP:80

CLI/API のデフォルト: TCP:80

ping パス

HTTP または HTTPS リクエストの送信先。

HTTP または HTTPS GET リクエストが ping ポートと ping パス上のインスタンスに発行されます。ロードバランサーが応答タイムアウト時間内に "200 OK" 以外の応答を受信した場合、インスタンスは異常と見なされます。応答に本文が含まれている場合、アプリケーションは Content-Length ヘッダーを 0 以上の値に設定するか、値を "chunked" に設定した Transfer-Encoding を指定する必要があります。

デフォルト: /index.html

応答タイムアウト

ヘルスチェックからの応答を受け取るまで待つ時間 (秒単位)。

有効な値: 2 ~ 60

デフォルト: 5

HealthCheck 間隔

個々のインスタンスのヘルスチェックの間隔 (秒単位)。

有効な値: 5 ~ 300

デフォルト: 30

非正常のしきい値

EC2 インスタンスで異常が発生していることを宣言する前に連続して失敗したヘルスチェックの数。

有効な値: 2 ~ 10

デフォルト: 2

正常のしきい値

EC2 インスタンスが正常であることを宣言する前に連続して成功したヘルスチェックの数。

有効な値: 2 ~ 10

デフォルト: 10

ロードバランサーは、指定されたポート、プロトコル、および ping パスを使用して、Interval 秒ごとに、登録された各インスタンスにヘルスチェックリクエストを送信します。各ヘルスチェックリクエストは独立しており、間隔全体で存続します。インスタンスが応答するまでにかかる時間は、次のヘルスチェックまでの間隔に影響を与えません。ヘルスチェックが UnhealthyThresholdCount 連続失敗数のしきい値を超えると、ロードバランサーはインスタンスをサービス停止中の状態にします。ヘルスチェックが HealthyThresholdCount 連続成功数のしきい値を超えると、ロードバランサーはインスタンスを実行中の状態に戻します。

インスタンスがヘルスチェックの間隔内に 200 応答コードを返せば、HTTP/HTTPS ヘルスチェックは正常です。TCP 接続が成功すれば、TCP ヘルスチェックは正常です。SSL ハンドシェイクが成功すれば、SSL ヘルスチェックは正常です。

ヘルスチェックの設定を更新する

ロードバランサーのヘルスチェックの設定はいつでも更新できます。

コンソールを使用してロードバランサーのヘルスチェックの設定を更新するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [Health Check] タブで [Edit Health Check] を選択します。

  5. [Configure Health Check] ページで、必要に応じて設定を更新します。

  6. [Save] を選択します。

AWS CLI を使用してロードバランサーのヘルスチェックの設定を更新するには

次の configure-health-check コマンドを使用します。

aws elb configure-health-check --load-balancer-name my-load-balancer --health-check Target=HTTP:80/ping,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3

インスタンスのヘルスステータスをチェックする

登録済みインスタンスのヘルスステータスをチェックできます。

コンソールを使用してインスタンスのヘルスステータスをチェックするには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [Description] タブで、[Status] は実行中のインスタンスの数を示します。

  5. [Instances] タブの [Status] 列は、各インスタンスのステータスを示します。

AWS CLI を使用してインスタンスのヘルスステータスをチェックするには

次の describe-instance-health コマンドを使用します。

aws elb describe-instance-health --load-balancer-name my-load-balancer

ヘルスチェックのトラブルシューティングを行う

登録済みインスタンスが、いくつかの理由からロードバランサーのヘルスチェックに失敗する場合があります。ヘルスチェックの失敗理由として最も多いのは、EC2 インスタンスがロードバランサーへの接続を閉じている場合や、EC2 インスタンスからの応答がタイムアウトになった場合です。考えられる原因、および失敗したヘルスチェックの問題を解決するための手順については、「Classic Load Balancer のトラブルシューティングを行う: ヘルスチェック」を参照してください。