【问题标题】:ELB non-static IPELB 非静态 IP
【发布时间】:2018-05-30 04:54:18
【问题描述】:

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

或者它实际上是否将旧 IP 保留长达 24 小时(最大 DNS TTL),这样就不会发生这种情况?

编辑:澄清:

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

那么如果ELB的内部IP发生变化,但DNS记录仍然指向旧的,它就无法访问资源了?

【问题讨论】:

  • ELB 记录的 TTL 为 60 秒,由于它最常指向 2 个 IP 地址,因此可以轻松进行滚动更新,无需停机。
  • @DusanBajic 我认为 TTL 是在 DNS 管理器中指定的?因此用户可以指定超过 60 秒的方式。
  • 不适用于 ELB,创建负载均衡器时会自动创建 ELB DNS 名称。
  • @DusanBajic 是的,但是 DNS 管理器会告诉客户端将 DNS 名称记录对保存到本地 IP 地址多长时间。所以*.elb.amazonaws.com会在本地解析到缓存的IP,直到DNS管理器指定的TTL。
  • 哦,现在我知道混乱来自哪里了。看看这个serverfault.com/questions/260254/…

标签: amazon-web-services dns amazon-elb


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 对于 Amazon 负载均衡器,您应该使用 ALIAS 记录而不是 CNAMES。
    【解决方案3】:

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

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

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

    【讨论】:

    • DNS 记录缓存在客户端。例如。当客户端第一次查询*. elb.amazonaws.com时,它返回12.34.56.78。对于*. elb.amazonaws.com 的后续查询,它只使用12.34.56.78 而不是进行另一个 DNS 查找(除非 DNS 记录过期,如 TTL 所指示的那样)。那么如果ELB的内部IP发生变化,但DNS记录仍然指向旧的,它就无法访问资源了?
    • 如果使用 Route53 ALIAS 记录而不是 CNAMES,则 TTL 为 60 秒。对 ELB 的 DNS 查询会返回多个地址。大多数设计正确的系统都会处理这个问题。
    • @Avery235 您对客户端缓存的担忧有一些好处,因为 DNS TTL 对浏览器实现来说似乎毫无意义......但实际上我在这里没有遇到问题。地址不会经常更改,并且在地址从 DNS 中消失到它实际停止工作之间似乎有一段时间。我没有对这种行为进行广泛的描述,但我一直在研究一种工具来做到这一点——主要是出于好奇和想要了解和理解平台在做什么的愿望,正如我所说,它从未引起过问题我注意到了。
    • 我想我现在了解了机制,感谢 Dusan。见我上面的回答。
    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2020-04-23
    • 2020-04-26
    相关资源
    最近更新 更多