Network Load Balancers のターゲットグループ - Elastic Load Balancing

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

Network Load Balancers のターゲットグループ

ターゲットグループは、1 つ以上の登録されているターゲットにリクエストをルーティングするために使用されます。リスナーを作成するときは、デフォルトアクションのターゲットグループを指定します。トラフィックは、リスナー規則で指定されたターゲットグループに転送されます。さまざまなタイプのリクエストに応じて別のターゲットグループを作成できます。たとえば、一般的なリクエスト用に 1 つのターゲットグループを作成し、アプリケーションのマイクロサービスへのリクエスト用に別のターゲットグループを作成できます。詳細については、「Network Load Balancer のコンポーネント」を参照してください。

ロードバランサーのヘルスチェック設定は、ターゲットグループ単位で定義します。各ターゲットグループはデフォルトのヘルスチェック設定を使用します。ただし、ターゲットグループを作成したときや、後で変更したときに上書きした場合を除きます。リスナーのルールでターゲットグループを指定すると、ロードバランサーは、ロードバランサーで有効なアベイラビリティーゾーンにある、ターゲットグループに登録されたすべてのターゲットの状態を継続的にモニタリングします。ロードバランサーは、正常な登録済みターゲットにリクエストをルーティングします。詳細については、「ターゲットグループのヘルスチェック」を参照してください。

ルーティング設定

デフォルトでは、ロードバランサーはターゲットグループの作成時に指定したプロトコルとポート番号を使用して、リクエストをターゲットにルーティングします。または、ターゲットグループへの登録時にターゲットへのトラフィックのルーティングに使用されるポートを上書きすることもできます。

Network Load Balancer のターゲットグループは、次のプロトコルとポートをサポートします。

  • プロトコル: TCP、TLS、UDP、TCP_UDP

  • ポート: 1 ~ 65535

ターゲットグループに TLS プロトコルが設定されている場合、ロードバランサーは、ターゲットにインストールした証明書を使用して、ターゲットと TLS 接続を確立します。ロードバランサーはこれらの証明書を検証しません。したがって、自己署名証明書または期限切れの証明書を使用できます。ロードバランサーは Virtual Private Cloud (VPC) にあるため、ロードバランサーとターゲット間のトラフィックはパケットレベルで認証されるため、ターゲットの証明書が有効でなくても man-in-the-middle 攻撃やスプーフィングのリスクはありません。

次の表は、リスナープロトコルとターゲットグループの設定のサポートされている組み合わせをまとめたものです。

リスナープロトコル ターゲットグループプロトコル ターゲットグループの種類 ヘルスチェックプロトコル

TCP

TCP | TCP_UDP

インスタンス | ip

HTTP | HTTPS | TCP

TCP

TCP

alb

HTTP | HTTPS

TLS

TCP | TLS

インスタンス | ip

HTTP | HTTPS | TCP

UDP

UDP | TCP_UDP

インスタンス | ip

HTTP | HTTPS | TCP

TCP_UDP

TCP_UDP

インスタンス | ip

HTTP | HTTPS | TCP

[Target type (ターゲットタイプ)]

ターゲットグループを作成するときは、そのターゲットの種類を指定します。ターゲットの種類は、ターゲットの指定方法を決定します。ターゲットグループを作成した後で、ターゲットタイプを変更することはできません。

可能なターゲットの種類は次のとおりです。

instance

インスタンス ID で指定されたターゲット。

ip

IP アドレスで指定されたターゲット。

alb

ターゲットは Application Load Balancer です。

ターゲットの種類が ip の場合、次のいずれかの CIDR ブロックから IP アドレスを指定できます。

  • ターゲットグループの VPC のサブネット

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

重要

パブリックにルーティング可能な IP アドレスは指定できません。

サポートされているすべての CIDR ブロックによって、次のターゲットをターゲットグループに登録できます。

  • AWS IP アドレスとポート (データベースなど) でアドレス指定できる リソース。

  • AWS Direct Connect または Site-to-Site VPN 接続 AWS を介して にリンクされたオンプレミスリソース。

ターゲットグループでクライアント IP の保存が無効化されている場合、ロードバランサーは Network Load Balancer の IP アドレスと一意のターゲット (IP アドレスとポート) の組み合わせごとに 1 分あたり約 55,000 の接続をサポートできます。これらの接続数を超えた場合、ポート割り当てエラーが発生する可能性が高くなります。ポート割り当てエラーが発生した場合は、ターゲットグループにさらに多くのターゲットを追加します。

