Network Load Balancer の後ろにあるターゲットが同じ Network Load Balancer に接続しようとする際に接続が失敗するため、この問題をトラブルシューティングしたいです。
簡単な説明
内部 Network Load Balancer のターゲットが、そのターゲット独自の Network Load Balancer への TCP 接続を確立する場合、ターゲットはそれ自体にルーティングされます。Network Load Balancer はソース IP アドレスを保持するため、到着したパケットの送信元と宛先はターゲットのプライベート IP アドレスになります。ホストのオペレーティングシステムは、パケットが無効と見なすため、ホストは応答トラフィックを送信せず、接続は失敗します。
この接続障害は、ソースとターゲットが同じ場合にのみ発生します。その結果、Network Load Balancer で使用できるターゲットの数によっては、断続的に接続障害が発生する可能性があります。
Network Load Balancer の接続障害を解決するには、ターゲットグループ属性 preserve_client_ip.enabled を使用し、TCP および TLS ターゲットグループにおいてクライアント IP の保持を無効にします。
解決策
クライアント IP の保持を無効にするには、次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。
- 該当するターゲットグループ名を選択します。
- [属性] タブで [編集] を選択します。
- [クライアント IP アドレスを保存] を選択解除します。
- [変更を保存] を選択します。
アプリケーションにクライアントの IP アドレスが必要な場合は、プロキシプロトコルのサポートを有効にします。プロキシプロトコルヘッダーからクライアントの IP アドレスにアクセスします。
注: Network Load Balancer でプロキシプロトコルを有効にする前に、ターゲットインスタンスがプロキシプロトコルヘッダーをサポートできることを確認してください。ターゲットがプロキシプロトコルヘッダーをサポートしていない場合、トラフィックは正しく処理されない可能性があります。
関連情報
ターゲットからロードバランサーへのリクエストの接続がタイムアウトする