如何排查 Elastic Load Balancing“连接超时”错误?

1 分钟阅读
0

我正在使用 Elastic Load Balancing (ELB) 并收到“连接超时”错误。如何解决我的负载均衡器和客户端之间的连接超时问题?

解决方法

验证您的负载均衡器方案是否面向 Internet

如果客户端尝试通过 Internet 连接,请验证 ELB 方案是否面向 Internet

确认已为负载均衡器端口配置了侦听器

验证客户端连接到的负载均衡器端口的侦听器配置:

确认您的目标实例的安全组允许流量

Application Load Balancer 和 Classic Load Balancer

检查附加到负载均衡器的安全组的设置。确认侦听器和运行状况检查端口的双向流量都允许。有关更多信息,请参阅 Application Load Balancer 的安全组为 Classic Load Balancer 配置安全组

Network Load Balancers

如果您将 EC2 实例注册为目标,请确认这些实例的安全组允许侦听器和运行状况检查端口上的流量。如果您按 IP 地址注册目标,请确保目标的安全组允许来自 NLB 节点的流量。有关更多信息,请参阅向目标组(Network Load Balancer)注册目标

如果您使用客户端 IP 保留,请确认目标安全组允许来自客户端 IP 地址的流量。有关详细信息,请参阅客户端 IP 保留

验证网络 ACL 是否允许所需的流量

验证与负载均衡器节点所在的子网关联的网络访问控制列表(网络 ACL):

  • 允许访问正在访问的端口
  • 允许访问入站规则中的特定客户端 IP 地址。

网络 ACL 是无状态的,因此您必须在入站和出站规则中都允许访问。还需要确认出站规则中允许使用所有临时端口。仅允许某些临时端口可能会导致间歇性连接问题。有关更多信息,请参阅 VPC 中负载均衡器的网络 ACL

确认路由表配置正确

对于面向 Internet 的负载均衡器,请确认与负载均衡器节点所在的子网关联的路由表具有互联网网关。

对于使用到负载均衡器的私有连接的内部负载均衡器,可能会有多个路由表与不同的子网关联。单个节点上可能会出现连接问题,从而导致间歇性问题。检查与所有节点关联的路由表。如果某个节点的连接失败,请验证是否配置了与负载均衡器节点子集关联的路由表。根据需要添加路线。

使用以下命令测试节点连接性:

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。然后,确认负载均衡器节点将 SYN,ACK 发送回客户端 IP 地址。如果未从负载均衡器节点返回 SYNACK,则该节点可能存在问题。有关如何读取流日志的示例,请参阅 TCP 标记序列
  • 在运行客户端的机器上捕获数据包。使用 tcpdump 实用程序获取网络流量以进行分析。如果连接失败,请更新防火墙规则以允许所需的流量。

相关信息

排查 Application Load Balancer 的问题

排查 Classic Load Balancer 的问题

自定义网络 ACL

AWS 官方
AWS 官方已更新 2 年前