您可以在DNS中为服务器设置备份IP吗?


10

DNS协议是否可以自然地保留备份A记录服务器地址,例如备份名称服务器或邮件服务器记录?搜索时,我仅在备份名称服务器(NS记录)上看到结果。

如果DNS无法支持备份A记录,那么模拟结果的最佳方法是什么,以便在主服务器不响应的情况下将用户定向到正在运行的服务器?

Answers:


12

是的。

您可以在此处执行两项操作:如果您将多个A记录放入给定名称的DNS服务器中,那么它们将全部提供给客户端,并且这些客户端将从集合中选择一个进行连接,这意味着流量将同时在所有站点之间平均分配。这似乎并不是您真正要描述的内容,但这是一种常见情况(尽管出于各种原因,我不信任它)。

另一种选择是,您仅在DNS服务器中放置一个A记录,然后DNS服务器(或其辅助设备,例如监视脚本)会监视您站点的主地址,如果失败,则DNS服务器的A记录将更改为您的其他站点。这意味着一次仅一个站点将获得流量。

第二种策略的缺点是DNS缓存。拥有旧站点地址的任何人都将是SOL,直到清除包含旧地址的DNS缓存条目为止。这意味着您必须保持TTL低(增加DNS基础结构的负载,尽管这很少是实际问题),但是仍然存在“恶意” DNS缓存的问题,这些缓存不支持TTL。这些对任何人来说都是巨大的痛苦 曾经必须更改DNS条目的人,但对于那些需要“经常”更改DNS条目的人来说,情况要差一百万倍(希望您的站点每天不会关闭几次,但仍然...)基本上,任何人在其中一个行为不当的DNS缓存后面,您会看到您的网站在很长一段时间内处于“关闭”状态,然后尝试向他们解释这是DNS缓存出了问题... Eugh。

简而言之,我不会在网站上这样做,因为有更好的方法来减轻您正在考虑的任何风险,但是如果您需要有关减轻风险的建议,则需要描述该风险。


风险是如果主服务器出现故障(无论出于何种原因),我希望将我的用户转发到备用服务器。我的意思是,在过去的一年中,我的服务器曾经运行一次(灾难性的RAID失败)。我进行了备份,因此数据很安全,但是我的网站关闭了12个小时。我虽然使用“适当”的修复程序将是我的常见问题。我虽然公司会想要一个备份计划。
kjones1876

9
您不需要DNS故障转移,需要更可靠的硬件,也可能需要热备用服务器。
womble

“流氓DNS缓存”是一个古老的妻子的故事。没有实际的DNS服务器软件表现出忽略TTL的行为。DNS数据以引起问题的方式缓存的地方是应用程序,例如臭名昭著的Netscape Navigator的查找缓存问题
JdeBP

@JdeBP:用凯文·科斯特纳(Kevin Costner)的话说:“流氓DNS缓存不是神话……我见过它们!” 我已经进行了挖掘,并看到了疯狂和令人不安的结果。在那种事情很普遍的时代(例如,以ISDN为上行链路的拨号ISP),在带宽受限和延迟受延迟的服务中最受欢迎的服务,现在它们被那些听说过这种服务的人广泛使用。很久以前就提出过这个想法,但从那时起就再也没有改变过主意(不是说那时他们是一个特别好的主意……但是)。
womble

6

每个人似乎都认为您在谈论WWW服务器,即使您明确写了

像备用名称服务器或邮件服务器

通常被忽略的事实是,HTTP服务是例外,而不是规范。在正常情况下,对了,还有就是对于通过DNS,使他们正确地回退从主服务器备份服务器对客户端发布信息的机制。 该机制是SRV资源记录,服务客户端将其用于HTTP 以外的许多其他协议。 请参阅RFC 2782。

通过SRV资源记录,客户端将被告知具有优先级和权重的服务器列表,并被要求按优先级顺序尝试服务器,根据权重在优先级相同的服务器之间进行选择,比低权重的服务器更频繁地选择权重较高的服务器那些。因此,SRV利用资源记录,服务器管理员可以告诉客户端回退服务器是什么,以及如何在一组等优先级服务器之间分配负载。

