对于小型站点来说,地理冗余 DNS 根本就没有必要。

对于小型站点来说,地理冗余 DNS 根本就没有必要。

这是一个典型问题关于 DNS 地理冗余。

众所周知,在提供弹性 Web 服务时,位于不同物理位置的地理冗余 DNS 服务器非常可取。文档对此进行了深入介绍16号作战计划但最常提到的原因包括:

  • 防范数据中心灾难。地震时有发生。机架中发生火灾,导致附近的服务器和网络设备损坏。如果数据中心的物理问题导致两台 DNS 服务器同时瘫痪,即使它们不在同一行,多台 DNS 服务器也帮不上什么忙。

  • 防范上游对等问题。如果共享上游网络对等体出现故障,多个 DNS 服务器也无法避免问题。无论上游问题是否完全导致您离线,或只是将您的所有 DNS 服务器与一小部分用户群隔离,最终结果都是人们无法访问您的域,即使服务本身位于完全不同的数据中心。

这一切都很好,但如果我使用同一个 IP 地址运行所有服务,冗余 DNS 服务器真的有必要吗?如果没人能访问我的域提供的任何内容,我看不出拥有第二个 DNS 服务器会给我带来什么好处。

我知道这被认为是最佳做法,但这真的似乎毫无意义!

答案1

笔记:内容有争议,请参阅两个答案的评论。已发现错误,此问答需要彻底修改。

我暂时删除了对这个答案的接受,直到这个规范问答的状态得到妥善解决。(删除这个答案也会删除附加的评论,在我看来这不是解决办法。经过大量编辑后,可能会将其变成社区维基答案。)


我可以在这里引用 RFC 并使用技术术语,但这是一个被忽略的概念很多知识范围两端的人们,我将尝试为更广泛的受众回答这个问题。

我知道这被认为是最佳做法,但这真的似乎毫无意义!

这似乎毫无意义......但事实并非如此!

递归服务器非常擅长记住远程服务器何时不响应查询,尤其是当它们重试但仍然没有收到回复时。许多实现这些通信故障的负面缓存,并将暂时将不响应的名称服务器放入惩罚箱,时间不超过五分钟。最终,这个“惩罚”期到期,它们将恢复通信。如果错误查询再次失败,它们将立即回到惩罚箱,否则一切恢复正常。

这就是我们遇到单一名称服务器问题的地方:

  • 处罚期限按执行性质总是会大于或等于网络问题的持续时间。在几乎所有情况下,它都会更大,最多会额外增加五分钟。
  • 如果您的单个 DNS 服务器进入惩罚区,则与故障相关的查询将在整个持续时间内完全失效。
  • 互联网上发生短暂路由中断的次数比大多数人意识到的要多。TCP/IP 重传和类似的应用程序保护措施可以很好地向用户隐藏这种情况,但在某种程度上这是不可避免的。互联网在很大程度上可以很好地绕过这种损害,这要归功于支持网络堆栈的各种标准中内置的安全措施……但这也包括 DNS 中内置的安全措施,而拥有地理冗余 DNS 服务器就是其中的一部分。

长话短说,如果您使用单个 DNS 服务器(包括在NS多个记录中使用同一个 IP 地址多次),就会发生这种情况。这种情况发生的次数也会比您想象的要多得多,但问题会非常零散,以至于故障 1) 被报告给您、2) 被重现和 3) 与此特定问题相关的几率极接近于零。它们几乎如果您进入此问答环节时不知道此过程如何进行,那么答案为零,但幸运的是,现在情况并非如此!

这会让你感到困扰吗?这其实不是我该说的。有些人根本不会在意这个五分钟的打扰问题,我在这里并不是要说服你。我这里要说服你的是,你确实会因为只运行一个 DNS 服务器而牺牲一些东西,而且全部场景。

答案2

OP 询问:

这一切都很好,但如果我使用同一个 IP 地址运行所有服务,冗余 DNS 服务器真的有必要吗?如果没人能访问我的域提供的任何内容,我看不出拥有第二个 DNS 服务器会给我带来什么好处。

好问题!