共有 Amazon VPC で (参加者として) Network Load Balancer を起動した場合、登録できるのは、共有されているサブネット内のターゲットだけです。

ターゲットタイプが alb の場合、単一の Application Load Balancer をターゲットとして登録できます。詳細については、「ターゲットとしての Application Load Balancer」を参照してください。

Network Load Balancer は、lambda ターゲットタイプをサポートしていません。Application Load Balancer は、lambda ターゲットタイプをサポートする唯一のロードバランサーです。詳細については、Application Load Balancer ユーザーガイドのターゲットとしての Lambda 関数を参照してください。

Network Load Balancer に登録されているインスタンスでマイクロサービスを使用している場合、ロードバランサーを使用してインスタンス間の通信を提供することはできません。ただし、ロードバランサーがインターネット向けであるか、インスタンスが IP アドレスで登録されている場合は除きます。詳しくは、「ターゲットからそのロードバランサーへのリクエストが接続タイムアウトになる」を参照してください。

リクエストのルーティングと IP アドレス

インスタンス ID を使用してターゲットを指定すると、トラフィックはインスタンスのプライマリネットワークインターフェイスで指定されたプライマリプライベート IP アドレスを使用して、インスタンスにルーティングされます。ロードバランサーは、データパケットの宛先 IP アドレスを書き換えてから、ターゲットインスタンスに転送します。

IP アドレスを使用してターゲットを指定する場合は、1 つまたは複数のネットワークインターフェイスからのプライベート IP アドレスを使用して、トラフィックをインスタンスにルーティングできます。これにより、インスタンスの複数のアプリケーションが同じポートを使用できるようになります。各ネットワークインターフェイスはそれぞれ独自のセキュリティグループを割り当てることができます。ロードバランサーは、宛先 IP アドレスを書き換えてから、ターゲットに転送します。

インスタンスへのトラフィックの許可の詳細については、ターゲットセキュリティグループ を参照してください。

ターゲットとしてのオンプレミスリソース

AWS Direct Connect または Site-to-Site VPN 接続を介してリンクされたオンプレミスリソースは、ターゲットタイプが の場合、ターゲットとして機能しますip


                     AWS Direct Connect または を使用して、Network Load Balancer をオンプレミスサーバーに接続します AWS Site-to-Site VPN。

オンプレミスのリソースを使用する場合、これらのターゲットの IP アドレスは、引き続き次の CIDR ブロックのいずれかから取得する必要があります。

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

の詳細については AWS Direct Connect、「 とは」を参照してください AWS Direct Connect。

の詳細については AWS Site-to-Site VPN、「 とは」を参照してください AWS Site-to-Site VPN。

IP アドレスタイプ

新しいターゲットグループを作成するときは、ターゲットグループの IP アドレスタイプを選択できます。これは、ターゲットとの通信、およびそれらのヘルスステータスのチェックに使用される IP バージョンを制御します。

Network Load Balancer は、IPv4 ターゲットグループと IPv6 ターゲットグループの両方をサポートします。デフォルトで選択されるのは IPv4 です。IPv6 ターゲットグループは、Dualstack Network Load Balancer にのみ関連付けることができます。

考慮事項
  • ターゲットグループ内のすべての IP アドレスは、同じ IP アドレスタイプである必要があります。例えば、IPv4 ターゲットを IPv6 ターゲットグループに登録することはできません。

  • IPv6 ターゲットグループは、TCP または TLS リスナーを使用した dualstack ロードバランサーのみで使用できます。

  • IPv6 ターゲットグループでは、IP およびインスタンスタイプのターゲットがサポートされています。

登録済みターゲット

ロードバランサーは、クライアントにとって単一の通信先として機能し、正常な登録済みターゲットに受信トラフィックを分散します。各ターゲットグループでは、ロードバランサーが有効になっている各アベイラビリティーゾーンで少なくとも 1 つのターゲットが登録されている必要があります。各ターゲットは、1 つ以上のターゲットグループに登録できます。

アプリケーションの需要が高まった場合、需要に対処するため、1 つまたは複数のターゲット グループに追加のターゲットを登録できます。ロードバランサーは、登録プロセスが完了するとすぐに、新しく登録したターゲットへのトラフィックのルーティングを開始します。

