

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Network Load Balancer ターゲットグループのヘルスチェック
<a name="target-group-health-checks"></a>

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

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

パッシブのヘルスチェックでは、ロードバランサーはターゲットの接続への応答状態を確認します。パッシブのヘルスチェックでは、ロードバランサーはアクティブのヘルスチェックで異常が報告される前に異常なターゲットを検出できます。パッシブなヘルスチェックは無効、設定、または監視することはできません。パッシブのヘルスチェックは UDP トラフィックと、維持設定がオンになっているターゲットグループではサポートされていません。詳細については、「[スティッキーセッション](edit-target-group-attributes.md#sticky-sessions)」を参照してください。

ターゲットが異常になると、ロードバランサーは、ターゲットに関連付けられたクライアント接続で受信したパケットの TCP RST を送信します (異常なターゲットがトリガーしたロードバランサーが起動しなかった場合以外)。

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

ターゲットグループが HTTPS ヘルスチェックで構成されている場合、登録されたターゲットが TLS 1.3 のみをサポートしている場合にはそのターゲットはヘルスチェックに失敗します。これらのターゲットは、TLS 1.2 などの以前のバージョンの TLS をサポートしている必要があります。

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

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

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

詳細については、「[ターゲットグループの正常性](load-balancer-target-groups.md#target-group-health)」を参照してください。

**Topics**
+ [ヘルスチェックの設定](#health-check-settings)
+ [ターゲットヘルスステータス](#target-health-states)
+ [ヘルスチェックの理由コード](#target-health-reason-codes)
+ [ターゲットのヘルスをチェックする](check-target-health.md)
+ [ヘルスチェック設定を更新する](modify-health-check-settings.md)

## ヘルスチェックの設定
<a name="health-check-settings"></a>

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


| 設定 | 説明 | デフォルト | 
| --- | --- | --- | 
|  **HealthCheckProtocol**  |  ターゲットでヘルスチェックを実行するときにロードバランサーが使用するプロトコル。使用可能なプロトコルは HTTP､HTTPS､および TCP です。デフォルトは TCP プロトコルです。ターゲットタイプが `alb` の場合、サポートされているヘルスチェックプロトコルは HTTP および HTTPS です。  | TCP | 
|  **HealthCheckPort**  |  ターゲットでヘルスチェックを実行するときにロードバランサーが使用するポート。デフォルトでは、各ターゲットがロードバランサーからトラフィックを受信するポートが使用されます。  | 各ターゲットがロードバランサーからトラフィックを受信するポート。 | 
|  **HealthCheckPath**  |  [HTTP/HTTPS ヘルスチェック] ヘルスチェックのターゲットの送信先であるヘルスチェックパス。デフォルトは / です。  |  / | 
|  **HealthCheckTimeoutSeconds**  |  ヘルスチェックを失敗と見なす、ターゲットからレスポンスがない時間 (秒単位)。範囲は 2～120 秒です。デフォルト値は、HTTP の場合は 6 秒、TCP および HTTPS ヘルスチェックの場合は 10 秒です。  | HTTP ヘルスチェックの場合は 6 秒、TCP および HTTPS ヘルスチェックの場合は 10 秒です。 | 
|  **HealthCheckIntervalSeconds**  |  個々のターゲットのヘルスチェックの概算間隔 (秒単位)。範囲は 5 ～ 300 秒です。デフォルト値は 30 秒です。 Network Load Balancer のヘルスチェックは分散され、コンセンサスメカニズムを使用してターゲットのヘルスを判断します。そのため、ターゲットは設定されているヘルスチェック数よりも多くのヘルスチェックを受けます。HTTP ヘルスチェックを使用している場合にターゲットへの影響を軽減するには、静的 HTML ファイルなどより単純な送信先をターゲットで使用するか、TCP ヘルスチェックに切り替えます。  | 30 秒 | 
|  **HealthyThresholdCount**  |  非正常なインスタンスが正常であると見なすまでに必要なヘルスチェックの連続成功回数。範囲は 2 ～ 10 です。デフォルトは 5 です。  | 5 | 
|  **UnhealthyThresholdCount**  |  非正常なインスタンスが非正常であると見なすまでに必要なヘルスチェックの連続失敗回数。範囲は 2 ～ 10 です。デフォルトは 2 です。  | 2 | 
|  **マッチャー**  |  [HTTP/HTTPS ヘルスチェック] ターゲットからの正常なレスポンスを確認するために使用する HTTP コード。範囲は 200 から 599 です。デフォルトは 200～399 です。  | 200-399 | 

## ターゲットヘルスステータス
<a name="target-health-states"></a>

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

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


| 値 | 説明 | 
| --- | --- | 
| `initial` |  ロードバランサーは、ターゲットを登録中か、ターゲットで最初のヘルスチェックを実行中です。 関連する理由コード:`Elb.RegistrationInProgress`\$1`Elb.InitialHealthChecking`  | 
| `healthy` |  ターゲットは正常です。 関連する理由コード:なし  | 
| `unhealthy` |  ターゲットはヘルスチェックに応答しなかったか、ヘルスチェックに合格しなかったか、またはターゲットが停止状態にあります。 関連する理由コード : `Target.FailedHealthChecks`  | 
| `draining` |  ターゲットは登録解除中で、Connection Draining 中です。 関連する理由コード : `Target.DeregistrationInProgress`  | 
| `unhealthy.draining` |  ターゲットはヘルスチェックに応答しなかったか、ヘルスチェックに合格しなかったか、または猶予期間に入っています。この猶予期間中は、ターゲットは既存の接続をサポートし、新しい接続は受け入れません。 関連する理由コード : `Target.FailedHealthChecks`  | 
| `unavailable` |  ターゲットヘルスは使用できません。 関連する理由コード : `Elb.InternalError`  | 
| `unused` |  ターゲットがターゲットグループに登録されていないか、ターゲットグループがリスナールールで使用されていないか、または、有効ではないアベイラビリティーゾーンにターゲットがあります。 関連する理由コード :`Target.NotRegistered` \$1`Target.NotInUse` \$1`Target.InvalidState` \$1`Target.IpUnusable`  | 

## ヘルスチェックの理由コード
<a name="target-health-reason-codes"></a>

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


| 理由コード | 説明 | 
| --- | --- | 
| `Elb.InitialHealthChecking` |  最初のヘルスチェックが進行中です  | 
| `Elb.InternalError` |  内部エラーのため、ヘルスチェックに失敗しました  | 
| `Elb.RegistrationInProgress` |  ターゲットの登録中です  | 
| `Target.DeregistrationInProgress` |  ターゲットの登録解除中です  | 
| `Target.FailedHealthChecks` |  ヘルスチェックに失敗しました  | 
| `Target.InvalidState` |  ターゲットが停止状態にあります ターゲットは終了状態にあります ターゲットは終了状態か、または停止状態にあります ターゲットは無効な状態にあります  | 
| `Target.IpUnusable` |  IP アドレスはロードバランサーによって使用されているので、ターゲットとして使用できません  | 
| `Target.NotInUse` |  ターゲットグループは、ロードバランサーからトラフィックを受信するように設定されていません ロードバランサーが有効になっていないアベイラビリティーゾーンにターゲットがあります  | 
| `Target.NotRegistered` |  ターゲットはターゲットグループに登録されていません  | 

# Network Load Balancer ターゲットのヘルスをチェックする
<a name="check-target-health"></a>

ターゲットグループに登録されたターゲットのヘルスステータスをチェックできます。ヘルスチェックの失敗に関するヘルプについては、[「トラブルシューティング: 登録されたターゲットが実行中でない](load-balancer-troubleshooting.md#target-not-in-service)」を参照してください。

------
#### [ Console ]

**ターゲットのヘルスをチェックするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

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

1. **[詳細]** ペインには、ターゲットの総数と各ヘルスステータスのターゲット数が表示されます。

1. **[Targets]** (ターゲット) タブの **[Health status]** (ヘルスステータス) 列は、各ターゲットのステータスを示します。

1. ターゲットのステータスの値が `Healthy` 以外の場合は、**[Health status details]** (ヘルスステータスの詳細) 列に詳細情報が表示されます。

**異常なターゲットに関する E メール通知を受信するには**  
CloudWatch アラームを使用して、異常なターゲットに関する詳細を送信する Lambda 関数をトリガーします。ステップバイステップの手順については、ブログ投稿「[ロードバランサーの異常なターゲットを特定する](https://aws.amazon.com/blogs/networking-and-content-delivery/identifying-unhealthy-targets-of-elastic-load-balancer/)」を参照してください。

------
#### [ AWS CLI ]

**ターゲットのヘルスをチェックするには**  
[describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html) コマンドを使用します。この例では、出力をフィルタリングして、正常でないターゲットのみを含めます。正常でないターゲットでは、出力に理由コードが含まれます。

```
aws elbv2 describe-target-health \
    --target-group-arn target-group-arn \
    --query "TargetHealthDescriptions[?TargetHealth.State!='healthy'].[Target.Id,TargetHealth.State,TargetHealth.Reason]" \
    --output table
```

以下は出力の例です。

```
----------------------------------------------
|            DescribeTargetHealth            |
+--------------+---------+-------------------+
|  172.31.0.57 |  unused |  Target.NotInUse  |
|  172.31.0.50 |  unused |  Target.NotInUse  |
+--------------+---------+-------------------+
```

------

## ターゲットの状態と理由コード
<a name="target-states-reason-codes"></a>

次のリストは、各ターゲット状態において考えられる理由コードを表示しています。

**ターゲットの状態は healthy です**  
理由コードが指定されていません。

**ターゲットの状態は initial です**  
+  `Elb.RegistrationInProgress` - ターゲットはロードバランサーに登録中です。
+  `Elb.InitialHealthChecking` - ロードバランサーは、ヘルスステータスを判断するために必要なヘルスチェックの最小数をターゲットに送信しています。

**ターゲットの状態は unhealthy です**  
+ `Target.FailedHealthChecks` - ターゲットへの接続を確立するときにロードバランサーがエラーを受信したか、ターゲットレスポンスの形式が正しくありません。

**ターゲットの状態は unused です**  
+ `Target.NotRegistered` - ターゲットはターゲットグループに登録されていません。
+ `Target.NotInUse` - ターゲットグループはロードバランサーによって使用されていないか、ターゲットがロードバランサーに対して有効化されていないアベイラビリティーゾーンにあります。
+ `Target.InvalidState` - ターゲットは停止状態か終了状態です。
+ `Target.IpUnusable` - ターゲット IP アドレスは、ロードバランサーによる使用向けに予約されています。

**ターゲットの状態は draining です**  
+ `Target.DeregistrationInProgress` - ターゲットは登録解除中であり、登録解除の遅延期間が終了していません。

**ターゲットの状態は unavailable です**  
+ `Elb.InternalError` - 内部エラーのため、ターゲットヘルスを使用できません。

# Network Load Balancer ターゲットグループのヘルスチェック設定を更新する
<a name="modify-health-check-settings"></a>

ターゲットグループのヘルスチェック設定は随時変更できます。ヘルスチェック設定のリストについては、「[ヘルスチェックの設定](target-group-health-checks.md#health-check-settings)」を参照してください。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

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

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

1. **[ヘルスチェックの編集を設定]** ページで、必要に応じて設定を変更します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ AWS CLI ]

**ヘルスチェックの設定を更新するには**  
[modify-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group.html) コマンドを使用します。次の例では、**HealthyThresholdCount** と **HealthCheckTimeoutSeconds** の設定を更新します。

```
aws elbv2 modify-target-group \
    --target-group-arn target-group-arn \
    --healthy-threshold-count 3 \
    --health-check-timeout-seconds 20
```

------
#### [ CloudFormation ]

**ヘルスチェックの設定を更新するには**  
[AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、更新されたヘルスチェック設定を含めます。次の例では、**HealthyThresholdCount** と **HealthCheckTimeoutSeconds** の設定を更新します。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: instance
      VpcId: !Ref myVPC
      HealthyThresholdCount: 3
      HealthCheckTimeoutSeconds: 20
```

------