我目前是混合网络中一些 RHEL Linux 机器的管理员。我们的 DNS 服务器是 Windows AD 控制器。因此,它们偶尔需要停机进行维护。(例如:修补)这意味着在某个时候,我的 Linux 机器的主 DNS 控制器将无法访问。
在 Windows 世界中,这个问题处理得相当好。当对主服务器的 DNS 查询失败时,Windows 客户端将停止使用它 15 分钟。因此,除了最初的小问题,它们都运行得相当顺利。但 Linux 会继续尝试同一个(失败的)主服务器。默认情况下,它会等待至少 5 秒钟,然后再尝试辅助服务器。这意味着所有事情都需要很长时间,如果 DNS 查询次数很多,甚至应用程序也会超时。
因此,我正在研究如何使我的服务器更加强大。我目前的计划是 A) 修改 resolv.conf,使其仅等待半秒响应,并且不重试。以及 B) 可能对 /etc/hosts 进行一些战略性输入,以便主要服务器仍可快速访问。
话虽如此,我还是希望能有更好的解决方案。或者,我想听听其他人是如何设置它们的。或者只是理论上的”您的想法很好/不好,原因如下。”
——克里斯托弗·卡雷尔
答案1
你可能会考虑使用域名系统而不是仅仅依靠解析器库 - dnsmasq 以并行而不是串行方式查询上游服务器,因此一次丢失不会导致那么多问题。
答案2
也许运行nscd
并添加
options rotate
已经/etc/resolv.conf
为你解决了问题。
答案3
一个更简单的解决方案是在一定时间内(维护窗口)重定向流量。
如果您有备用机器,您可以临时为其指定主服务器的 IP。否则,您可以在路由器中部署重定向。如果数据包的目的地是主服务器,您可以将其重定向到辅助服务器
答案4
一个更难但更强大的解决方案是设置几个名称服务器(从属于 AD)并使用任播。http://en.wikipedia.org/wiki/Anycast#Domain_Name_System