アプリケーションの需要が低下した場合や、ターゲットを保守する必要がある場合、ターゲットグループからターゲットを登録解除することができます。ターゲットを登録解除するとターゲットグループから削除されますが、ターゲットにそれ以外の影響は及びません。登録解除するとすぐに、ロードバランサーはターゲットへのトラフィックのルーティングを停止します。ターゲットは、未処理のリクエストが完了するまで draining 状態になります。トラフィックの受信を再開する準備ができると、ターゲットをターゲットグループに再度登録することができます。

インスタンス ID でターゲットを登録する場合は、Auto Scaling グループでロードバランサーを使用できます。Auto Scaling グループにターゲットグループをアタッチすると、ターゲットの起動時に Auto Scaling によりターゲットグループにターゲットが登録されます。詳細については、Amazon EC2 Auto Scaling ユーザーガイドのAuto Scaling グループへのロードバランサーのアタッチを参照してください。

要件と考慮事項
  • インスタンスで使用されているインスタンスタイプが C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、T1 のいずれかである場合、インスタンス ID でインスタンスを登録することはできません。

  • IPv6 ターゲットグループにインスタンス ID でターゲットを登録する場合、ターゲットにはプライマリ IPv6 アドレスが割り当てられている必要があります。詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「IPv6 アドレス」を参照してください。

  • インスタンス ID でターゲットを登録する場合、インスタンスは Network Load Balancer と同じ Amazon VPC にある必要があります。ロードバランサー VPC (同じリージョンまたは異なるリージョン) とピア接続されている VPC にインスタンスがある場合、そのインスタンスをインスタンス ID で登録することはできません。このようなインスタンスは IP アドレスで登録できます。

  • ターゲットを IP アドレスで登録し、その IP アドレスがロードバランサーと同じ VPC にある場合、ロードバランサーは、到達可能なサブネットからターゲットがアクセスしていることを確認します。

  • ロードバランサーは、有効になっているアベイラビリティーゾーン内のターゲットのみにトラフィックをルーティングします。有効になっていないゾーン内のターゲットは使用されません。

  • UDP および TCP_UDP ターゲットグループの場合、インスタンスがロードバランサー VPC の外部に存在するか、インスタンスタイプとして C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、T1 のいずれかを使用しているときは、IP アドレスでインスタンスを登録しないでください。ロードバランサー VPC の外部に存在するか、サポートされていないインスタンスタイプを使用するターゲットは、ロードバランサーからのトラフィックを受信できても、応答できない場合があります。

ターゲットグループの属性

次のターゲット グループの属性がサポートされています。これらの属性は、ターゲットグループタイプが instance または ip の場合にのみ変更できます。ターゲットグループタイプが alb の場合、これらの属性は常にデフォルト値を使用します。

deregistration_delay.timeout_seconds

登録解除するターゲットの状態が draining から unused に変わるのを Elastic Load Balancing が待機する時間。範囲は 0 ~ 3600 秒です。デフォルト値は 300 秒です。

deregistration_delay.connection_termination.enabled

ロードバランサーが登録解除タイムアウトの終了時に接続を終了するかどうかを示します。値は true または false です。新しい UDP/TCP_UDP ターゲットグループの場合、デフォルトは true です。それ以外の場合は、デフォルトは false です。

load_balancing.cross_zone.enabled

クロスゾーンロードバランサーが有効かどうかを示します。値は truefalse または use_load_balancer_configuration です。デフォルト: use_load_balancer_configuration

preserve_client_ip.enabled

クライアント IP の保存が有効かどうかを示します。値は true または false です。ターゲットグループの種類が IP アドレスで、ターゲットグループプロトコルが TCP または TLS の場合、デフォルトは無効です。それ以外の場合、デフォルトは有効です。UDP および TCP_UDP ターゲットグループのクライアント IP 保存を無効にすることはできません。

proxy_protocol_v2.enabled

Proxy Protocol バージョン 2 が有効になっているかどうかを示します。Proxy Protocol は、デフォルトで無効になっています。

stickiness.enabled

スティッキーセッションが有効かどうかを示します。

stickiness.type

維持の種類です。有効な値は source_ip です。

target_group_health.dns_failover.minimum_healthy_targets.count

正常でなければならないターゲットの最小数。正常なターゲットの数がこの値を下回っている場合は、DNS でそのゾーンを異常とマークして、トラフィックが正常なゾーンにのみルーティングされるようにします。指定できる値は off または 1 から最大ターゲット数までの整数です。off の場合、DNS フェイルアウェイが無効になります。つまり、各ターゲットグループが独立してDNSフェイルオーバーに寄与することになります。デフォルト は 1 です。

