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

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

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些