这是对此处提出的问题的补充:GCP 到 AWS Hosted Zone 迁移
我已经从 GCP 导出 DNS 记录并将其导入 AWS。我还保留了 GCP 中的条目,以确保到达 GCP Clod DNS 的任何请求仍将得到解析。我已更新 DNS 注册商以将 NS 记录指向 AWS。但是,在此更改之后,我们的一些用户无法访问我们的服务器。我们的许多用户都可以访问服务器,但有些用户无法访问。可能是什么原因?
a) 在 AWS 中导入记录之后,在我更改注册商中的条目之前,是否应该留出一些时间?
b) 有没有一种安全的方法来检查 DNS 传播是否完成?我使用https://www.whatsmydns.net/进行了检查,我发现全世界的所有名称服务器都能够解析我的域名。但由于我们的一些用户抱怨,我不得不撤销在我的注册商中所做的更改。
如有任何提示我将不胜感激。
AWS 系统可能需要几分钟才能更新,因为它是一个大型平台,在全球及其组件中拥有大量“最终一致”的数据复制。不过,如果它需要几个小时,我会感到惊讶。
切换名称服务器后,在急于从旧提供商(GCP)删除数据之前,给它一些时间是更重要的,因为用户的解析器可能仍然会缓存旧的名称服务器记录一段时间,而且正如你正确猜测的那样,他们可能会尝试查询 GCP,直到该缓存条目过期。
这种传播在给定域的权威服务器之外不存在。当您在 AWS 上编辑 DNS 记录时,更改只需在 AWS 系统中“传播”即可 - 对于大多数 DNS 托管提供商而言,这通常是“即时”到“最差一小时”之间。
传统上,您可以通过查询每个名称服务器(例如
dig +nssearch
)来验证这一点,但对于使用任播(其中相同的 IP 地址会导致不同的实例)的 DNS 托管提供商来说,这变得很困难,因此使用其中一个“传播检查器”网站可能是最简单的方法。同样,当您要求注册商更新域名的名称服务器时,注册商会进行 API 调用(通常是立即执行),TLD 的注册中心会发布新的 NS 记录,它们只需在 TLD 的官方名称服务器中传播即可。我听说后两个步骤过去可能需要几个小时。
这也可以通过查询 TLD 名称服务器来部分检查;我喜欢用这个
dnstracer
工具来做这件事。当然,如果 TLD 使用任播托管,那么它只会检查每个服务器的最近实例,但这仍然是一个好的开始。除此之外,您的 DNS 数据不会主动传播到任何地方。相反,它会根据您(或您的 TLD 注册中心)在每个记录上设置的 TTL按需提取和缓存。解析器和用户唯一知道的数据是他们最近查询的数据。
这些缓存是独立的(每个公共解析器、每个 ISP 解析器、每个家庭路由器,甚至每台 Windows PC 都有自己的缓存),因此无法检查或清除所有缓存。例如,您可以要求 Google 的 8.8.8.8 从其全球范围内清除特定条目,但除此之外,您必须等待旧数据过期。这包括根据区域的 SOA MINTTL 缓存的“否定”答案。
(旧数据主要是名称服务器委派,可能仍会指示解析器查询 GCP 而不是 AWS......不过,只要新旧名称服务器都启动并使用相同的 A 记录进行响应,我不确定是否会有区别。)
我意识到了自己的错误。当我从 GCP 导出 DNS 记录时,所有配置为使用加权轮询策略的 A 记录都没有被导出!因此这些 A 记录从未导入到 AWS Route53。我现在已手动添加了所有这些 A 记录并更改了 GoDaddy 中的名称服务器条目。我希望它现在能正常工作。