

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

# Network Load Balancer の属性を編集する
<a name="edit-load-balancer-attributes"></a>

Network Load Balancer を作成したら、その属性を編集できます。

**Topics**
+ [削除保護](#deletion-protection)
+ [クロスゾーンロードバランサー](#load-balancer-cross-zone)
+ [アベイラビリティゾーン DNS アフィニティー](#zonal-dns-affinity)
+ [セカンダリ IP アドレス](#secondary-ip-addresses)

## 削除保護
<a name="deletion-protection"></a>

Network Load Balancer が誤って削除されるのを防ぐために、削除保護を有効にできます。デフォルトでは、Network Load Balancer で削除保護が無効になっています。

Network Load Balancer の削除保護を有効にした場合、Network Load Balancer を削除する前に無効にする必要があります。

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

**削除保護を有効または無効にするには**

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

1. ナビゲーションペインで、[**ロードバランサー**] を選択します。

1. Network Load Balancer の名前を選択して、その詳細ページを開きます。

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

1. **[保護]** で、**[削除保護]** を有効または無効にします。

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

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

**削除保護を有効または無効にするには**  
`deletion_protection.enabled` 属性を指定して [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=deletion_protection.enabled,Value=true"
```

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

**削除保護を有効または無効にするには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、`deletion_protection.enabled` 属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-nlb
      Type: network
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "deletion_protection.enabled"
          Value: "true"
```

------

## クロスゾーンロードバランサー
<a name="load-balancer-cross-zone"></a>

Network Load Balancer では、クロスゾーンロードバランサーは、ロードバランサーレベルでのデフォルトでオフになっていますが、いつでもオンにすることができます。ターゲットグループの場合、デフォルトではロードバランサー設定を使用しますが、ターゲットグループレベルでクロスゾーンロードバランサーを明示的にオンまたはオフにすることでデフォルトを上書きできます。詳細については、「[ターゲットグループに対するクロスゾーン負荷分散](edit-target-group-attributes.md#target-group-cross-zone)」を参照してください。

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

**ロードバランサーのクロスゾーン負荷分散を有効または無効にするには**

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

1. ナビゲーションペインの [**Load Balancing**] で、[**Load Balancers**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

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

1. **[Edit load balancer attributes]** (ロードバランサー属性の編集) ページで、**[Cross-zone load balancing]** (クロスゾーンロードバランサー) をオンまたはオフにします。

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

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

**ロードバランサーのクロスゾーン負荷分散を有効または無効にするには**  
`load_balancing.cross_zone.enabled` 属性を指定して [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=load_balancing.cross_zone.enabled,Value=true"
```

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

**ロードバランサーのクロスゾーン負荷分散を有効または無効にするには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、`load_balancing.cross_zone.enabled` 属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-nlb
      Type: network
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "load_balancing.cross_zone.enabled"
          Value: "true"
```

------

## アベイラビリティゾーン DNS アフィニティー
<a name="zonal-dns-affinity"></a>

デフォルトのクライアントルーティングポリシーを使用すると、Network Load Balancer DNS 名に送信されたリクエストには、正常な Network Load Balancer の IP アドレスがすべて届きます。これにより、Network Load Balancer のアベイラビリティーゾーン全体にクライアント接続が分散されます。アベイラビリティーゾーンのアフィニティールーティングポリシーでは、クライアント DNS クエリは自身のアベイラビリティーゾーン内の Network Load Balancer の IP アドレスを優先します。これにより、クライアントがターゲットに接続する際にアベイラビリティーゾーンの境界を越える必要がなくなるため、レイテンシーと回復性の両方が向上します。

アベイラビリティーゾーンのアフィニティールーティングポリシーは、Route 53 Resolver を使用してネットワークロードバランサーの DNS 名を解決するクライアントにのみ適用されます。詳細については、「*Amazon Route 53 デベロッパーガイド*」の「[Amazon Route 53 Resolver とは](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)」を参照してください。

**Route 53 リゾルバーを使用してネットワークロードバランサーで使用できるクライアントルーティングポリシー:**
+ **アベイラビリティーゾーンのアフィニティ** – *100% のゾーンアフィニティ*

  クライアントの DNS クエリでは、自身のアベイラビリティーゾーンの Network Load Balancer の IP アドレスが優先されます。自身のゾーンに正常な Network Load Balancer の IP アドレスがない場合、クエリは他のゾーンで解決される可能性があります。
+ **部分的アベイラビリティーゾーンのアフィニティ** – *85% のゾーンアフィニティ*

  クライアントの DNS クエリの 85% は自身のアベイラビリティーゾーンにある Network Load Balancer の IP アドレスを優先し、残りのクエリは正常な任意のゾーンで解決されます。自身のゾーンに正常な IP アドレスがない場合、クエリは他の正常なゾーンで解決される可能性があります。どのゾーンにも正常な IP アドレスがない場合、クエリは任意のゾーンで解決されます。
+ **任意のアベイラビリティーゾーン** (デフォルト) – *0% のゾーンアフィニティ*

  クライアント DNS クエリは、すべての Network Load Balancer アベイラビリティーゾーンの正常な Network Load Balancer の IP アドレスで解決されます。

アベイラビリティーゾーンのアフィニティはクライアントから Network Load Balancer にリクエストをルーティングするのに役立ち、クロスゾーン負荷分散は Network Load Balancer からターゲットにリクエストをルーティングするのに役立ちます。アベイラビリティーゾーンのアフィニティを使用するときは、クロスゾーン負荷分散をオフにして、クライアントからターゲットへの Network Load Balancer トラフィックが同じアベイラビリティーゾーン内に保持されるようにします。この設定では、クライアントトラフィックは同じ Network Load Balancer アベイラビリティーゾーンに送信されるため、各アベイラビリティーゾーンで個別にスケーリングするようにアプリケーションを設定することをお勧めします。これは、アベイラビリティーゾーンあたりのクライアント数、またはアベイラビリティーゾーンあたりのトラフィックが同じでない場合の重要な考慮事項です。詳細については、「[ターゲットグループに対するクロスゾーン負荷分散](edit-target-group-attributes.md#target-group-cross-zone)」を参照してください。

アベイラビリティーゾーンに異常があると見なされた場合や、ゾーンシフトが開始された場合は、フェールオープンが有効でない限り、ゾーン IP アドレスは異常と見なされ、クライアントには返されません。DNS レコードがオープンに失敗しても、アベイラビリティーゾーンのアフィニティは維持されます。これにより、アベイラビリティーゾーンの独立性が保たれ、ゾーン間で発生する可能性のある障害を防ぐことができます。

アベイラビリティーゾーンのアフィニティを使用すると、アベイラビリティーゾーン間でバランスが崩れることが予想されます。各アベイラビリティーゾーンのワークロードをサポートするために、ターゲットがゾーンレベルでスケーリングされていることを確認することをお勧めします。これらの不均衡が著しい場合は、アベイラビリティーゾーンのアフィニティをオフにすることをお勧めします。これにより、60 秒以内、つまり DNS TTL の範囲内で、すべての Network Load Balancer のアベイラビリティーゾーン間でクライアント接続を均等に分散できます。

**アベイラビリティゾーンアフィニティを使用する前に、以下の点を考慮してください。**
+ アベイラビリティーゾーンのアフィニティにより、Route 53 Resolver を使用しているすべての Network Load Balancer クライアントに変化が生じます。
  + クライアントは、ゾーンローカル DNS 解決とマルチゾーン DNS 解決を区別できません。アベイラビリティーゾーンのアフィニティが判断します。
  + アベイラビリティーゾーンのアフィニティの影響を受けるタイミングや、どの IP アドレスがどのアベイラビリティーゾーンにあるかを知る信頼できる方法がクライアントには提供されません。
+ Network Load Balancer と Route 53 Resolver でアベイラビリティーゾーンのアフィニティを使用する場合は、クライアントが独自のアベイラビリティーゾーンで Route 53 Resolver インバウンドエンドポイントを使用することをお勧めします。
+ DNS ヘルスチェックにより完全に異常であると判断され、DNS から削除されるまで、クライアントはゾーンローカル IP アドレスに割り当てられたままになります。
+ クロスゾーン負荷分散がオンになっているアベイラビリティーゾーンのアフィニティを使用すると、アベイラビリティーゾーン間のクライアント接続の分散が不均衡になる可能性があります。各アベイラビリティーゾーンで個別にスケールするようにアプリケーションスタックを設定し、アプリケーションスタックがゾーンクライアントのトラフィックをサポートできるようにすることをお勧めします。
+ クロスゾーン負荷分散がオンになっている場合、Network Load Balancer はクロスゾーンの影響を受けます。
+ Network Load Balancer の各アベイラビリティーゾーンの負荷は、クライアントのリクエストのゾーンロケーションに比例します。どのアベイラビリティーゾーンで、いくつのクライアントを実行するかを設定しない場合は、各アベイラビリティーゾーンを事後的に個別にスケーリングする必要があります。

### モニタリング
<a name="zonal-affinity-monitoring"></a>

ゾーン Network Load Balancer メトリクスを使用して、アベイラビリティーゾーン間の接続の分散を追跡することをお勧めします。メトリクスを使用して、ゾーンごとの新規接続数およびアクティブ接続数を表示できます。

次の点を追跡することをおすすめします。
+ **`ActiveFlowCount`** – クライアントからターゲットへの同時フロー (または接続) の合計数。
+ **`NewFlowCount`** – 期間内にクライアントからターゲットに確立された新しいフロー (または接続) の合計数。
+ **`HealthyHostCount`** – 正常と見なされるターゲットの数。
+ **`UnHealthyHostCount`** – 異常とみなされるターゲットの数。

詳細については、[Network Load Balancer の CloudWatch メトリクス](load-balancer-cloudwatch-metrics.md)を参照してください。

### アベイラビリティーゾーンのアフィニティを有効にする
<a name="enable-zonal-affinity"></a>

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

**アベイラビリティーゾーンのアフィニティを有効にするには**

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

1. ナビゲーションペインで、[**ロードバランサー**] を選択します。

1. Network Load Balancer の名前を選択して、その詳細ページを開きます。

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

1. [**アベイラビリティーゾーンのルーティング設定**] の [**クライアントルーティングポリシー (DNS レコード)**] で、[**アベイラビリティーゾーンのアフィニティ**] または [**Partial Availability Zone affinity**] (部分的アベイラビリティーゾーンのアフィニティ) を選択します。

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

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

**アベイラビリティーゾーンのアフィニティを有効にするには**  
`dns_record.client_routing_policy` 属性を指定して [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=dns_record.client_routing_policy,Value=partial_availability_zone_affinity"
```

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

**アベイラビリティーゾーンのアフィニティを有効にするには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、`dns_record.client_routing_policy` 属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-nlb
      Type: network
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "dns_record.client_routing_policy"
          Value: "partial_availability_zone_affinity"
```

------

## セカンダリ IP アドレス
<a name="secondary-ip-addresses"></a>

[ポート割り当てエラー](load-balancer-troubleshooting.md#port-allocation-errors-privatelink)が発生し、ターゲットグループにターゲットを追加して解決できない場合は、ロードバランサーネットワークインターフェイスにセカンダリ IP アドレスを追加できます。ロードバランサーが有効になっているゾーンごとに、ロードバランサーサブネットから IPv4 アドレスを選択し、対応するネットワークインターフェイスに割り当てます。これらのセカンダリ IP アドレスは、ターゲットとの接続を確立するために使用されます。また、ヘルスチェックトラフィックにも使用されます。ポート割り当てエラーが解決されない場合にのみ、開始するセカンダリ IP アドレスを 1 つ追加し、`PortAllocationErrors` メトリクスをモニタリングして、別のセカンダリ IP アドレスを追加することをお勧めします。

**警告**  
セカンダリ IP アドレスを追加した後に、削除することはできません。セカンダリ IP アドレスを解放する唯一の方法は、ロードバランサーを削除することです。セカンダリ IP アドレスを追加する前に、ロードバランサーサブネットに十分な使用可能な IPv4 アドレスがあることを確認します。

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

**セカンダリ IP アドレスを追加するには**

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

1. ナビゲーションペインで、[**ロードバランサー**] を選択します。

1. Network Load Balancer の名前を選択して、その詳細ページを開きます。

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

1. **[特殊ケース属性]** を展開し、**[サブネットごとに自動で割り当てられたセカンダリ IP アドレス]** 属性のロックを解除して、セカンダリ IP アドレスの数を選択します。

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

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

**セカンダリ IP アドレスを追加するには**  
`secondary_ips.auto_assigned.per_subnet` 属性を指定して [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=secondary_ips.auto_assigned.per_subnet,Value=1"
```

[describe-network-interfaces](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-network-interfaces.html) コマンドを使用して、ロードバランサーネットワークインターフェイスの IPv4 アドレスを取得できます。`--filters` パラメータは Network Load Balancer のネットワークインターフェイスに結果をスコープし、`--query` パラメータが指定された名前のロードバランサーに結果をスコープして、指定されたフィールドのみを表示します。必要に応じて追加のフィールドを含めることができます。

```
aws elbv2 describe-network-interfaces \
    --filters "Name=interface-type,Values=network_load_balancer" \
    --query "NetworkInterfaces[?contains(Description,'my-nlb')].{ID:NetworkInterfaceId,AZ:AvailabilityZone,Addresses:PrivateIpAddresses[*]}"
```

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

**セカンダリ IP アドレスを追加するには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、`secondary_ips.auto_assigned.per_subnet` 属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-nlb
      Type: network
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "secondary_ips.auto_assigned.per_subnet"
          Value: "1"
```

------