Elastic Load Balancing
Application Load Balancer

ターゲットグループのヘルスチェック

Application Load Balancer は、ステータスをテストするため、登録されたターゲットに定期的にリクエストを送信します。これらのテストは、ヘルスチェックと呼ばれます。

各ロードバランサーノードは、ロードバランサーに対して有効になっているアベイラビリティーゾーンの正常なターゲットにのみ、リクエストをルーティングします。各ロードバランサーノードは、ターゲットが登録されているターゲットグループのヘルスチェック設定を使用して、各ターゲットの状態を確認します。ターゲットは、登録後に正常と見なされるためには、1 つのヘルスチェックに合格する必要があります。各ヘルスチェックが完了すると、ロードバランサーノードはヘルスチェック用に確立された接続を終了します。

ターゲットグループに異常な登録済みターゲットのみが含まれている場合、ロードバランサーノードは異常なターゲット間でリクエストをルーティングします。

ヘルスチェックでは WebSocket はサポートされません。

ヘルスチェックの設定

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

設定 説明

HealthCheckProtocol

ターゲットでヘルスチェックを実行するときにロードバランサーが使用するプロトコル。使用可能なプロトコルは HTTP および HTTPS です。デフォルトは HTTP プロトコルです。

HealthCheckPort

ターゲットでヘルスチェックを実行するときにロードバランサーが使用するポート。デフォルトでは、各ターゲットがロードバランサーからトラフィックを受信するポートが使用されます。

HealthCheckPath

ヘルスチェックのターゲットの送信先である ping パス。有効な URI (/path?query) を指定します。デフォルトは / です。

HealthCheckTimeoutSeconds

ヘルスチェックを失敗と見なす、ターゲットからレスポンスがない時間 (秒単位)。範囲は 2~120 秒です。ターゲットタイプが instance または ip の場合のデフォルトは 5 秒で、ターゲットタイプが lambda の場合のデフォルトは 30 秒です。

HealthCheckIntervalSeconds

個々のターゲットのヘルスチェックの概算間隔 (秒単位)。範囲は 5~300 秒です。ターゲットタイプが instance または ip の場合のデフォルトは 30 秒で、ターゲットタイプが lambda の場合のデフォルトは 35 秒です。

HealthyThresholdCount

異常なターゲットが正常であると見なされるまでに必要なヘルスチェックの連続成功回数。範囲は 2~10 です。デフォルトは 5 です。

UnhealthyThresholdCount

ターゲットが異常であると見なされるまでに必要なヘルスチェックの連続失敗回数。範囲は 2~10 です。デフォルトは 2 です。

Matcher

ターゲットからの正常なレスポンスを確認するために使用する HTTP コード。200~499 の間で値または値の範囲を指定できます。デフォルト値は 200 です。

ターゲットヘルスステータス

ロードバランサーがターゲットにヘルスチェックリクエストを送信する前に、ターゲットグループに登録し、リスナールールでターゲットグループを指定して、ターゲットのアベイラビリティーゾーンがロードバランサーに対して有効になっていることを確認する必要があります。ターゲットがロードバランサーからリクエストを受信する前に、最初のヘルスチェックに合格する必要があります。ターゲットが最初のヘルスチェックに合格すると、ステータスは Healthy になります。

次の表は、登録されたターゲットのヘルスステータスの可能値を示しています。

説明

initial

ロードバランサーは、ターゲットを登録中か、ターゲットで最初のヘルスチェックを実行中です。

healthy

ターゲットは正常です。

unhealthy

ターゲットはヘルスチェックに応答しなかったか、ヘルスチェックに合格しませんでした。

unused

ターゲットがターゲットグループに登録されていないか、ターゲットグループがロードバランサーのリスナールールで使用されていません。または、ロードバランサーに対して有効ではないアベイラビリティーゾーンにターゲットがあります。

draining

ターゲットは登録解除中で、Connection Draining 中です。

ヘルスチェックの理由コード

ターゲットのステータスが Healthy 以外の値の場合、API は問題の理由コードと説明を返し、コンソールのツールヒントで同じ説明が表示されます。Elb で始まる理由コードはロードバランサー側で発生し、Target で始まる理由コードはターゲット側で発生します。

理由コード 説明

Elb.InitialHealthChecking

最初のヘルスチェックが進行中です

Elb.InternalError

内部エラーのため、ヘルスチェックに失敗しました

Elb.RegistrationInProgress

ターゲットの登録中です

Target.DeregistrationInProgress

ターゲットの登録解除中です

Target.FailedHealthChecks

ヘルスチェックに失敗しました

Target.InvalidState

ターゲットが停止状態にあります

ターゲットは終了状態にあります

ターゲットは終了状態か、または停止状態にあります

ターゲットは無効な状態にあります

Target.IpUnusable

IP アドレスはロードバランサーによって使用されているので、ターゲットとして使用できません

Target.NotInUse

ターゲットグループは、ロードバランサーからトラフィックを受信するように設定されていません

ロードバランサーが有効になっていないアベイラビリティーゾーンにターゲットがあります

Target.NotRegistered

ターゲットはターゲットグループに登録されていません

Target.ResponseCodeMismatch

次のコードでヘルスチェックに失敗しました: [code]

Target.Timeout

リクエストがタイムアウトしました

ターゲットのヘルスステータスをチェックする

ターゲットグループに登録されたターゲットのヘルスステータスをチェックできます。

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

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

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択します。

  4. [ターゲット] タブの [ステータス] 列は、各ターゲットのステータスを示します。

  5. ステータスの値が Healthy 以外の場合は、詳細についてツールヒントを参照してください。

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

describe-target-health コマンドを使用します。このコマンドの出力にはターゲットのヘルス状態が含まれます。ステータスの値が Healthy 以外の場合は、理由コードも出力に含まれています。

ターゲットグループのヘルスチェック設定を変更する

ターゲットグループのヘルスチェック設定はいつでも変更できます。

コンソールを使用してターゲットグループのヘルスチェック設定を変更するには

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

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択します。

  4. [ヘルスチェック] タブで、[編集] を選択します。

  5. [ターゲットグループの編集] ページで、必要に応じて設定を変更し、[保存] を選択します。

AWS CLI を使用してターゲットグループのヘルスチェック設定を変更するには

modify-target-group コマンドを使用します。