ELB非静态IP

ELB non-static IP

如果AWS ELB没有静态IP,是不是意味着如果在客户端的DNS记录过期之前IP发生变化,客户端将无法访问ELB?

或者它实际上将旧 IP 保留最多 24 小时(最大 DNS TTL)以便永远不会发生这种情况?

编辑:澄清:

DNS 记录缓存在客户端。例如。当客户端第一次查询 *.elb.amazonaws.com 时,它 returns 12.34.56.78。对于 *.elb.amazonaws.com 的后续查询,它只会使用 12.34.56.78 而不是进行另一次 DNS 查找(除非 DNS 记录过期,如 TTL 所规定的)。

所以如果ELB的内网IP变了,但是DNS记录还是指向旧的,就不能访问资源了?

Elastic Load Balancer 服务旨在自动检测 Elastic Load Balancer 本身任何组件的故障并从中恢复(部分恢复可能需要更换负载均衡器并使用新的 IP 地址)

因此建议使用 CNAME 分配您的 DNS, 如果您的 DNS 提供商不支持 CNAMES,您可以查看 Route 53。

CNAME 代表规范名称。 CNAME 记录可用于将一个名称作为另一个名称的别名。 Elastic Load Balancer 会公开 DNS 名称,AWS 会更新 ELB 等的内部 IP 地址

AWS ELB 提供 DNS 名称而不是 IP 地址,因为在幕后有多个 ELB 运行 由 AWS 内部管理以实现高可用性和容错。

如果内部服务器发生变化,AWS 将确保立即进行内部 DNS 映射。

当您想将自定义域名映射到 Elastic Load Balancer 时,由于这些内部复杂性,这就是您需要使用 CNAME 而不是 IP 地址的原因。

归功于 Dusan 的 link:用户控制的权威名称服务器只能为 CNAME 记录 api.example.com 指定 TTL(最长可达年)到 *.elb.amazon.com,这不会改变。

*.elb.amazon.com 解析为实际 IP 12.34.56.78 是由 Amazon 的名称服务器完成的,其 TTL 为 60 秒。

因此亚马逊只需要保留旧IP 60秒,以确保所有缓存的ELB IP记录都是有效的。