ターゲットグループのヘルスチェック - Elastic Load Balancing

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

ターゲットを 1 つ以上のターゲットグループに登録します。登録プロセスが完了次第、ロードバランサーは新しく登録したターゲットへのトラフィックのルーティングを開始します。登録プロセスが完了し、ヘルスチェックが開始されるまで数分かかることがあります。

Network Load Balancers はアクティブおよびパッシブヘルスチェックを使用して、ターゲットがリクエストを処理できるかどうかを判断します。デフォルトでは、各ロードバランサーノードは、アベイラビリティーゾーン内の登録済みターゲット間でのみリクエストをルーティングします。クロスゾーン負荷分散を有効にすると、各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの正常なターゲットにリクエストをルーティングします。詳細については、「クロスゾーン負荷分散」を参照してください。

アクティブなヘルスチェックを使用すると、ロードバランサーは、登録された各ターゲットに定期的にリクエストを送信してそのステータスを確認します。各ロードバランサーノードは、ターゲットが登録されているターゲットグループのヘルスチェック設定を使用して、各ターゲットの状態を確認します。各ヘルスチェックが完了すると、ロードバランサーノードはヘルスチェック用に確立された接続を終了します。

パッシブのヘルスチェックでは、ロードバランサーはターゲットの接続への応答状態を確認します。パッシブのヘルスチェックでは、ロードバランサーはアクティブのヘルスチェックで異常が報告される前に異常なターゲットを検出できます。パッシブなヘルスチェックは無効、設定、または監視することはできません。パッシブのヘルスチェックは UDP トラフィックではサポートされていません。

ターゲットが異常になると、ロードバランサーは、ターゲットに関連付けられたクライアント接続で受信したパケットの TCP RST を送信します。

1 つ以上のターゲットグループで、有効にしたアベイラビリティーゾーン内に正常なターゲットがない場合、DNS から該当するサブネットの IP アドレスを削除し、そのアベイラビリティーゾーンのターゲットにリクエストをルーティングできないようにします。有効なすべてのアベイラビリティーゾーン内で、すべてのターゲットが同時にヘルスチェックに失敗すると、ロードバランサーはオープンに失敗します。フェールオープンの効果は、ヘルスステータスに関わらず、有効なすべてのアベイラビリティーゾーン内のすべてのターゲットへのトラフィックを許可することです。

HTTP または HTTPS ヘルスチェックリクエストの場合、ホストヘッダーには、ターゲットの IP アドレスおよびヘルスチェックポートではなく、ロードバランサーノードの IP アドレスおよびリスナーポートが含まれます。

TLS リスナーを Network Load Balancer に追加すると、リスナーの接続テストが実行されます。TLS の終了では TCP 接続も終了され、新しい TCP 接続がロードバランサーとターゲット間で確立されます。したがって、TLS リスナーに登録されたターゲットに対してロードバランサーからこのテスト用に送信された TCP ping が表示される場合があります。これらの TCP ping は識別できます。Network Load Balancer のソース IP アドレスがあり、接続にデータパケットは含まれていないためです。

UDP サービスの場合、ターゲットの可用性は、ターゲットグループの非 UDP ヘルスチェックを使用して、テストされます。使用可能なヘルスチェック(TCP、HTTP、または HTTPS)およびターゲット上の任意のポートを使用して、UDP サービスの可用性を確認できます。ヘルスチェックを受信しているサービスが失敗した場合、ターゲットは使用不可とみなされます。UDP サービスのヘルスチェックの精度を向上させるには、ヘルスチェックポートをリッスンして UDP サービスのステータスを追跡し、サービスが使用できない場合はヘルスチェックが失敗するようにサービスを設定します。

ヘルスチェックの設定

以下の設定を使用して、ターゲットグループのターゲットのアクティブなヘルスチェックを設定します。ヘルスチェックが UnhealthyThresholdCount 連続失敗数のしきい値を超えると、ロードバランサーはターゲットをサービス停止中の状態にします。ヘルスチェックが HealthyThresholdCount 連続成功数のしきい値を超えると、ロードバランサーはターゲットを実行中の状態に戻します。

設定 説明

HealthCheckProtocol

