AWS Route 53别名logging更改需要很长时间

我已经在AWS Cloudformation中build立了一个堆栈,它正在运行。 该堆栈包含一个ELB(负载均衡器)和一些EC2实例。 当我们对应用程序进行新的部署时,我们build立一个新的环境并删除旧的环境。 因此,我们必须更新Route 53中的DNSlogging。我想知道旧堆栈应该保持多久。

我遵循AWS文档来使用子域而不迁移父域 。 父域NSlogging(对AWS DNS)具有3600的TTL。 在Route 53内部,我已经为堆栈中的负载平衡器设置了一个带有别名的Alogging(这里我不能设置TTL)。

我无法从AWS控制台input别名logging的TTL。 然而,有些消息来源说,这个改变可能需要60秒 。

我只是在本地做了一些testing,来检查DNS拿起新堆栈需要多长时间。 这是更新Route 53中的别名DNSlogging和能够在我的浏览器中访问新堆栈的时间:

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

这不应该在60秒? 这对于所有的客户来说最长的时间是多less? 可以减less这个时间吗? 什么是安全的时间来删除旧的堆栈?

首先,认识到在客户端或其DNSparsing器上caching的DNSlogging是非常重要的,这些logging都不受您的控制(请注意,我指的是DNSlogging,而不是您的权威名称服务器)。 因此,尊重您的TTL是由客户端和他们的DNSparsing器决定的。

对于以前从未访问过您的网站且DNSparsing程序未caching您的logging的新访问者(或访问时间足够长以至于caching已过期),他们将立即看到新logging。

这不应该在60秒?

它应该,但是这只有当你的客户尊重TTL。 有些客户端的TTL最小,有些networking也有一个DNSparsing器可能是caching结果。

可以减less这个时间吗?

你必须记住,你的大部分访客(假设这是一个公共网站)不会像你一样每隔几秒就在你的网站上。 大多数访问者可能最近都不会访问该站点,而且他们的DNSparsing器可能没有在其caching中logging。 大多数DNSparsing器应该尊重你的TTL,但你不能保证这一点。

什么是安全的时间来删除旧的堆栈?

你最好是通过旧的堆栈而不是DNS TTL来判断stream量。 如果您正在使用ELB,则应该能够查看CloudWatch中旧ELB每秒处理的请求数量。 等到它降到可接受的水平以下,然后删除它。

为了在交换机之后立即查看新堆栈,我build议只手动刷新本地DNScaching。 离开你自己的客户自然过期的logging,看看多久可能不会指示其他客户需要多长时间。

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

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

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