我可以使用哪种方法来自动监控DNS故障转移?

由于延迟原因,我们正在全球运行多个冗余服务器。 目前,如果一个网站出现故障,我们让另一个网站接pipe该区域的唯一方法是通过DNS。

我们希望自动执行此过程,例如,如果通过监视工具检测到某个站点发生故障,则可以replace/修改区域文件。

我的Google技能只能让公司提供这个服务,但我们更喜欢我们自己的解决scheme。 为了监控我们目前使用的Nagios,我们的名称服务器是Bind。

有没有什么工具/方法来完成这个?

事实上,这些服务也在做什么。 🙂

这取决于你目前是如何redirect/分配你的用户全球。 假设结果是有效的,一些用户从www.example.comredirect到www.eu.example.com和其他人到www.oc.example.com和www.am.example.com。

您可以使用您的监控解决scheme,以便当www.am.example.com变得无响应时,不仅会触发正常警报,而且会更新www.am.example.com指向www.eu.example.com。

一个干净的方式是dynamic更新 ,这是一种通过发送特殊forms的DNS消息来添加,replace或删除主服务器中的logging的方法。 这些消息的格式和含义在RFC 2136中规定。

dynamic更新通过在区域语句中包含allow-updateupdate-policy子句来启用。 有关更多信息,请查看“ 绑定pipe理员参考手册” 。

最干净的是可能使用基于IP的访问控制和DNS公钥。

创build密钥对:

 dnssec-keygen -a HMAC-MD5 -b 512 -n USER nagios.example.com. 

这应该导致两个文件,一个用于私钥Knagios.exmaple.com.NNNN.private ,另一个用公钥Knagios.exmaple.com.NNNN.key

更新你的绑定configuration:

 key nagios.example.com. { algorithm HMAC-MD5; secret "<string with contents from Knagios.exmaple.com.NNNN.key>"; }; zone "am.example.com" { type master; file "/etc/bind/zone/am.example.com"; allow-update { key nagios.example.com.; }; ... }; 

然后使用Bind nsupdate实用程序引发警报时执行以下操作的脚本:

 cat<<EOF | /usr/bin/nsupdate -k Knagios.exmaple.com.NNNN.private -v server ns1.example.com zone am.example.com update delete www.am.example.com. A update add www.am.example.com. 60 A <ip-address-of-www.eu.example.com> send EOF 

我不确定你是否被允许使用dynamic更新除了Alogging之外A任何东西。

没有。 你的方法被打破了。

你似乎是在这样的错觉,你可以改变DNS。 它不这样工作。 即使您将TTL设置得较低,一些提供商也会忽略它 – 而您的旧值仍将被使用。 在“一两天之内”之外,您实际上无法控制DNS到期。

基于DNS更改的任何高可用性因此都有根本的缺陷。