

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

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

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

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

ターゲットグループに異常な登録済みターゲットのみが含まれている場合、そのヘルスステータスにかかわらず、ロードバランサーはそれらすべてのターゲットにリクエストをルーティングします。つまり、有効なすべてのアベイラビリティーゾーン内で、すべてのターゲットが同時にヘルスチェックに失敗すると、ロードバランサーはオープンに失敗します。フェールオープンの効果は、ヘルスステータスにかかわらず、ロードバランシングのアルゴリズムに基づいて、有効なすべてのアベイラビリティーゾーン内のすべてのターゲットへのトラフィックを許可することです。

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

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

ヘルスチェックログを使用して、ロードバランサーの登録済みターゲットに対して行われたヘルスチェックに関する詳細情報をキャプチャし、Amazon S3 にログファイルとして保存できます。これらのヘルスチェックログを使用して、ターゲットの問題のトラブルシューティングを行うことができます。詳細については、「[ヘルスチェックログ](load-balancer-health-check-logs.md)」を参照してください。

**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>

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

ターゲットの登録を解除すると、**HealthyHostCount** は減少しますが、**UnhealthyHostCount** は増加しないことに注意してください。


| 設定 | 説明 | 
| --- | --- | 
| **HealthCheckProtocol** | ターゲットでヘルスチェックを実行するときにロードバランサーが使用するプロトコル。Application Load Balancer の場合、使用可能なプロトコルは HTTP および HTTPS です。デフォルトは HTTP プロトコルです。<br />これらのプロトコルは、HTTP GET メソッドを使用してヘルスチェックリクエストを送信します。 | 
| **HealthCheckPort** | ターゲットでヘルスチェックを実行するときにロードバランサーが使用するポート。デフォルトでは、各ターゲットがロードバランサーからトラフィックを受信するポートが使用されます。 | 
| **HealthCheckPath** | ターゲットでのヘルスチェックの送信先。<br />プロトコルバージョンが HTTP/1.1 または HTTP/2 の場合は、有効な URI (/* パス *?*クエリ *) を指定します。デフォルトは / です。<br />プロトコルバージョンが grPC の場合は、カスタムヘルスチェックメソッドのパスを `/package.service/method` 形式で指定します。デフォルトは `/AWS.ALB/healthcheck` です。 | 
| **HealthCheckTimeoutSeconds** | ヘルスチェックを失敗と見なす、ターゲットからレスポンスがない時間 (秒単位)。範囲は 2～120 秒です。ターゲットタイプが `instance` または `ip` の場合のデフォルトは 5 秒で、ターゲットタイプが `lambda` の場合のデフォルトは 30 秒です。 | 
| **HealthCheckIntervalSeconds** | 個々のターゲットのヘルスチェックの概算間隔 (秒単位)。範囲は 5 ～ 300 秒です。ターゲットタイプが `instance` または `ip` の場合のデフォルトは 30 秒で、ターゲットタイプが `lambda` の場合のデフォルトは 35 秒です。 | 
| **HealthyThresholdCount** | 非正常なインスタンスが正常であると見なすまでに必要なヘルスチェックの連続成功回数。範囲は 2 ～ 10 です。デフォルトは 5 です。 | 
| **UnhealthyThresholdCount** | 非正常なインスタンスが非正常であると見なすまでに必要なヘルスチェックの連続失敗回数。範囲は 2 ～ 10 です。デフォルトは 2 です。 | 
| **マッチャー** | ターゲットからの正常なレスポンスを確認するために使用するコード。これらは、コンソールでは [**成功コード**] と呼ばれます。<br />プロトコルバージョンが HTTP/1.1 または HTTP/2 の場合、指定できる値は 200～499 です。複数の値 (例: "200,202") または値の範囲 (例: "200-299") を指定できます。デフォルト値は 200 です。<br />プロトコルバージョンが grPC の場合、指定できる値は 0～99 です。複数の値 (例: "0,1") または値の範囲 (例: "0-5") を指定できます。デフォルト値は 12 です。 | 

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

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

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


| 値 | 説明 | 
| --- | --- | 
| `initial` | ロードバランサーは、ターゲットを登録中か、ターゲットで最初のヘルスチェックを実行中です。<br />関連する理由コード:`Elb.RegistrationInProgress`\|`Elb.InitialHealthChecking` | 
| `healthy` | ターゲットは正常です。<br />関連する理由コード:なし | 
| `unhealthy` | ターゲットはヘルスチェックに応答しなかったか、ヘルスチェックに合格しませんでした。<br />関連する理由コード :`Target.ResponseCodeMismatch` \|`Target.Timeout` \|`Target.FailedHealthChecks` \|`Elb.InternalError`  | 
| `unused` | ターゲットがターゲットグループに登録されていないか、ターゲットグループがロードバランサーのリスナールールで使用されていないか、ロードバランサーに対して有効ではないアベイラビリティーゾーンにターゲットがあるか、ターゲットが停止または終了状態にあります。<br />関連する理由コード :`Target.NotRegistered` \|`Target.NotInUse` \|`Target.InvalidState` \|`Target.IpUnusable` | 
| `draining` | ターゲットは登録解除中で、Connection Draining 中です。<br />関連する理由コード : `Target.DeregistrationInProgress` | 
| `unavailable` | ターゲットグループのヘルスチェックは無効になっています。<br />関連する理由コード : `Target.HealthCheckDisabled` | 

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

ターゲットのステータスが `Healthy` 以外の値の場合、API は問題の理由コードと説明を返し、コンソールで同じ説明が表示されます。`Elb` で始まる理由コードはロードバランサー側で発生し、`Target` で始まる理由コードはターゲット側で発生します。ヘルスチェックの失敗が考えられる原因の詳細については、「[トラブルシューティング](load-balancer-troubleshooting.md#target-not-inservice)」を参照してください。


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