亚马逊的应用程序负载均衡器 (ALB) 是 AWS 的默认 HTTP 负载均衡器,但它们没有静态 IP 地址。相反,它们被赋予一个生成的域名(例如myservice-12345678.eu-west-1.elb.amazonaws.com.),该域名始终指向最新的 ALB IP 地址。

然后,建议使用 Route53通过记录(或顶点域的记录)将您的实际域名(例如service.example.com)指向此生成的 ALB 域名CNAMEALIAS

重要的是不要使用A记录直接从主域指向 ALB 的 IP 地址,因为当动态 ALB IP 地址发生变化时,主域将无法指向任何地方,从而导致服务中断,直到有人明确更新 DNS。

设置此项会CNAME导致 DNS 如下所示:

$ dig service.example.com
...
;; ANSWER SECTION:
service.example.com. 300 IN CNAME myservice-12345678.eu-west-1.elb.amazonaws.com.
myservice-12345678.eu-west-1.elb.amazonaws.com. 60 IN A 52.121.11.212
myservice-12345678.eu-west-1.elb.amazonaws.com. 60 IN A 18.112.21.121

但是,如果这些 IP 可能会发生变化,那么我不明白即使使用初始的 ,这如何能保持稳定CNAME。客户端仍会缓存从myservice-12345678.eu-west-1.elb.amazonaws.com-> 的辅助步骤52.121.11.21260 秒(如果忽略 TTL,则缓存时间更长)。

这是否意味着,如果其中一个 ALB 节点的 IP 地址发生变化,那么客户端的连接可能会中断长达一分钟?(循环 DNS 设置无法提供任何可靠的保护)

除非 Amazon 谨慎地滚动部署新的 ALB 节点,否则在 ALB DNS 更改后,旧节点至少会保持运行 60 秒。我完全可以相信这一点,但我已经搜索了几个小时,却找不到任何暗示它以这种方式工作的信息。我也找不到任何关于这些 IP 地址实际更改频率的信息,或者可能触发更改的原因。

有谁知道亚马逊如何(或者是否)以这种方式使 ALB 可靠?

3

  • 1


    – 

  • 谢谢@GregAskew,这非常有帮助。我现在已经阅读了该答案、链接的博客文章和有关 ELB 最佳实践的官方 AWS 帖子。他们解释了为什么 IP 地址不是静态的 – 允许扩展 – 因此这可能是 IP 会更改的唯一原因。他们都没有给出我想要的确认(ALB 只会其 IP 从 DNS 中删除 60 秒后被删除),但他们设计中的深入扩展行为确实表明他们会这样做。


    – 


  • @GregAskew 随意写一个类似这样的答案 ^ 我会接受的。否则我只能自己写了。


    – 

0