如果我为同一主机创build多个DNS Alogging,例如:
my-domain.com A 1.2.3.4 3600s my-domain.com A 4.5.6.7 3600s my-domain.com A 7.8.9.0 3600s
查询是否真的在三台服务器之间循环? 它是甚至?
我们假设一个客户请求my-domain.com并取回1.2.3.4 。 然后是caching一个小时,所以客户端的每个请求将使用1.2.3.4 ,或每个请求将抓住一个随机的主机?
如果4.5.6.7发生故障,DNS会自动将其取出,或者请求仍然以循环方式路由到它,会发生什么情况?
是的,您可以为同一服务使用多个DNSlogging实施一些负载共享。 但是,这并不是实现负载分配的最佳方法,尤其是在所有主机都位于同一位置的情况下。 更高效的方法是使用专用的机器作为负载平衡器。 这台机器接收所有stream量,并根据以下几个标准将其转发给其中一台真实服务器:
负载平衡器(如haproxy)中另一个重要的一点是能够检查失败的节点并将其从服务器列表中排除,而这在基于DNS的方法中不可用。
此外,DNScaching使事情变得更加复杂和难以pipe理。 DNScaching可以发生在客户端到任何中间DNS服务器的任何节点,直到到达权威DNS服务器。
是的,它将在三者之间循环。 对于Windows服务器DNS,您需要在您的DNS服务器中启用循环。 启用时,它将以旋转模式响应所有三条logging:
第一个客户 – 1.2.3.4,4.5.6.7,7.8.9.0
第二客户 – 4.5.6.7,7.8.9.0,1.2.3.4
第三方客户 – 7.8.9.0,1.2.3.4,4.5.6.7
这取决于客户端的实现。 有些客户端将在每个连接的logging之间旋转,有些客户会倾向于使用收到的第一个地址。 由于上面的第二个客户端与第一个客户端有不同的有序列表,负载仍然是平衡的。
如果4.5.6.7下降,它不会被自动删除。 客户仍然会尝试在该IP上进行连接。 这是Round Robin DNS的缺点。