

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

# Network Load Balancer のターゲットグループ属性を編集する
<a name="edit-target-group-attributes"></a>

Network Load Balancer のターゲットグループを作成したら、そのターゲットグループ属性を編集できます。

**Topics**
+ [クライアント IP の保存](#client-ip-preservation)
+ [登録解除の遅延](#deregistration-delay)
+ [Proxy Protocol](#proxy-protocol)
+ [スティッキーセッション](#sticky-sessions)
+ [クロスゾーンロードバランサー](#target-group-cross-zone)
+ [異常のあるターゲットの接続終了](#unhealthy-target-connection-termination)
+ [異常なドレイニング間隔](#unhealthy-draining-interval)

## クライアント IP の保存
<a name="client-ip-preservation"></a>

Network Load Balancer は、リクエストをバックエンドターゲットにルーティングするときに、クライアントのソース IP アドレスを保持できます。クライアント IP 保存を無効にした場合、Network Load Balancer のプライベート IP アドレスが送信元 IP アドレスになります。

デフォルトでは、UDP、TCP\_UDP、QUIC、TCP\_QUIC プロトコルを使用するインスタンスおよび IP タイプのターゲットグループに対して、クライアント IP の保存が有効になっています (無効にすることはできません)。ただし、`preserve_client_ip.enabled` ターゲットグループ属性を使用して、TCP および TLS ターゲットグループのクライアント IP の保存を有効または無効にできます。

**デフォルト設定**
+ インスタンスタイプのターゲットグループ: 有効
+ IP タイプのターゲットグループ (UDP、TCP\_UDP、QUIC、TCP\_QUIC): 有効
+ IP タイプのターゲットグループ (TCP、TLS): 無効

**クライアント IP 保存が有効になっている場合**  
次の表は、クライアント IP 保存が有効になっているときにターゲットが受け取る IP アドレスを示しています。


| ターゲット | IPv4 クライアントリクエスト | IPv6 クライアントリクエスト | 
| --- | --- | --- | 
| インスタンスタイプ (IPv4) | クライアント IPv4 アドレス | ロードバランサー IPv4 アドレス | 
| IP タイプ (IPv4) | クライアント IPv4 アドレス | ロードバランサー IPv4 アドレス | 
| IP タイプ (IPv6) | ロードバランサー IPv6 アドレス | クライアント IPv6 アドレス | 

**クライアント IP 保存が無効になっている場合**  
次の表は、クライアント IP 保存が無効になっているときにターゲットが受け取る IP アドレスを示しています。


| ターゲット | IPv4 クライアントリクエスト | IPv6 クライアントリクエスト | 
| --- | --- | --- | 
| インスタンスタイプ (IPv4) | ロードバランサー IPv4 アドレス | ロードバランサー IPv4 アドレス | 
| IP タイプ (IPv4) | ロードバランサー IPv4 アドレス | ロードバランサー IPv4 アドレス | 
| IP タイプ (IPv6) | ロードバランサー IPv6 アドレス | ロードバランサー IPv6 アドレス | 

**要件と考慮事項**
+ クライアント IP 保存の変更は、新しい TCP 接続に対してのみ有効です。
+ クライアント IP 保存を有効にした場合、トラフィックは Network Load Balancer からターゲットに直接フローする必要があります。ターゲットは、ロードバランサーと同じ VPC 内、または同じリージョン内のピア接続 VPC 内に配置されている必要があります。
+ ターゲットがトランジットゲートウェイを経由して到達される場合、クライアント IP の保存はサポートされません。
+ ターゲットが Network Load Balancer と同じ VPC にあっても、ゲートウェイロード バランサーエンドポイントを使用して Network Load Balancer とターゲット (インスタンスまたは IP アドレス) の間のトラフィックを検査する場合、クライアント IP の保持はサポートされません。
+ インスタンスタイプが C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、T1である場合、クライアント IP 保存をサポートしません。クライアント IP 保存を無効にして、これらのインスタンスタイプを IP アドレスとして登録することをお勧めします。
+ クライアント IP の保存は、 AWS PrivateLinkからのインバウンドトラフィックには影響しません。 AWS PrivateLink トラフィックの送信元 IP アドレスは、常に Network Load Balancer のプライベート IP アドレスです。
+ ターゲットグループに、 AWS PrivateLink ネットワークインターフェイスまたは別のNetwork Load Balancer のネットワークインターフェイスが含まれている場合、クライアント IP の保存はサポートされません。これにより、それらのターゲットとの通信が失われます。
+ クライアント IP 保存は、IPv6 から IPv4 に変換されたトラフィックには影響しません。このタイプのトラフィックの送信元 IP アドレスは、常に Network Load Balancer のプライベート IP アドレスです。
+ Application Load Balancer タイプでターゲットを指定すると、すべての着信トラフィックのクライアント IP が Network Load Balancer によって保存され、Application Load Balancer に送信されます。次に、Application Load Balancer は、それをターゲットに送信する前にクライアント IP を `X-Forwarded-For` リクエストに追加します。
+ NAT ループバック（ヘアピニングとも呼ばれる）は、クライアント IP 保存が有効になっている場合はサポートされません。これは、内部 Network Load Balancer を使用していて、Network Load Balancer の背後に登録されたターゲットが同じ Network Load Balancer への接続を作成する場合に発生します。接続を作成しようとしているターゲットに接続をルーティングして、接続エラーが発生する可能性があります。同じ Network Load Balancer の背後にあるターゲットから Network Load Balancer に接続しないことをお勧めします。または、クライアント IP 保存を無効にすることで、この種の接続エラーを防ぐこともできます。クライアント IP アドレスが必要な場合は、Proxy Protocol v2 を使用して取得できます。詳細については、「[Proxy Protocol](#proxy-protocol)」を参照してください。
+ クライアント IP の保存が無効な場合、Network Load Balancer は一意の各ターゲット (IP アドレスとポート) に対して 55,000 の同時接続または 1 分あたり約 55,000 の接続をサポートします。これらの接続数を超えた場合、ポート割り当てエラーが発生する可能性が高くなり、新しい接続を確立できなくなることがあります。詳細については、「[バックエンドフローのポート割り当てエラー](load-balancer-troubleshooting.md#port-allocation-errors-privatelink)」を参照してください。

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

**クライアント IP 保存を変更するには**

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

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

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

1. **[属性]** タブで **[編集]** を選択し、**[トラフィック設定]** ペインを見つけます。

1. クライアント IP 保存を有効にするには、**[Preserve client IP addresses]** (クライアント IP アドレスの保持) をオンにします。クライアント IP 保存を無効にするには、**[Preserve client IP addresses]** (クライアント IP アドレスの保持) をオフにします。

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

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

**クライアント IP 保護を有効にするには**  
`preserve_client_ip.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=preserve_client_ip.enabled,Value={{true}}"
```

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

**クライアント IP 保護を有効にするには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`preserve_client_ip.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "preserve_client_ip.enabled"
          Value: "{{true}}"
```

------

## 登録解除の遅延
<a name="deregistration-delay"></a>

ターゲットを登録解除すると、ロードバランサーはターゲットへの新しい接続の作成を停止します。ロードバランサーは Connection Draining を使用して、既存の接続での処理中のトラフィックを完了させます。登録解除されたターゲットが正常であり、既存の接続がアイドル状態でない場合、ロードバランサーはそのターゲットのトラフィックの送信を継続することができます。既存の接続が確実に終了されるようにするには、以下を行います。接続終了のターゲットグループ属性を有効にする、インスタンスの登録を解除する前にインスタンスが異常であることを確認する、クライアント接続を定期的に閉じる。

登録解除するターゲットの初期状態は `draining` です。この間、ターゲットは新しい接続の受信を停止します。ただし、設定の伝播の遅延により、ターゲットは引き続き接続を受信する可能性があります。デフォルトでは、ロードバランサーは登録解除するターゲットの状態を 300 秒後に `unused` に変更します。登録解除するターゲットの状態が `unused` に変わるのをロードバランサーが待機する時間の長さを変更するには、登録解除の遅延値を更新します。リクエストを確実に完了するには、120 秒以上の値を指定することをお勧めします。QUIC トラフィックの場合、値は常に 300 秒であり、調整できません。

接続終了のターゲットグループ属性を有効にすると、登録解除されたターゲットへの接続は、登録解除タイムアウトの終了直後に閉じられます。

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

**登録解除遅延属性を変更するには**

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

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

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

1. [**Attributes**] タブで、[**Edit**] を選択します。

1. 登録解除タイムアウトを変更するには、[**登録解除の遅延 **] に新しい値を入力します。ターゲットの登録解除後に既存の接続が閉じられるようにするには、**[Terminate connections on deregistration]** (登録解除時に接続終了) を選択します。

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

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

**登録解除遅延属性を変更するには**  
`deregistration_delay.timeout_seconds` および `deregistration_delay.connection_termination.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes \
      "Key=deregistration_delay.timeout_seconds,Value={{60}}" \
      "Key=deregistration_delay.connection_termination.enabled,Value={{true}}"
```

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

**登録解除遅延属性を変更するには**  
[AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`deregistration_delay.timeout_seconds` および `deregistration_delay.connection_termination.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "deregistration_delay.timeout_seconds"
          Value: "{{60}}" 
        - Key: "deregistration_delay.connection_termination.enabled"
          Value: "{{true}}"
```

------

## Proxy Protocol
<a name="proxy-protocol"></a>

Network Load Balancer は、プロキシプロトコルバージョン 2 を使用して、送信元と送信先などの追加の接続情報を送信します。Proxy Protocol バージョン 2 は、Proxy Protocol ヘッダーのバイナリエンコードを提供します。

ロードバランサーは、TCP リスナーを使用して TCP データにプロキシプロトコルヘッダーを付加します。既存のデータは破棄または上書きされません。これには、ネットワークパスのクライアントまたは他のプロキシ、ロードバランサー、またはサーバーによって送信された受信プロキシプロトコルヘッダーが含まれます。したがって、複数のプロキシプロトコルヘッダーを受け取ることができます。また、Network Load Balancer の外部のターゲットへの別のネットワークパスが存在する場合、最初のプロキシプロトコルヘッダーは、ロードバランサーからのものでない可能性があります。

TLS リスナーは、クライアントまたはその他のプロキシから送信されたプロキシプロトコルヘッダーを含む受信接続をサポートしていません。

QUIC トラフィックはプロキシプロトコルバージョン 2 をサポートしていません。

IP アドレスでターゲットを指定すると、アプリケーションに提供される送信元 IP アドレスは、ターゲットグループのプロトコルに応じて次のように異なります。
+ TCP と TLS: デフォルトでは、クライアント IP 保存は無効になっており、アプリケーションに提供される送信元 IP アドレスはロードバランサーノードのプライベート IP アドレスです。クライアントの IP アドレスを保存するには、ターゲットが同じ VPC 内またはピア接続 VPC 内にあり、クライアント IP 保存が有効になっていることを確認します。クライアントの IP アドレスが必要で、これらの条件が満たされていない場合は、プロキシプロトコルを有効にし、プロキシプロトコルヘッダーからクライアント IP アドレスを取得します。
+ UDP と TCP\_UDP: クライアント IP 保存はこれらのプロトコルではデフォルトで有効になっており、無効にすることはできないため、送信元 IP アドレスはクライアントの IP アドレスです。インスタンス ID でターゲットを指定すると、アプリケーションに提供される送信元 IP アドレスは、クライアントの IP アドレスになります。ただし、必要に応じて Proxy Protocol を有効にし、Proxy Protocol ヘッダーからクライアント IP アドレスを取得できます。

### ヘルスチェックの接続
<a name="health-check-connections"></a>

Proxy Protocol を有効にした後、Proxy Protocol ヘッダーも、ロードバランサーからのヘルスチェック接続に含まれます。ただし、ヘルスチェック接続では、クライアント接続情報は Proxy Protocol ヘッダーでは送信されません。

ターゲットがプロキシプロトコルヘッダーを解析できない場合、ヘルスチェックに失敗する可能性があります。たとえば、HTTP 400: Bad request というエラーを返す場合があります。

### VPC エンドポイントサービス
<a name="custom-tlv"></a>

[VPC エンドポイントサービス](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html)を通じたサービスコンシューマーからのトラフィックの場合、アプリケーションに提供される送信元の IP アドレスは、ロードバランサーノードのプライベート IP アドレスです。アプリケーションでサービスコンシューマーの IP アドレスが必要な場合は、Proxy Protocol を有効にし、Proxy Protocol ヘッダーからその IP アドレスを取得します。

Proxy Protocol ヘッダーには、エンドポイントの ID も含まれています。この情報は、次のようにカスタム Type-Length-Value (TLV) ベクトルを使用してエンコードされます。



- ** タイプ **
  - **長さ (オクテット単位):** 1
  - **説明:** PP2\_TYPE\_AWS (0xEA)

- ** 長さ。 **
  - **長さ (オクテット単位):** 2
  - **説明:** 値の長さ

- ** 値 **
  - **長さ (オクテット単位):** 1 / **説明:** PP2\_SUBTYPE\_AWS\_VPCE\_ID (0x01)
  - **長さ (オクテット単位):** 変数 (値の長さから 1 を引いた値) / **説明:** エンドポイントの ID



TLV タイプ 0xEA を解析する例については、[https://github.com/aws/elastic-load-balancing-tools/tree/master/proprot](https://github.com/aws/elastic-load-balancing-tools/tree/master/proprot) を参照してください。

### Proxy Protocol の有効化
<a name="enable-proxy-protocol"></a>

ターゲットグループで Proxy Protocol を有効にする前に、アプリケーションが Proxy Protocol v2 ヘッダーを予期し、解析できることを確認します。それ以外の場合、アプリケーションは失敗する可能性があります。詳細については、「[Proxy Protocol バージョン 1 および 2](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt)」を参照してください。

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

**プロキシプロトコルバージョン 2 を有効にするには**

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

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

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

1. [**Attributes**] タブで、[**Edit**] を選択します。

1. [**属性の編集**] ページで、[**プロキシプロトコル v2**] を選択します。

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

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

**プロキシプロトコルバージョン 2 を有効にするには**  
`proxy_protocol_v2.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=proxy_protocol_v2.enabled,Value={{true}}"
```

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

**プロキシプロトコルバージョン 2 を有効にするには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`proxy_protocol_v2.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "proxy_protocol_v2.enabled"
          Value: "{{true}}"
```

------

## スティッキーセッション
<a name="sticky-sessions"></a>

スティッキーセッションは、クライアントトラフィックをターゲットグループ内の同じターゲットにルーティングするためのメカニズムです。これは、クライアントに連続したエクスペリエンスを提供するために状態情報を維持するサーバーに役立ちます。

**考慮事項**
+ スティッキーセッションを使用すると、接続とフローの分散が不均一になり、ターゲットの可用性に影響する場合があります。たとえば、同じ NAT デバイスの背後にあるすべてのクライアントの送信元 IP アドレスは同じです。したがって、これらのクライアントからのすべてのトラフィックは、同じターゲットにルーティングされます。
+ いずれかのターゲットのヘルス状態が変更されたり、ターゲットグループに対してターゲットを登録または登録解除したりすると、ロードバランサーによってターゲットグループのスティッキーセッションがリセットされる場合があります。
+ ターゲットグループに対して維持属性が有効になっている場合、パッシブヘルスチェックはサポートされません。詳細については、「[ターゲットグループのヘルスチェック](target-group-health-checks.md)」を参照してください。
+ スティッキーセッションは、TLS または QUIC リスナーでサポートされません。

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

**スティッキーセッションを有効にするには**

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

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

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

1. [**Attributes**] タブで、[**Edit**] を選択します。

1. **[Target selection configuration]** (ターゲット選択設定) で、**[Stickiness]** (スティッキネス) をオンにします。

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

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

**スティッキーセッションを有効にするには**  
`stickiness.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=stickiness.enabled,Value={{true}}"
```

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

**スティッキーセッションを有効にするには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`stickiness.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "stickiness.enabled"
          Value: "{{true}}"
```

------

## ターゲットグループに対するクロスゾーン負荷分散
<a name="target-group-cross-zone"></a>

ロードバランサーのノードは、クライアントからのリクエストを登録済みターゲットに分散させます。クロスゾーンロードバランサーがオンの場合、各ロードバランサーノードは、すべての登録済みアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散します。クロスゾーンロードバランサーがオフの場合、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録済みターゲットのみにトラフィックを分散します。これは、ゾーンの障害ドメインがリージョナルドメインよりも優先される場合に使用できます。これにより、正常なゾーンが異常なゾーンの影響を受けないようにしたり、全体的なレイテンシーを改善したりすることができます。

Network Load Balancer では、クロスゾーンロードバランサーは、ロードバランサーレベルでのデフォルトで無効になっていますが、いつでも有効にすることができます。ターゲットグループの場合、デフォルトではロードバランサー設定を使用しますが、ターゲットグループレベルでクロスゾーンロードバランサーを明示的に有効または無効にすることでデフォルトを上書きできます。

**考慮事項**
+ Network Load Balancer のクロスゾーン負荷分散を有効にする場合、EC2 データ転送料金が適用されます。詳細については、「*AWS Data Exports ユーザーガイド*」の「[データ転送料金について](https://docs.aws.amazon.com/cur/latest/userguide/cur-data-transfers-charges.html)」を参照してください。
+ ターゲットグループ設定によって、ターゲットグループのロードバランサー動作が決まります。たとえば、クロスゾーンロードバランサーがロードバランサーレベルで有効で、ターゲットグループレベルで無効になっている場合、ターゲットグループに送信されるトラフィックはアベイラビリティーゾーン間でルーティングされません。
+ クロスゾーンロードバランサーが無効の場合は、各ゾーンが関連するワークロードを処理できるように、各ロードバランサーのアベイラビリティーゾーンに十分なターゲット容量があることを確認してください。
+ クロスゾーンロードバランサーが無効になっている場合は、すべてのターゲットグループが同じアベイラビリティーゾーンの参加になっていることを確認してください。空のアベイラビリティーゾーンは異常であるとみなされます。
+ ターゲットグループタイプが `instance` または `ip` の場合、ターゲットグループレベルでクロスゾーンロードバランシングを有効または無効にすることができます。ターゲットグループタイプが `alb` の場合、ターゲットグループは常にロードバランサーからクロスゾーンロードバランシング設定を継承します。

ロードバランサーレベルのクロスゾーンロードバランシングの有効化について詳しくは、「[クロスゾーンロードバランサー](edit-load-balancer-attributes.md#load-balancer-cross-zone)」を参照してください。

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

**ターゲットグループのクロスゾーンロードバランサーを有効にするには**

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

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

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

1. **[属性]** タブで、**[編集]** を選択します。

1. **[Edit target group attributes]** (ターゲットグループ属性の編集) ページで、**[Cross-zone load balancing]** (クロスゾーンロードバランサー) で **[On]** (オン) を選択します。

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

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

**ターゲットグループのクロスゾーンロードバランサーを有効にするには**  
`load_balancing.cross_zone.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=load_balancing.cross_zone.enabled,Value={{true}}"
```

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

**ターゲットグループのクロスゾーンロードバランサーを有効にするには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`load_balancing.cross_zone.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "load_balancing.cross_zone.enabled"
          Value: "{{true}}"
```

------

## 異常のあるターゲットの接続終了
<a name="unhealthy-target-connection-termination"></a>

接続の終了はデフォルトで有効になっています。Network Load Balancer のターゲットが設定されたヘルスチェックに失敗し、正常でないと見なされると、ロードバランサーは確立された接続を終了し、ターゲットへの新しい接続のルーティングを停止します。接続終了を無効にしても、ターゲットは異常と見なされて新しい接続を受信しませんが、確立された接続はアクティブなままなので、正常に閉じることができます。

異常なターゲットの接続終了は、ターゲットグループレベルで設定されます。

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

**接続終了属性を変更するには**

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

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

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

1. [**Attributes**] タブで、[**Edit**] を選択します。

1. [**Target unhealthy state management**] の下で、[**Terminate connections when targets become unhealthy**] を有効にするか無効にするかを選択します。

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

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

**接続終了属性を無効にするには**  
`target_health_state.unhealthy.connection_termination.enabled` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=target_health_state.unhealthy.connection_termination.enabled,Value={{false}}"
```

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

**接続終了属性を無効にするには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`target_health_state.unhealthy.connection_termination.enabled` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "target_health_state.unhealthy.connection_termination.enabled"
          Value: "{{false}}"
```

------

## 異常なドレイニング間隔
<a name="unhealthy-draining-interval"></a>

`unhealthy.draining` 状態のターゲットは異常と見なされ、新しい接続を受信しませんが、設定された間隔の間は確立された接続が保持されます。異常な接続間隔によって、ターゲットが `unhealthy` 状態になるまで `unhealthy.draining` 状態のまま維持する時間が決まります。異常な接続間隔の間にターゲットがヘルスチェックに合格すると、その状態は再び `healthy` になります。登録解除がトリガーされると、ターゲットの状態が `draining` になり、登録解除遅延タイムアウトが開始されます。

**要件**  
異常なドレイニング間隔を有効にする前に、接続の終了を無効にする必要があります。

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

**異常なドレイニング間隔を変更するには**

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

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

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

1. [**Attributes**] タブで、[**Edit**] を選択します。

1. **[Target unhealthy state management]** (ターゲットの異常状態の管理) で、**[Terminate connections when targets become unhealthy]** (ターゲットが異常になったら接続を終了する) がオフになっていることを確認します。

1. **[異常なドレイニング間隔]** の値を入力します。

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

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

**異常なドレイニング間隔を変更するには**  
`target_health_state.unhealthy.draining_interval_seconds` 属性を指定して [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) コマンドを使用します。

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn {{target-group-arn}} \
    --attributes "Key=target_health_state.unhealthy.draining_interval_seconds,Value={{60}}"
```

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

**異常なドレイニング間隔を変更するには**  
[AWS::ElasticLoadBalancingV2::TargetGroup ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) リソースを更新して、`target_health_state.unhealthy.draining_interval_seconds` 属性を含めます。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: TCP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "target_health_state.unhealthy.draining_interval_seconds"
          Value: "{{60}}"
```

------