Elastic Load Balancing
Network Load Balancer
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

网络负载均衡器故障排除

以下信息可帮助您解决与 网络负载均衡器 相关的问题。

已注册目标未处于可用状态

如果目标进入 InService 状态所花费的时间超过预期,则该目标可能无法通过运行状况检查。您的目标未处于可用状态,除非通过一次运行状况检查。有关更多信息,请参阅 目标组的运行状况检查

验证您的实例是否通过运行状况检查,然后检查以下各项:

安全组不允许流量

与实例关联的安全组必须允许来自负载均衡器的使用运行状况检查端口和运行状况检查协议的流量。

网络访问控制列表 (ACL) 不允许流量

与实例的子网关联的网络 ACL 必须允许运行状况检查端口上的入站流量,以及临时端口 (1024-65535) 上的出站流量。与您负载均衡器节点的子网关联的网络 ACL 必须允许临时端口上的入站流量,以及运行状况检查端口和临时端口上的出站流量。

请求未路由至目标

检查以下各项:

安全组不允许流量

与实例相关联的安全组必须允许侦听器端口上来自客户端 IP 地址 (如果目标通过实例 ID 指定) 或负载均衡器节点 (如果目标通过 IP 地址指定) 的流量。

网络访问控制列表 (ACL) 不允许流量

与 VPC 的子网关联的网络 ACL 必须允许负载均衡器和目标在侦听器端口上双向通信。

目标处于未启用的可用区中

如果您在可用区中注册目标但未启用该可用区,这些已注册目标将无法从负载均衡器接收流量。

实例位于对等的 VPC 中

如果您在对等 VPC 中拥有实例,则必须通过 IP 地址而不是实例 ID 将这些实例注册到负载均衡器。

目标接收比预期更多的运行状况检查请求

网络负载均衡器 的运行状况检查是分布式的,使用共识机制来确定目标运行状况。因此,目标可以接收的运行状况检查数量可以超过通过 HealthCheckIntervalSeconds 设置配置的数量。

目标接收比预期更少的运行状况检查请求

检查是否启用了 net.ipv4.tcp_tw_recycle。已知此设置会导致负载均衡器出现问题。net.ipv4.tcp_tw_reuse 设置被认为是更安全的替代设置。

运行状况不佳的目标收到来自负载均衡器的请求

如果您的负载均衡器至少有一个运行正常的已注册目标,则负载均衡器仅将请求路由到运行正常的已注册目标。如果只有运行状况不佳的已注册目标,则负载均衡器将请求路由到所有已注册目标。

从目标到其负载均衡器的请求连接超时

检查您是否有一个内部负载均衡器的目标是通过实例 ID 注册的。内部负载均衡器不支持“发夹”(hairpin) 转换或回环。通过实例 ID 注册目标时,客户端的源 IP 地址会保留。如果实例是它通过实例 ID 注册到的内部负载均衡器的客户端,则连接仅在请求路由到不同的实例时才会成功。否则,源地址和目的地 IP 地址相同,连接会超时。

如果实例必须将请求发送到它注册到的负载均衡器,请执行下列操作之一:

  • 通过 IP 地址 (而不是实例 ID) 注册实例。当使用 Amazon Elastic Container Service 时,请为您的任务使用 awsvpc 网络模式,以确保目标组要求通过 IP 地址注册。

  • 确保必须相互通信的容器位于不同的容器实例上。

  • 使用面向 Internet 的负载均衡器。

当将目标移到 网络负载均衡器 时,性能会下降

Classic Load Balancer 和 Application Load Balancer 都使用多路复用连接,但 Network Load Balancer 不使用。因此,您的目标可能会在 网络负载均衡器 后面收到更多的 TCP 连接。请确保您的目标准备好处理它们可能会收到的连接请求量。

如果您的 网络负载均衡器 与 VPC 终端节点服务关联,则它可以支持到每个唯一目标(IP 地址和端口)的 55,000 个并发连接或每分钟大约 55,000 个连接。如果连接数超过该值,则会增大出现端口分配错误的几率。要修复端口分配错误,请将更多目标添加到目标组。