我已经在AWS Cloudformation中设置了一个堆栈,该堆栈已经启动并运行。堆栈包含一个ELB (负载平衡器)和一些EC2-实例。当我们对应用程序进行新的部署时,我们构建一个新的环境并删除旧的环境。因此,我们必须更新53号公路上的DNS记录。我想知道这堆旧东西还能活多久。
我跟踪了AWS文档使用子域而不迁移父域。父域NS-记录(面向AWS )有一个3600的TTL。在53号路由内,我在堆栈中设置了一个带有负载均衡器别名的A记录(我不能在这里设置一个TTL )。
我无法从AWS控制台输入别名记录的TTL。然而,一些消息来源说,这一变化可能会持续到60秒。
我只是在本地做了一些测试,以检查DNS需要多长时间才能获得新的堆栈。这是从更新53路由中的别名DNS记录到能够在我的浏览器中到达新堆栈之间的时间:
这不应该在60秒以内吗?对所有客户来说,最长的时间是多少?这一次可以减少吗?删除旧堆栈的安全时间是什么时候?
发布于 2014-08-16 00:59:16
首先,重要的是要认识到,缓存在客户端上的DNS记录或它们的DNS解析器都超出了您的控制范围(请注意,我指的是DNS记录,而不是您的权威名称服务器)。因此,这是由客户端和他们的DNS解析器来履行您的TTL。
如果新访问者以前从未访问过您的站点,而且DNS解析器没有缓存您的记录(或者在缓存过期之前已经访问了很久),他们将立即看到新记录。
这不应该在60秒以内吗?
应该的,但前提是你的客户遵守了TTL。一些客户端有最小的TTL,而一些网络也有一个DNS解析器,这可能是缓存结果。
这一次可以减少吗?
你必须记住,大多数访问者(假设这是一个公共网站)不会像你一样每隔几秒钟就坐在那里加载你的网站。您的大多数访问者可能不会访问该网站最近和他们的DNS解析器可能没有记录在他们的缓存。大多数DNS解析器应该尊重您的TTL,但您不能保证这一点。
删除旧堆栈的安全时间是什么时候?
您最好根据旧堆栈仍然服务的流量来判断这一点,而不是DNS TTL。如果您正在使用ELB,您应该能够查看云监视中旧的ELB每秒处理多少个请求。等到这个值降到一个可接受的水平以下,然后删除它。
为了在开关后立即查看新堆栈,我建议只手动刷新本地DNS缓存。让自己的客户自然地将记录过期,以便查看它需要多长时间,这可能并不能说明其他客户需要多长时间。
编辑,我注意到Google的公共DNS有一个工具可以让你刷新缓存:
https://developers.google.com/speed/public-dns/cache
这可能会加快速度,因为很大一部分客户可能正在使用这一技术。
https://serverfault.com/questions/620406
复制相似问题