我通过紧急负载平衡。从很短的一段时间以来,越来越多的客户问我我们的 IP 地址是什么(用于收集数据)。显然他们无法将 ELB 的 DNS 列入白名单,只能将 IP 地址列入白名单(“您的 IP 地址一直在变化,我们该如何应对!“)。
我能想到的一个解决方案是跟踪我的 ELB 的 IP 地址池并将它们列在服务器上的一些文件上以供客户端使用?也许这很麻烦,但我很难找到有关这方面经验的信息或文章,尽管我无法想象这是一种罕见的情况。
是否有任何通用方法可以向人们提供我的 ELB 使用的 IP 地址池?或者这很荒谬,他们只需使用一些可以将 DNS 地址列入白名单的解决方案?
答案1
有没有什么常用的方法可以向人们提供我的 ELB 使用的 IP 地址池?
是的,ELB 是基于 EC2 构建的,AWS 发布了所有公共 IP 范围的列表特定区域正在使用。可以安全地假设您的 ELB 可以使用的每个 IP 都将在其区域发布的范围内。
这些 IP 范围如有变更,恕不另行通知,但 AWS 会维护当前列表采用 JSON 格式,可用于自动维护白名单。
另一方面,这有点多余,因为 DNS 的全部目的是提供与主机名关联的当前 IP 列表。
或者这太荒谬了,他们只需要使用一些可以将 DNS 地址列入白名单的解决方案?
他们无法将主机名列入白名单并不完全荒谬,因为任何支持该功能的防火墙解决方案都必须在运行时将 DNS 主机名解析为 IP,然后遵守 TTL 以保持此列表为最新,否则在第 7 层运行并检查主机 HTTP 标头字段。
有点不寻常的是,他们想要将出站连接列入白名单,更常见的是想要将入站连接列入白名单(例如当您尝试访问他们的 API 时),在这种情况下,您可以为 ELB 后面的实例分配一个 EIP,这样当您的应用程序服务器启动出站连接时,它们就会有一个静态 IP(尽管这样做可能会妨碍自动扩展)。
总体而言,ELB 并非是适合所有人的灵丹妙药,它做出了妥协,为 90% 的使用案例带来了显著的好处(例如透明扩展),但牺牲了少数潜在用户的利益。如果你真的需要为负载均衡器设置静态 IP,那么OpsWorks 使 HAProxy 编排几乎一样容易。