options rotate
我对 Ubuntu 16.04 LTS 上 /etc/resolv.conf 文件的行为有疑问。
摘自:DNS 和绑定, 它说:
rotate 可让您的解析器使用 resolv.conf 中的所有名称服务器,而不仅仅是第一个。只要解析器的第一个名称服务器运行正常,它就会为解析器的所有查询提供服务。除非该名称服务器非常繁忙或出现故障,否则解析器永远不会查询 resolv.conf 中的第二个或第三个名称服务器。如果您想分散负载,可以设置:
options rotate
让解析器的每个实例轮换使用 resolv.conf 中的名称服务器的顺序。换句话说,解析器实例仍然首先查询 resolv.conf 中的第一个名称服务器,但对于它查找的下一个域名,它首先查询第二个名称服务器,依此类推。
我发现上述描述有矛盾,或者至少不太清楚。我有两种解释:
一旦设置为 1 options rotate
,解析器将尝试使用第一个名称服务器,除非第一个服务器宕机。这意味着只要第一个服务器运行正常,查询就不会被负载平衡到剩余的服务器;
2 一旦options rotate
设置,解析将尝试将查询负载平衡到所有服务器,即使第一个服务器是健康的。
那么,哪种解释才是事实?
谢谢。
答案1
这是案例 2。
默认行为(没有任何选项)已经是第一种情况:始终使用第一个名称服务器,除非它没有回复,在这种情况下,查询将再次使用第二个名称服务器进行。每次查询都会重复此操作。因此,默认情况下,您有故障转移而不是负载平衡。
您可以通过将不回复 DNS 请求的 IP 地址作为第一个名称服务器来轻松测试这一点,在第一种情况下,您将看到所有请求都被延迟(在测试第二个名称服务器之前等待超时的时间),而在第二种情况下,您将有 50% 的请求很慢(如以前一样),而 50% 的请求很快,因为它们将直接到达第二个名称服务器。