domain-name-system – AWS Route 53别名记录更改耗时太长

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

我已经跟踪了AWS docs to use a subdomain without migrating the parent domain.父域NS记录(朝向AWS DNS)的TTL为3600.在Route 53中,我已经设置了一个带有别名的A记录到堆栈中的负载均衡器(我无法设置TTL)这里).

我无法从AWS控制台输入别名记录的TTL.然而,一些消息来源称,这一变化可能需要60 seconds.

我刚刚在本地进行了一些测试,以检查DNS获取新堆栈所需的时间.这是更新Route 53中的别名DNS记录和能够在浏览器中访问新堆栈之间的时间:

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

这不应该在60秒内吗?所有客户可以承受的最长时间是多少?可以减少这个时间吗?什么是删除旧堆栈的安全时间?

解决方法

首先,重要的是要认识到客户端或其DNS解析器上缓存的DNS记录都是您无法控制的(请注意,我指的是DNS记录而不是您的权威名称服务器).因此,客户端和他们的DNS解析器会尊重您的TTL.

如果新访问者之前从未访问过您的网站并且其DNS解析程序未缓存您的记录(或者在很长时间之前访问过缓存已过期),他们将立即看到新记录.

Shouldn’t this be under 60 seconds?

它应该,但只有当您的客户尊重TTL时才会这样.一些客户端具有最小TTL,并且一些网络还具有DNS解析器,其可以是缓存结果.

Is it possible to reduce this time?

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

What is a safe time to delete the old stack?

你最好通过旧堆栈而不是DNS TTL来处理流量来判断这一点.如果您正在使用ELB,那么您应该能够查看旧版ELB在cloudwatch中每秒请求的请求数.等到它降到可接受的水平以下然后将其删除.

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

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

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

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

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在'',则表示换行,用''切割。
代码实现 option = { backgroundColor: '#080b30', tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...