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