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 服务器(这包括跨NS记录多次使用相同的 IP 地址),就会发生这种情况。它也将发生的比您意识到的要多得多,但问题将如此零星,以至于失败的几率 1) 被报告给您,2) 被复制,以及 3) 与此特定问题相关的概率非常接近零。他们几乎是零,如果你来到了这个Q&A不知道这个过程是如何工作的,但幸运的是,不是现在应该是这样的!
这应该打扰你吗?这真的不是我要说的。有些人根本不会关心这个五分钟的中断问题,我不是来说服你的。我在这里要说服您的是,您实际上通过仅运行单个 DNS 服务器并在所有情况下都牺牲了一些东西。