target_group_health.dns_failover.minimum_healthy_targets.percentage

正常でなければならないターゲットの最小割合。正常なターゲットの割合がこの値を下回っている場合は、DNS でそのゾーンを異常とマークして、トラフィックが正常なゾーンにのみルーティングされるようにします。指定できる値は、off または 1 から 100 までの整数です。off の場合、DNS フェイルアウェイが無効になります。つまり、各ターゲットグループが独立してDNSフェイルオーバーに寄与することになります。デフォルト は 1 です。

target_group_health.unhealthy_state_routing.minimum_healthy_targets.count

正常でなければならないターゲットの最小数。正常なターゲットの数がこの値を下回っている場合は、異常なターゲットを含むすべてのターゲットにトラフィックを送信します。範囲は 1 からターゲットの最大数です。デフォルト は 1 です。

target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage

正常でなければならないターゲットの最小割合。正常なターゲットの割合がこの値を下回っている場合は、異常なターゲットを含むすべてのターゲットにトラフィックを送信します。指定できる値は、off または 1 から 100 までの整数です。デフォルトは off です。

target_health_state.unhealthy.connection_termination.enabled

ロードバランサーが異常なターゲットへの接続を終了するかどうかを示します。値は true または false です。デフォルト: true

target_health_state.unhealthy.draining_interval_seconds

異常なターゲットの状態を から に変更するまでに Elastic Load Balancing unhealthy.draining が待機する時間unhealthy。範囲は 0~360,000 秒です。デフォルト値は0秒です。

注: この属性は、 target_health_state.unhealthy.connection_termination.enabledが の場合にのみ設定できますfalse

クライアント 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 の保存が無効な場合、ターゲットは Network Load Balancer と同じ VPC にある必要があり、トラフィックは Network Load Balancer からターゲットに直接フローする必要があります。

  • ターゲットが Network Load Balancer と同じ Amazon 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 ENI または別のNetwork Load Balancer の ENI が含まれている場合、クライアント 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 リクエストに追加します。

  • クライアント IP 保存の変更は、新しい TCP 接続に対してのみ有効です。

  • NAT ループバック(ヘアピニングとも呼ばれる)は、クライアント IP 保存が有効になっている場合はサポートされません。有効な場合、ターゲットで確認されたソケットの再利用に関連する TCP/IP 接続の制限が発生することがあります。これらの接続制限が発生する可能性があるのは、クライアント、またはクライアントの前面にある NAT デバイスが、複数のロードバランサーノードに同時に接続する際に、同じ送信元 IP アドレスと送信元ポートを使用する場合です。ロードバランサーがこれらの接続を同じターゲットにルーティングする場合、接続は同じ送信元ソケットからの接続のようにターゲットに表示され、それにより接続エラーが発生します。この場合、クライアントは再試行 (接続が失敗した場合)、または再接続 (接続が中断した場合) できます。このタイプの接続エラーは、送信元の一時ポートの数を増やすか、ロードバランサーのターゲット数を増やすことによって減らすことができます。このタイプの接続エラーは、クライアント IP の保存を無効にするか、クロスゾーン負荷分散を無効にすることで防止できます。

  • クライアント IP の保存が無効な場合、Network Load Balancer は一意の各ターゲット (IP アドレスとポート) に対して 55,000 の同時接続または 1 分あたり約 55,000 の接続をサポートします。これらの接続数を超えた場合、ポート割り当てエラーが発生する可能性が高くなり、新しい接続を確立できなくなることがあります。ポート割り当てエラーは、PortAllocationErrorCount メトリクスを使用して追跡できます。ポート割り当てエラーを修正するには、ターゲットグループにさらに多くのターゲットを追加します。詳細については、「CloudWatch Network Load Balancer のメトリクス」を参照してください。

New EC2 experience
新しい EC2 エクスペリエンスを使用してクライアント IP 保存を設定するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

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

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

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

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

  6. [変更の保存] をクリックします。

Old EC2 experience
古い EC2 エクスペリエンスを使用してクライアント IP 保存を設定するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択し、[ 説明 ]、[ 属性の編集] の順に選択します。

  4. クライアント IP 保存を有効にするには、[ クライアントIPアドレスの保持 ]を選択します。クライアント IP 保存を無効にするには、[ クライアント IP アドレスの保持 ] をオフにします。

  5. [Save] を選択します。

を使用してクライアント IP 保存を有効または無効にするには AWS CLI