现在,内容DNS服务器通过自己的特殊资源记录类型即资源记录来定位,这些NS记录没有优先级和权重信息。同样,SMTP中继服务器按其自己的特殊类型的资源记录定位MX,该记录具有优先级信息,但没有加权信息。因此,对于内容DNS服务器,没有发布后备和负载分配信息的准备;如果使用的是MX资源记录,那么对于SMTP中继服务器,则没有发布负载分配信息的规定。

但是,SRV现在存在支持MTS。(第一个是eximSRV自2005年以来一直具有此功能。)对于其他不受协议MXNS资源记录限制的服务协议,SRV采用情况要更加彻底和广泛。例如,如果您拥有Microsoft Windows域,则可以通过SRVDNS中的查找找到整个服务范围。在这一点上,已经有十多年的历史了。

问题在于,每个人都想到HTTP,而到目前为止,在2011年的今天,HTTP是这里的例外而不是规则。


尽管srv记录非常适合在控制环境的情况下内部网络使用,但它们只是不像具有异类客户端的外部服务器那样使用。您不知道将访问记录,因为您不知道客户端是否支持访问srv记录。
Michael Lowman

1
同样,您让HTTP控制您的想法。对于上面提到的许多客户端,SRV记录是定位服务的定义方式。还应注意,问题是该机制是否存在以及它是什么。机制存在,这就是机制。它已经被广泛使用了十年。
JdeBP 2011年

您肯定是对的,srv肯定是正确的机制,实际上它在做其他事情,尽管DNS无法做到,但我希望它能做到。遗憾的是,没有浏览器的支持srv。另外,尽管问题是特定于HTTP的,因为我说“就像备份名称服务器或邮件服务器”,这意味着备份解决方案已经存在。
kjones1876

1

如果您要提供动态内容,而仅让两台服务器同时提供内容是不切实际的,那么另一种选择是无论如何都要在DNS上拥有多个记录,并配置备份服务器以使尝试连接到该客户端的客户端无法访问ICMP端口; 如果主服务器在任何时候出现故障,那么您只需删除备份上的端口80块,流量就会开始进入。

您将能够执行此操作的唯一其他(预算)方式是设置一台单独的计算机(或两台)以对请求执行NAT,因此,如果Web服务器死亡,则只需为其删除NAT规则。


我本来是讨厌您的第一个主意的,但是我只是在主服务器上关闭了apache,但是浏览器一直在尝试连接。但是,将Apache路线设置为ICMP错误吗?如果不是,我该如何通过ICMP错误使服务器正常运行?
kjones1876

不,连接只会超时,您应该像这样正确地拒绝iptables:
Olipro

iptables -I INPUT -p tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable
Olipro 2011年

我很累,人们根本无法连接...。我什至拔掉了我正在测试的服务器。
kjones1876

发问者不是只在谈论WWW服务器。实际上,xe明确提到了邮件和名称服务器。
JdeBP 2011年

0

没有备份A记录,但是可以有几条以随机顺序给出的A记录。

大多数浏览器能够在另一台服务器出现故障时尝试另一台服务器。(请参阅:具有Round Robin DNS的Web弹性

您可以使用VRRPCARP将一个群集IP地址由多台服务器支持。当主服务器发生故障时,备份服务器将接管该地址。


发问者不是只在谈论WWW服务器。实际上,xe明确提到了邮件和名称服务器。
JdeBP 2011年

@JdeBP:哦。我似乎是瞎子。抱歉:P
jkj 2011年

0

是的,但是您必须自己做;-)

您能否提供更多有关为什么要“备份A记录”以及如何以及在何种情况下要进行备份的信息。

另外,从网络角度了解主主机和备用主机之间的关系也将很有帮助。


0

这是一个相当老的问题,但是答案中没有提到两项相当重要的技术:动态DNS和CDN。

设置了动态DNS,以便可以几乎实时地修改DNS记录,以便监视客户端可以根据服务可用性指示触发对公共DNS A记录的更改。(当然,您的DNS托管服务必须支持动态DNS。)

CDN也可以用于交付DNS,例如Cloudflare(我相信它于2010年推出)就是这样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.