翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Network Load Balancer のターゲットグループ属性を編集する
Network Load Balancer のターゲットグループを作成したら、そのターゲットグループ属性を編集できます。
クライアント IP の保存
Network Load Balancer は、バックエンドターゲットにリクエストをルーティングするときに、クライアントのソース IP アドレスを保持できます。クライアント IP 保存を無効にした場合、Network Load Balancer のプライベート IP アドレスが送信元 IP アドレスになります。
デフォルトでは、UDP プロトコルと TCP_UDP プロトコルを使用するインスタンスおよび IP タイプのターゲットグループに対して、クライアント IP の保存が有効になっています (無効にすることはできません)。ただし、preserve_client_ip.enabled
ターゲットグループ属性を使用して、TCP および TLS ターゲットグループのクライアント IP の保存を有効または無効にできます。
デフォルト設定
-
インスタンスタイプのターゲットグループ: 有効
-
IP タイプのターゲットグループ (UDP、TCP_UDP): 有効
-
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 にある場合でも、Gateway Load Balancer エンドポイントを使用して Network Load Balancer 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」を参照してください。
-
クライアント IP の保存が無効な場合、Network Load Balancer は一意の各ターゲット (IP アドレスとポート) に対して 55,000 の同時接続または 1 分あたり約 55,000 の接続をサポートします。これらの接続数を超えた場合、ポート割り当てエラーが発生する可能性が高くなり、新しい接続を確立できなくなることがあります。詳細については、「バックエンドフローのポート割り当てエラー」を参照してください。
登録解除の遅延
ターゲットを登録解除すると、ロードバランサーはターゲットへの新しい接続の作成を停止します。ロードバランサーは Connection Draining を使用して、既存の接続での処理中のトラフィックを完了させます。登録解除されたターゲットが正常であり、既存の接続がアイドル状態でない場合、ロードバランサーはそのターゲットのトラフィックの送信を継続することができます。既存の接続が確実に終了されるようにするには、以下を行います。接続終了のターゲットグループ属性を有効にする、インスタンスの登録を解除する前にインスタンスが異常であることを確認する、クライアント接続を定期的に閉じる。
登録解除するターゲットの初期状態は draining
です。この間、ターゲットは新しい接続の受信を停止します。ただし、設定の伝播の遅延により、ターゲットは引き続き接続を受信する可能性があります。デフォルトでは、ロードバランサーは登録解除するターゲットの状態を 300 秒後に unused
に変更します。登録解除するターゲットの状態が unused
に変わるのをロードバランサーが待機する時間の長さを変更するには、登録解除の遅延値を更新します。リクエストを確実に完了するには、120 秒以上の値を指定することをお勧めします。
接続終了のターゲットグループ属性を有効にすると、登録解除されたターゲットへの接続は、登録解除タイムアウトの終了直後に閉じられます。
Proxy Protocol
Network Load Balancer は、プロキシプロトコルバージョン 2 を使用して、送信元と送信先などの追加の接続情報を送信します。Proxy Protocol バージョン 2 は、Proxy Protocol ヘッダーのバイナリエンコードを提供します。
ロードバランサーは、TCP リスナーを使用して TCP データにプロキシプロトコルヘッダーを付加します。既存のデータは破棄または上書きされません。これには、ネットワークパスのクライアントまたは他のプロキシ、ロードバランサー、またはサーバーによって送信された受信プロキシプロトコルヘッダーが含まれます。したがって、複数のプロキシプロトコルヘッダーを受け取ることができます。また、Network Load Balancer の外部にあるターゲットへの別のネットワークパスがある場合、最初のプロキシプロトコルヘッダーはロードバランサーからのものでない可能性があります。
TLS リスナーは、クライアントまたはその他のプロキシから送信されたプロキシプロトコルヘッダーを含む受信接続をサポートしていません。
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 アドレスを取得できます。
ヘルスチェックの接続
Proxy Protocol を有効にした後、Proxy Protocol ヘッダーも、ロードバランサーからのヘルスチェック接続に含まれます。ただし、ヘルスチェック接続では、クライアント接続情報は Proxy Protocol ヘッダーでは送信されません。
ターゲットがプロキシプロトコルヘッダーを解析できない場合、ヘルスチェックに失敗する可能性があります。たとえば、HTTP 400: Bad request というエラーを返す場合があります。
VPC エンドポイントサービス
VPC エンドポイントサービスを通じたサービスコンシューマーからのトラフィックの場合、アプリケーションに提供される送信元の 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
Proxy Protocol の有効化
ターゲットグループで Proxy Protocol を有効にする前に、アプリケーションが Proxy Protocol v2 ヘッダーを予期し、解析できることを確認します。それ以外の場合、アプリケーションは失敗する可能性があります。詳細については、「Proxy Protocol バージョン 1 および 2
スティッキーセッション
スティッキーセッションは、クライアントトラフィックをターゲットグループ内の同じターゲットにルーティングするためのメカニズムです。これは、クライアントに連続したエクスペリエンスを提供するために状態情報を維持するサーバーに役立ちます。
考慮事項
-
スティッキーセッションを使用すると、接続とフローの分散が不均一になり、ターゲットの可用性に影響する場合があります。たとえば、同じ NAT デバイスの背後にあるすべてのクライアントの送信元 IP アドレスは同じです。したがって、これらのクライアントからのすべてのトラフィックは、同じターゲットにルーティングされます。
-
いずれかのターゲットのヘルス状態が変更されたり、ターゲットグループに対してターゲットを登録または登録解除したりすると、ロードバランサーによってターゲットグループのスティッキーセッションがリセットされる場合があります。
-
ターゲットグループに対して維持属性が有効になっている場合、パッシブヘルスチェックはサポートされません。詳細については、「ターゲットグループのヘルスチェック」を参照してください。
-
スティッキーセッションは、 TLS リスナーでサポートされません。
ターゲットグループに対するクロスゾーン負荷分散
ロードバランサーのノードは、クライアントからのリクエストを登録済みターゲットに分散させます。クロスゾーンロードバランサーがオンの場合、各ロードバランサーノードは、すべての登録済みアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散します。クロスゾーンロードバランサーがオフの場合、各ロードバランサーノードは、そのアベイラビリティーゾーンの登録済みターゲットのみにトラフィックを分散します。これは、ゾーンの障害ドメインがリージョナルドメインよりも優先される場合に使用できます。これにより、正常なゾーンが異常なゾーンの影響を受けないようにしたり、全体的なレイテンシーを改善したりすることができます。
Network Load Balancer では、クロスゾーン負荷分散はロードバランサーレベルでデフォルトで無効になっています。ビットはいつでも有効にできます。ターゲットグループの場合、デフォルトはロードバランサー設定を使用しますが、ターゲットグループレベルでクロスゾーン負荷分散を明示的に有効または無効にすることで、デフォルトを上書きできます。
考慮事項
-
Network Load Balancer のクロスゾーン負荷分散を有効にする場合、EC2 データ転送料金が適用されます。詳細については、「AWS Data Exports ユーザーガイド」の「データ転送料金について」を参照してください。
-
ターゲットグループ設定によって、ターゲットグループのロードバランサー動作が決まります。たとえば、クロスゾーンロードバランサーがロードバランサーレベルで有効で、ターゲットグループレベルで無効になっている場合、ターゲットグループに送信されるトラフィックはアベイラビリティーゾーン間でルーティングされません。
-
クロスゾーン負荷分散が無効になっている場合は、各ロードバランサーのアベイラビリティーゾーンに十分なターゲット容量があることを確認し、各ゾーンが関連するワークロードに対応できるようにします。
-
クロスゾーン負荷分散が無効になっている場合は、すべてのターゲットグループが同じアベイラビリティーゾーンに参加していることを確認します。空のアベイラビリティーゾーンは異常であるとみなされます。
-
ターゲットグループタイプが または の場合、ターゲットグループレベルでクロスゾーン負荷分散を有効
instance
または無効にできますip
。ターゲットグループタイプがalb
の場合、ターゲットグループは常にロードバランサーからクロスゾーンロードバランシング設定を継承します。
ロードバランサーレベルでクロスゾーン負荷分散を有効にする方法の詳細については、「」を参照してくださいクロスゾーンロードバランサー。
異常のあるターゲットの接続終了
接続の終了はデフォルトで有効になっています。Network Load Balancer のターゲットが設定されたヘルスチェックに失敗し、正常でないと見なされると、ロードバランサーは確立された接続を終了し、ターゲットへの新しい接続のルーティングを停止します。接続終了を無効にしても、ターゲットは異常と見なされて新しい接続を受信しませんが、確立された接続はアクティブなままなので、正常に閉じることができます。
異常なターゲットの接続終了は、ターゲットグループレベルで設定されます。
異常なドレイニング間隔
unhealthy.draining
状態のターゲットは異常と見なされ、新しい接続を受信しませんが、設定された間隔の間は確立された接続が保持されます。異常な接続間隔は、ターゲットが unhealthy.draining
状態になるまでに 状態のままになる時間を決定しますunhealthy
。異常な接続間隔中にターゲットがヘルスチェックに合格すると、その状態はhealthy
再び になります。登録解除がトリガーされると、ターゲットの状態が draining
になり、登録解除遅延タイムアウトが開始されます。
要件
異常なドレイニング間隔を有効にする前に、接続の終了を無効にする必要があります。