AWS Route 53 别名记录更改时间太长

dbr*_*eks 5 domain-name-system ttl amazon-web-services amazon-route53

我已在 AWS Cloudformation 中设置了一个堆栈,该堆栈已启动并正在运行。该堆栈包含一个 ELB(负载均衡器)和一些 EC2 实例。当我们对应用程序进行新部署时,我们会构建一个新环境并删除旧环境。因此,我们必须更新 Route 53 中的 DNS 记录。我想知道旧堆栈应该存活多久。

我已按照AWS 文档使用子域而不迁移父域。父域 NS 记录(面向 AWS DNS)的 TTL 为3600. 在 Route 53 中,我设置了一个 A 记录,其中包含堆栈中负载均衡器的别名(我无法在此处设置 TTL)。

我无法从 AWS 控制台输入别名记录的 TTL。然而,一些消息来源表示,更改可能需要长达60 秒

我只是在本地做了一些测试,以检查 DNS 获取新堆栈需要多长时间。这是更新 Route 53 中的别名 DNS 记录和能够在我的浏览器中访问新堆栈之间的时间:

  • 尝试 #1:~4 分钟
  • 尝试 #2:~9 分钟
  • 尝试 #3:~7 分钟
  • 尝试 #4:~15 分钟

这不应该低于 60 秒吗?对于所有客户端,这最多需要多长时间?可以减少这个时间吗?删除旧堆栈的安全时间是多少?

the*_*cre 6

首先,重要的是要认识到缓存在客户端或其 DNS 解析器上的 DNS 记录都不受您的控制(请注意,我指的 DNS 记录不是您的权威名称服务器)。因此,由客户端和他们的 DNS 解析器来兑现您的 TTL。

如果新访问者以前从未访问过您的站点并且其 DNS 解析器没有缓存您的记录(或访问时间足够长以至于缓存已过期),他们将立即看到新记录。

这不应该低于 60 秒吗?

它应该,但前提是您的客户遵守 TTL。某些客户端具有最小 TTL,某些网络还具有可能缓存结果的 DNS 解析器。

可以减少这个时间吗?

您必须记住,您的大多数访问者(假设这是一个公共站点)不会像您那样每隔几秒钟就坐在那里加载您的站点。您的大多数访问者最近可能不会访问该站点,并且他们的 DNS 解析器可能没有缓存中的记录。大多数 DNS 解析器应该尊重您的 TTL,但您不能保证这一点。

删除旧堆栈的安全时间是多少?

您最好通过旧堆栈而不是 DNS TTL 仍在提供哪些流量来判断这一点。如果您使用 ELB,您应该能够在 cloudwatch 中查看旧 ELB 每秒处理的请求数。等到它低于可接受的水平,然后将其删除。

为了在切换后立即查看新堆栈,我建议您只需手动刷新本地 DNS 缓存。为了查看需要多长时间而让您自己的客户自然地使记录过期,这可能不会表明其他客户需要多长时间。

编辑,我注意到谷歌的公共 DNS 有一个工具可以让你刷新缓存:

https://developers.google.com/speed/public-dns/cache

这可能会加快速度,因为很大一部分客户可能会使用它。