preserve_client_ip.enabled 属性を指定して modify-target-group-attributes コマンドを使用します。

たとえば、次のコマンドを使用して、クライアント IP 保存を無効にします。

aws elbv2 modify-target-group-attributes --attributes Key=preserve_client_ip.enabled,Value=false --target-group-arn ARN

出力は次の例のようになります。

{ "Attributes": [ { "Key": "proxy_protocol_v2.enabled", "Value": "false" }, { "Key": "preserve_client_ip.enabled", "Value": "false" }, { "Key": "deregistration_delay.timeout_seconds", "Value": "300" } ] }

登録解除の遅延

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

登録解除するターゲットの初期状態は draining です。デフォルトでは、ロードバランサーは登録解除するターゲットの状態を 300 秒後に unused に変更します。登録解除するターゲットの状態が unused に変わるのをロードバランサーが待機する時間の長さを変更するには、登録解除の遅延値を更新します。リクエストを確実に完了するには、120 秒以上の値を指定することをお勧めします。

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

New EC2 experience
新しい EC2 エクスペリエンスを使用して登録解除属性を更新するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

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

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

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

  6. [変更の保存] をクリックします。

Old EC2 experience
古い EC2 エクスペリエンスを使用して登録解除属性を更新するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択し、[ 説明 ]、[ 属性の編集] の順に選択します。

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

  5. [Save] を選択します。

を使用して登録解除属性を更新するには AWS CLI

modify-target-group-attributesコマンドを実行します。

Proxy Protocol

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

IP アドレスでターゲットを指定すると、アプリケーションに提供される送信元 IP アドレスは、ターゲットグループのプロトコルに応じて次のように異なります。

  • TCP および TLS: 送信元 IP アドレスは、ロードバランサーノードのプライベート IP アドレスです。クライアントの IP アドレスが必要な場合は、Proxy Protocol を有効にし、Proxy Protocol ヘッダーからクライアント IP アドレスを取得します。

  • UDP および TCP_UDP: 送信元 IP アドレスは、クライアントの IP アドレスです。

インスタンス ID でターゲットを指定すると、アプリケーションに提供される送信元 IP アドレスは、クライアントの IP アドレスになります。ただし、必要に応じて Proxy Protocol を有効にし、Proxy Protocol ヘッダーからクライアント IP アドレスを取得できます。

注記

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

ヘルスチェックの接続

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

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」を参照してください。

New EC2 experience
新しい EC2 エクスペリエンスを使用してプロキシプロトコル v2 を有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

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

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

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

  6. [Save changes] を選択します。

Old EC2 experience
古い EC2 エクスペリエンスを使用してプロキシプロトコル v2 を有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択します。

  4. [Description]、[Edit attributes] を選択します。

  5. [Proxy Protocol v2] で、[有効] を選択します。

  6. [Save] を選択します。

を使用してプロキシプロトコル v2 を有効にするには AWS CLI

modify-target-group-attributesコマンドを実行します。

スティッキーセッション

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

考慮事項
  • スティッキーセッションを使用すると、接続とフローの分散が不均一になり、ターゲットの可用性に影響する場合があります。たとえば、同じ NAT デバイスの背後にあるすべてのクライアントの送信元 IP アドレスは同じです。したがって、これらのクライアントからのすべてのトラフィックは、同じターゲットにルーティングされます。

  • いずれかのターゲットのヘルス状態が変更されたり、ターゲットグループに対してターゲットを登録または登録解除したりすると、ロードバランサーによってターゲットグループのスティッキーセッションがリセットされる場合があります。

  • ターゲットグループで維持属性が有効になっている場合、パッシブヘルスチェックはサポートされません。詳細については、「ターゲットグループのヘルスチェック」を参照してください。

  • スティッキーセッションは、 TLS リスナーでサポートされません。

New EC2 experience
新しい EC2 エクスペリエンスを使用してスティッキーセッションを有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

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

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

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

  6. [変更の保存] をクリックします。

Old EC2 experience
古い EC2 エクスペリエンスを使用してスティッキーセッションを有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [ターゲットグループ] を選択します。

  3. ターゲットグループを選択します。

  4. [Description]、[Edit attributes] を選択します。

  5. [維持設定] で、[有効化] を選択します。

  6. [Save] を選択します。

を使用してスティッキーセッションを有効にするには AWS CLI

stickiness.enabled 属性を指定して modify-target-group-attributes コマンドを使用します。