Elastic Load Balancing の「Connection timed out」エラーをトラブルシューティングするにはどうすればよいですか?

最終更新日: 2022 年 4 月 8 日

Elastic Load Balancing (ELB) を使用していて、「Connection timed out」というエラーが表示されます。ロードバランサーとクライアント間の接続タイムアウトのトラブルシューティング方法を教えてください。

解決方法

ロードバランサスキームがインターネットに接続していることを確認する

クライアントがインターネット経由で接続しようとしている場合は、ELB スキームがインターネットに接続されていることを確認します。

リスナーがロードバランサーポート用に設定されていることを確認します。

クライアントが接続するロードバランサーポートのリスナーの設定を確認します。

ターゲットインスタンスのセキュリティグループでトラフィックが許可されていることを確認する

Application Load Balancer と Classic Load Balancer

ロードバランサーに添付されているセキュリティグループの設定を確認します。リスナーポートとヘルスチェックポートの両方向のトラフィックが許可されていることを確認します。詳細については、Application Load Balancer のセキュリティグループおよび Classic Load Balancer のセキュリティグループの設定を参照してください。

Network Load Balancer

EC2 インスタンスをターゲットとして登録する場合は、これらのインスタンスのセキュリティグループが、リスナーポートとヘルスチェックポートの両方でトラフィックを許可していることを確認します。IP アドレスでターゲットを登録する場合は、ターゲットのセキュリティグループで NLB ノードからのトラフィックが許可されていることを確認します。詳細については、「ターゲットグループによるターゲットの登録 (Network Load Balancer)」を参照してください。

クライアント IP の保存を使用している場合は、ターゲットセキュリティグループがクライアント IP アドレスからのトラフィックを許可していることを確認します。詳細については、「クライアント IP の保存」を参照してください。

ネットワーク ACL で必要なトラフィックが許可されていることを確認する

ロードバランサーノードが存在するサブネットに関連付けられているネットワークアクセスコントロールリスト (ネットワーク ACL) を確認します。

  • アクセスされているポートでのアクセスを許可します。
  • インバウンドルール内の特定のクライアント IP アドレスへのアクセスを許可します。

ネットワーク ACL はステートレスであるため、インバウンドルールとアウトバウンドルールの両方でアクセスを許可する必要があります。また、アウトバウンドルールですべてのエフェメラルポートが許可されていることを確認します。一部のエフェメラルポートのみを許可すると、断続的な接続の問題が発生する可能性があります。詳細については、「VPC 内のロードバランサーのネットワーク ACL」を参照してください。

ルートテーブルが正しく設定されていることを確認する

インターネット向けロードバランサーの場合は、ロードバランサーノードが存在するサブネットに関連付けられているルートテーブルにインターネットゲートウェイがあることを確認します。

ロードバランサーへのプライベート接続を使用する内部ロードバランサーでは、異なるサブネットに複数のルートテーブルが関連付けられている場合があります。個々のノードで接続の問題が発生し、断続的な問題が発生することがあります。すべてのノードに関連付けられているルートテーブルをチェックします。ノードの接続に失敗した場合は、ロードバランサノードサブセットに関連付けられたルートテーブルが設定されていることを確認します。必要に応じてルートを追加します。

次のコマンドを使用して、ノードの接続性をテストします。

nc –v <ELB IP Address> <Port>
telnet <ELB IP Address> <Port>

注意: [ELB IP アドレス] と [ポート] の情報を入力します。

クライアントが終了したノード (Application Load Balancer と Classic Load Balancer) に接続していないことを確認する

クライアントが、終了した Application Load Balancer または Classic Load Balancer ノードに接続していないことを確認します。クライアントの IP アドレスが、ELB ドメインネームシステム (DNS) で公開されている現在の IP アドレスのリストに含まれていることを確認します。example.com のドメイン名を使用して、次の dig コマンドを実行します。

$ dig +short example.com
35.154.42.229
13.126.64.179

クライアント側のファイアウォールがトラフィックをブロックしていないことを確認する

他のトラブルシューティング方法でも接続の問題が解決しない場合は、クライアント側のファイアウォールがトラフィックをブロックしている可能性があります。以下のステップに従って、エラーをトラブルシューティングします。

  • VPC Flow Logs をメタデータとともに使用している場合は、ロードバランサーノードインターフェイスのログを確認します。クライアント IP アドレスからの SYN がロードバランサーによって受信されていることを確認します。次に、SYNACK がロードバランサーノードによってクライアント IP アドレスに返送されることを確認します。SYN ACK がロードバランサーノードから返されない場合は、そのノードに問題がある可能性があります。フローログの読み取り方法の例については、「TCP フラグシーケンス」を参照してください。
  • クライアントを実行しているマシンでパケットキャプチャを実行します。tcpdump ユーティリティを使用して、分析のためにネットワークトラフィックを取得します。接続に失敗した場合は、必要なトラフィックを許可するようにファイアウォールルールを更新します。