niX*_*Xar 3 domain-name-system linux cluster multicast
我正在使用由 MAN(桥接)链接的两个数据中心进行设置,它们之间的所有内容都加倍,在故障转移模式下使用 RedHat Cluster、DRBD 和类似的东西。
我为每个位置都有一个 DNS 服务器,但事实证明,在 /etc/resolv.conf 中同时拥有这两个服务器并没有多大帮助;如果出现故障,客户端有一半的时间会等待 10 秒左右。换句话说,它使用它们进行负载平衡,而不是故障转移。所以我将两台服务器配置为使用带有 ucarp (?VRRP) 的 VIP。
有没有办法让我的两个 DNS 服务器都启动,例如,一直响应同一个 IP?如果一个 NS 请求得到两个答案,这没什么大不了的。
有没有办法用任播/多播等来做到这一点?
编辑:事实证明任播在我的场景中对我没有任何好处,我只有静态路由,而且大多数流量实际上是通过一座桥。
如果可能的话,让两个 DNS 服务器响应同一 IP 上的请求的方法会很有趣。
您可以通过在 resolv.conf 中设置几个选项来大量缓解问题:
选项轮换超时:2
rotate 使解析器随机选择一个您的名称服务器,而不是使用第一个,除非它超时。timeout:2 将 dns 超时减少到两秒,而不是默认值。
(注意:这是在 Debian/Ubuntu 上测试过的,但我认为这不是 Debian 特定的更改)
Anycast DNS 允许您在所有客户端中配置一个解析器 IP;客户端请求将被转发到“最近”(从网络路由的角度来看)服务器。
如果您将任播 VIP 的广告与健康检查相关联(例如,请求知名域的 A 记录),那么如果您的一台服务器失败,其路由将被撤销。一旦网络重新融合,所有请求都将转发到其他设备,无需任何手动重新配置。
在实施方面,这可以通过使用硬件设备(例如 F5 Big IP、Citrix Netscaler)或通过您自己的配置来完成。您可以运行在您的 DNS 服务器上运行的路由守护程序(例如 Quagga),或者使用一些登录到您的路由器的自定义脚本来更改每个任播 VIP 的状态。