跳至内容

如何解析 Amazon EC2 未列出的网络负载均衡器 IP 地址?

1 分钟阅读
0

我想知道为什么 Amazon Elastic Compute Cloud (Amazon EC2) 没有列出我的网络负载均衡器的 IP 地址。

简短描述

网络负载均衡器的每个可用区只有一个静态 IP 地址。如果网络负载均衡器是公共的,则每个可用区会同时拥有一个静态私有 IP 地址和一个静态公共 IP 地址。当添加其他区域时,Amazon EC2 会将 IP 地址添加到网络负载均衡器的 DNS 名称中。要查看您的网络负载均衡器的 IP 地址,请对网络负载均衡器的 DNS 名称执行 DNS 查找

跨多个可用区运行的负载均衡器在其 DNS 响应中仅返回运行状况良好区域的 IP 地址。

例如,如果 3 个可用区中仅有 2 个运行状况良好,则 DNS 仅会返回 2 个 IP 地址。但是,如果所有区域均不正常,则 DNS 会故障打开并返回所有区域的 IP 地址。如果网络负载均衡器的跨区域负载均衡已关闭,则 DNS 通常会返回包含活动目标的区域的 IP 地址。但是,在故障打开场景下,无论是否存在目标,DNS 都会返回所有区域的 IP 地址。

解决方法

确保每个可用区至少有一个运行状况良好的目标。对于 target-group-1,如果 us-east-1a 中有一个目标,us-east-1b 中有一个 target-2,则这两个网络负载均衡器的 IP 地址均可访问。此时,无论](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/edit-target-group-attributes.html#target-group-cross-zone)跨区域是开启[还是关闭,您都可以通过 DNS 查找找到这些 IP 地址。

如果每个目标组中的每个区域未部署至少一个运行状况良好的目标,则您的设计可能会导致间歇性连接问题。例如,在目标组 1 中,target-1 在 us-east-1a 的端口 80 上侦听,在目标组 2 中,target-2 在 us-east-1b 的端口 8080 上侦听。此时,在目标组 1 中,将缺少 us-east-1b 的目标,而在目标组 2 中,将缺少 us-east-1a 的目标。网络负载均衡器的 DNS 可能会故障打开,然后所有 IP 地址都会显示在 Amazon EC2 中。

要解决此问题,请为每个目标组中的每个区域添加另一个目标。或者,开启跨区域,以便您的网络负载均衡器可以跨不同区域进行连接。

如果 target-group-1 在 us-east-1a 中有一个目标,则 Amazon EC2 中只会显示 us-east-1a 中的 IP 地址,因为 us-east-1b 中没有运行状况良好的目标。要解决此问题,请在同一目标组中为 us-east-1b 添加另一个目标。或者,开启跨区域。

AWS 官方已更新 9 个月前