如何針對 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 Address (ELB IP 地址) 和 Port (連接埠) 輸入值。

驗證用戶端未連線到已終止的節點 (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 流程日誌,請檢查負載平衡器節點界面的日誌。確認來自用戶端 IP 地址的 SYN 是由負載平衡器接收。然後,確認 SYN, ACK 是由負載平衡器節點傳送回用戶端 IP 地址。如果 SYN, ACK 未從負載平衡器節點傳回,則可能是該節點發生問題。如需如何讀取流程日誌的範例,請參閱 TCP 旗標序號
  • 在執行用戶端的機器上擷取封包。使用 tcpdump 公用程式獲取網路流量以進行分析。如果連線失敗,請更新防火牆規則以允許所需的流量。