为什么小型站点需要地理冗余 DNS?

And*_*w B 32 domain-name-system

这是一个关于 DNS 地理冗余的规范问题

众所周知,在提供弹性 Web 服务时,非常需要位于不同物理位置的地理冗余 DNS 服务器。文件BCP 16对此进行了深入介绍,但一些最常提到的原因包括:

  • 防止数据中心灾难。地震发生。机架发生火灾并烧毁附近的服务器和网络设备。如果数据中心的物理问题同时关闭两个 DNS 服务器,即使它们不在同一行,多个 DNS 服务器也不会给您带来多大好处。

  • 防止上游对等问题。如果共享的上游网络对等点小睡,多个 DNS 服务器将无法防止出现问题。无论是上游问题完全使您脱机,还是只是将所有 DNS 服务器与一小部分用户群隔离,最终结果都是即使服务本身位于完全不同的数据中心,人们也无法访问您的域。

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

我知道这被认为是最佳实践,但这似乎毫无意义!

And*_*w B 33

注:有争议的内容,两个答案见评论。已发现错误,此问答需要大修。

我暂时从这个答案中删除接受,直到这个规范问答的状态得到正确解决。(删除这个答案也会删除附加的评论,这不是 IMO 的方式。可能会在广泛编辑后将其变成社区 wiki 答案。)


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

我知道这被认为是最佳实践,但这似乎毫无意义!

这似乎毫无意义……但实际上并非如此!

递归服务器非常擅长记住远程服务器何时不响应查询,特别是当它们重试但仍然看不到回复时。许多人对这些通信失败实施了负面缓存,并将暂时将无响应的域名服务器放入罚箱,时间不超过五分钟。最终这个“惩罚”期到期,他们将恢复通信。如果错误的查询再次失败,它们会立即返回到框中,否则会像往常一样恢复业务。

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

  • 惩罚期的本质是实施总是大于或等于网络问题的持续时间。在几乎所有情况下,它都会更大,最多额外五分钟。
  • 如果您的单个 DNS 服务器进入惩罚框,则与失败相关的查询将在整个持续时间内完全停止。
  • 互联网上发生的短暂路由中断比大多数人意识到的要多。TCP/IP 重传和类似的应用程序保护措施在向用户隐藏这一点方面做得很好,但这在某种程度上是不可避免的。由于支持网络堆栈的各种标准中内置的保护措施,互联网在很大程度上解决了这种损害......其中的一部分。

长话短说,如果您使用单个 DNS 服务器(这包括跨NS记录多次使用相同的 IP 地址),就会发生这种情况。它也将发生的比您意识到的要多得多,但问题将如此零星,以至于失败的几率 1) 被报告给您,2) 被复制,以及 3) 与此特定问题相关的概率非常接近零。他们几乎零,如果你来到了这个Q&A不知道这个过程是如何工作的,但幸运的是,不是现在应该是这样的!

这应该打扰你吗?这真的不是我要说的。有些人根本不会关心这个五分钟的中断问题,我不是来说服你的。我这里要说服您的是,您实际上通过仅运行单个 DNS 服务器并在所有情况下牺牲了一些东西。

  • 缓存的邮件是一个典型的例子,说明您如何在 DNS 关闭的情况下与其他基础设施同时关闭。使用冗余 DNS,当您的站点关闭时,邮件只会在发件人的服务器上排队,并在恢复后发送。使用单一 DNS,当您宕机时发送的入站邮件通常会被发件人的服务器永久拒绝,并出现 *不存在的域 * 或类似错误。从外围(静止)系统发送的出站邮件可能*也*失败,因为发件人域当前无法解析。 (18认同)
  • 此外,域名通常不仅是网络,也是电子邮件。如果您为您的域使用电子邮件服务提供商,即使您的网络服务器已关闭,它们也可能不会关闭,并且如果您有多余的 DNS,您仍然可以接收电子邮件。 (5认同)