我需要等待AWS Route53中CNAME记录的传播吗?

3

我正在使用Amazon AWS Route 53的API向现有区域添加新的CNAME记录。我想测试一下记录是否被正确添加。

我需要等待传播吗?或者由于这是一个新记录,它会立即被获取?

我看到一篇文章提到等待传播,但那是创建一个全新的区域;而我不必这样做,因为我是将其添加到现有区域中。

使用案例是我可能会在运行时添加这些(CNAME记录),并需要检查以确保它们已正确添加。

2个回答

3
我认为您混淆了两件事情:一方面是您在提供商基于Web的界面上更新和所有Route53权威名称服务器更改之间的延迟,另一方面是在权威名称服务器更改后,全球递归名称服务器意识到这种更改的延迟。第一种情况仅取决于Amazon基础架构。但是,您可以查询其权威名称服务器并查看资源是否已发布。第二种情况不是真正的传播,而是取决于TTL和负TTL。
因此,我将更多地关注第二种情况。
方法很简单:
1.首先查询资源的权威名称服务器,确保它们正确回复。您甚至可以使用在线故障排除工具进行查询:https://zonemaster.net/https://graphviz.net/ 2.之后就是检查世界各地的递归名称服务器。
首先,有点术语。每个人都使用该术语,但在DNS的上下文中,“传播”是错误的。因为当您更改权威名称服务器上的某些内容时,它们不会向世界上的所有其他递归名称服务器推送其更改,因为这几乎是不可能的。相反,递归名称服务器将在查询重定向到它们之后(除了少数自动缓存更新的特殊情况),"在某个时间点"(这取决于区域内容、其缓存状态和本地策略)再次联系其中一个权威名称服务器并提取最新数据。
因此,您可以开始查询一些“众所周知”的开放式递归名称服务器,以查看它们对您的资源学到了什么:1.1.1.18.8.8.89.9.9.9,以及您自己的本地名称服务器(运行在自己的服务器上或使用ISP的名称服务器)。同时使用多个名称服务器可能很有用,因为它们的缓存状态将不同,这将影响上述结果。
以下是当您查询特定递归名称服务器获取资源时发生的确切情况的一些详细信息:
  • 如果您的域名/资源的缓存完全为空(例如刚重启),它将立即查询权威名称服务器以获取信息,因此您的更改对其和所有客户端都是立即可见的。
  • 这个资源将根据权威名称服务器给出的TTL进行缓存。 "通常"这是记录在递归缓存中保留的最长时间,在此期间它不会再次查询权威名称服务器以检查是否有更改。两个重要点:一,共识是标准要求它成为最大值,因此缓存可以在此之前清除它(例如空间受限制的缓存可能希望驱逐最旧的条目以腾出一些空间); 二,众所周知,一些名称服务器和/或名称服务器部署将更改TTL值,出于任何本地策略,因此它们可能会将其延长,例如如果他们认为它太低了(从某种程度上来说,这被认为是违反标准的情况,但也存在这种情况,人们将TTL设置为1或5秒,这同样很愚蠢)
  • 现在,另一个经常使人困惑的重要案例,特别是那些测试的人。如果您在区域文件中添加新资源,但在更改之前查询其存在性,则权威名称服务器将回复NXDOMAIN("此资源不存在"),递归名称服务器也会缓存此信息,称为"负TTL"的一定时间(它仍然是作为延迟的正数,但称为负,因为它适用于负回复,例如"此资源不存在")。因此,在某种程度上,您会"污染"缓存,因为如果您在权威名称服务器中进行更改,并在之后立即查询您的递归名称服务器,它仍将回复"没有这样的资源",因为它在其缓存中具有此信息。

因此,关键点始终是清楚地分离对权威和递归名称服务器的测试,并充分了解递归缓存附加的属性。


0

Route53是一种分布式DNS管理系统。当您在托管区域内创建新的CNAME或任何记录集时,需要将其传播到运行在AWS边缘位置的分布式服务器。这可能需要几秒钟到几分钟。

注意:记录集的创建传播与更新不同。这是因为即使在更新后,旧的记录集仍可能存在于外部缓存中定义的TTL值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接