在周五的 Dyn 中断之后,我们正在考虑添加一个二级权威 DNS 提供商。我们想了解如果其中一个供应商出现故障,对现实世界的影响。
例如,如果我们的 NS 记录看起来像
ns1.provider-a.com
ns1.provider-b.com
ns2.provider-a.com
ns2.provider-b.com
并且 provider-a 或 provider-b 出现中断,在最坏的情况下(没有缓存)用户会体验到什么?我希望得到有效响应的延迟增加(如果解析器首先尝试到达停机的服务器),或者可能有 50% 的时间解析失败。如果行为依赖于实现,那么任何对各种行为的传播的理解都会非常有帮助。
简而言之,它应该按照您需要的方式运行。
权威 DNS 旨在快速和容错。编写递归解析器是为了尽快从您的服务器池中获得有效的权威响应,其中包括假设一个或多个可能运行缓慢、不负责任或配置错误(
SERVFAIL
响应)。一个或多个不可用的服务器在获取答案时可能会导致轻微(可忽略的)开销,但一旦获得该答案,它就可以在该记录的 TTL 中指定的持续时间内缓存。只有在记录未缓存时发出请求的用户会看到小延迟,其他请求会立即得到响应。通信失败的负缓存是可选的并且经常实现(参见RFC 2308 §7),但不会在退避方面产生太多收益。失败最多只能存储五分钟,并且每次查询只能记住。(
<query name, type, class, server IP address>
) 如前所述,这不应该是一个问题,我提到这个细节主要是为了避免混淆。您将遇到的最大问题是同步。您必须监视所有这些权威服务器的序列号是否不同步。递归解析器将信任您的第一个返回权威响应的服务器。如果一台服务器返回
NXDOMAIN
但其他服务器没有返回,则该记录的不存在可能会被缓存超过五分钟,具体取决于您的SOA
记录的配置方式。总而言之,了解无响应/配置错误的服务器的负缓存与正确响应的服务器之间的区别非常重要。功能正常且响应的服务器,但服务于该区域的陈旧副本,可以并且将比在此配置中的非功能对应物造成更大的损害。如果您可以避免陷入该陷阱,那么新配置在您提议的故障场景中应该是可靠的。
(警告:我假设提供商 A 和提供商 B 都是地理冗余提供商,他们知道自己在做什么。任何打算在内部担任这些角色之一的人都应该完整阅读BCP 16并确保他们拥有 DNS 专家在他们的雇员中。曾经读过一本关于它的书的服务器管理员正在玩火。)