最佳答案来自Daniel J. Bernstein 教授,伯克利博士他不仅是世界知名的研究员、科学家和密码学家,还编写了非常受欢迎且广受好评的 DNS 套件,名为域名解析服务最后发布于 2001-02-11,至今仍然很受欢迎)。

http://cr.yp.to/djbdns/third-party.html(2003年1月11日)

第三方 DNS 服务的成本和优势

请注意这个简短而简洁的部分:

关于第三方 DNS 服务的错​​误论点

第二种策略是声称,广泛使用的 DNS 客户端在无法访问所有 DNS 服务器时会做出特别邪恶的事情。这种说法的问题在于,这种说法是错误的。任何这样的客户端显然都是有缺陷的,无法在市场上生存:考虑一下如果客户的路由器短暂瘫痪,或者客户端网络暂时被淹没。

因此,这个问题的原始答案是错误的。

是的,持续几秒钟的短暂网络中断确实时有发生。不,在这种中断期间解析名称失败的情况不会被缓存几分钟(否则,即使拥有世界上最好的高可用性权威名称服务器设置也无济于事)。

任何自由实施保守指导方针的软件最多 5 分钟来自 1998-03 RFC缓存失败仅仅是设计上的缺陷,而拥有额外的地理冗余服务器不会造成影响。

事实上,根据DNS 超时缓存多长时间?在 BIND 中,SERVFAIL条件传统上是不是2014 年之前完全不缓存,自 2015 年以来,默认缓存仅需 1 秒,低于普通用户达到解析器超时然后再次点击“刷新”按钮。

(甚至在我们讨论是否应该缓存解析尝试之前,甚至在第一次 SERVFAIL 发生之前,也需要丢弃多个数据包才能发生。)

此外,BIND 开发人员甚至还实现了天花板对于该功能,仅为 30 秒,即使作为上限(例如,该功能将接受的最大值),也已经比 RFC 中的 5 分钟(300 秒)建议低 10 倍,确保即使是最善意的管理员(眼球用户)也不会能够搬起石头砸自己的用户的脚。


此外,还有很多为什么你可能会不是想要运行第三方 DNS 服务--通读全文djbdns/third-party.html以了解所有细节并且,当除了 BCP 16 之外没有其他需要时,仅仅为了自己管理 DNS 而租用一个小型额外服务器是没有必要的。

就我个人自 2002 年以来拥有和设置域名的“轶事”经历而言,我可以非常肯定和诚实地告诉你,我实际上总共拥有由于我的注册商和托管提供商使用专业的第三方服务器,导致我的多个域名长时间停机,这些提供商一次又一次地发生故障,多年来,所有提供商都发生过故障,无法使用,导致我的域名不必要地瘫痪,而与此同时,我自己的 IP 地址(特定域名的 HTTP 和 SMTP 托管地址)却完全可以访问。请注意,这些中断发生在多个独立、受人尊敬且专业运营的提供商身上,绝不是孤立事件,而且每年都会发生,作为第三方服务,完全不受你的控制;但实际上很少有人长期谈论它。


简而言之:

对于小型站点来说,地理冗余 DNS 根本就没有必要。

如果你正在跑步全部您的服务脱离相同的 IP 地址,添加第二个 DNS 很可能会导致额外的故障点,并且对域的持续可用性有害。 “智慧”总是在任何可以想象的情况下都必须这样做确实是一个非常流行的神话;被破灭了。

当然,如果域名的某些服务(无论是 Web(HTTP/HTTPS)、邮件(SMTP/IMAP)还是语音/文本(SIP/XMPP))已经由第三方提供商提供,那么建议会完全不同,在这种情况下,消除您自己的 IP 作为单点故障确实是一种非常明智的方法,而地理冗余确实非常有用。

同样,如果您有一个特别受欢迎的网站,拥有数百万访问者,并且有意需要 BCP 16 规定的地理冗余 DNS 的额外灵活性和保护,那么……您可能已经不再使用单个服务器/网站来处理网络/邮件/语音/文本,因此这个问题和答案显然不适用。祝你好运!

相关内容