ターゲットでヘルスチェックを実行するときにロードバランサーが使用するプロトコル。使用可能なプロトコルは HTTP、HTTPS、および TCP です。デフォルトは TCP プロトコルです。ターゲットタイプが alb の場合、サポートされているヘルスチェックプロトコルは HTTP および HTTPS です。

HealthCheckPort

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

HealthCheckPath

[HTTP/HTTPS ヘルスチェック] ヘルスチェックのターゲットの送信先である ping パス。デフォルトは / です。

HealthCheckTimeoutSeconds

ヘルスチェックを失敗と見なす、ターゲットからレスポンスがない時間 (秒単位)。この値は、HTTPS ヘルスチェックの場合は 6 秒、TCP および HTTP ヘルスチェックの場合は 10 秒です。

HealthCheckIntervalSeconds

個々のターゲットのヘルスチェックの概算間隔 (秒単位)。この値は 10 秒または 30 秒となります。デフォルト値は 30 秒です。

重要

Network Load Balancer のヘルスチェックは分散され、コンセンサスメカニズムを使用してターゲットのヘルスを判断します。そのため、ターゲットは設定されているヘルスチェック数よりも多くのヘルスチェックを受けます。HTTP ヘルスチェックを使用している場合にターゲットへの影響を軽減するには、静的 HTML ファイルなどより単純な送信先をターゲットで使用するか、TCP ヘルスチェックに切り替えます。

HealthyThresholdCount

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

UnhealthyThresholdCount

非正常なインスタンスが非正常であると見なすまでに必要なヘルスチェックの連続失敗回数。この値は正常なしきい値カウントと同じでなければなりません。

マッチャー

[HTTP/HTTPS ヘルスチェック] ターゲットからの正常なレスポンスを確認するために使用する HTTP コード。この値は、200~399 である必要があります。

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

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

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

説明

initial

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

関連する理由コード : Elb.RegistrationInProgress | Elb.InitialHealthChecking

healthy

ターゲットは正常です。

関連する理由コード : なし

unhealthy

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

関連する理由コード : Target.FailedHealthChecks

unused

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

関連する理由コード :Target.NotRegistered |Target.NotInUse |Target.InvalidState |Target.IpUnusable

draining

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

関連する理由コード : Target.DeregistrationInProgress

unavailable

ターゲットヘルスは使用できません。

関連する理由コード : Elb.InternalError

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

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

理由コード 説明

Elb.InitialHealthChecking

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

Elb.InternalError

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

Elb.RegistrationInProgress

ターゲットの登録中です

Target.DeregistrationInProgress

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

Target.FailedHealthChecks

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

Target.InvalidState

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

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

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

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

Target.IpUnusable

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

Target.NotInUse

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

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

Target.NotRegistered

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

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

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

New console

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

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

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

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

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

  5. ターゲットのステータスの値が Healthy 以外の場合は、[ステータスの詳細] 列に詳細情報が表示されます。

Old console

コンソールを使用してターゲットのヘルスを確認するには

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

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

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

  4. [Targets] を選択し、[Status] 列の各ターゲットのステータスを表示します。ステータスの値が Healthy 以外の場合は、詳細についてツールヒントを参照してください。

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

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

異常なターゲットに関する E メール通知を受信するには

CloudWatch アラームを使用して、異常なターゲットに関する詳細を送信する Lambda 関数をトリガーします。ステップバイステップの手順については、ブログ投稿「ロードバランサーの異常なターゲットを特定する」を参照してください。

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

ターゲットグループのヘルスチェック設定の一部を変更できます。ターゲットグループのプロトコルが TCP、TLS、UDP、または TCP_UDP である場合、ヘルスチェックプロトコル、間隔、タイムアウト、または成功コードを変更できません。

New console

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

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

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

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

  4. [グループの詳細] タブの [ヘルスチェックの設定] セクションで、[編集] を選択します。

  5. [ヘルスチェックの編集の設定] ページで、必要に応じて設定を変更し、[変更内容の保存] を選択します。

Old console

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

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

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

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

  4. [Health checks]、[Edit] を選択します。

  5. [Edit target group] ページで、必要に応じて設定を変更し、[Save] を選択します。

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

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