DNS 性能:拥有多个辅助 NS 服务器是否可以提高性能?

DNS 性能:拥有多个辅助 NS 服务器是否可以提高性能?

当某个域具有主 NS 和多个辅助 NS 时,客户端会随机要求它们减少负载,或者它们只会访问主 NS,并且仅当主 NS 发生故障时才继续使用辅助 NS?

答案1

我将重复使用这里的示例https://serverfault.com/questions/130608/when-is-a-secondary-nameserver-hit/130625#130625

基本上这取决于解析器的实现。有些解析器会访问第一个服务器,其他解析器会从可用的服务器中随机选择一个。为了解决这个问题,大多数 DNS 服务器会随机化回复的顺序。

如果你询问 google.com,你会得到以下答案:

#dig NS google.com 
;; QUESTION SECTION:
;google.com.            IN  NS

;; ANSWER SECTION:
google.com.     297286  IN  NS  ns3.google.com.
google.com.     297286  IN  NS  ns2.google.com.
google.com.     297286  IN  NS  ns4.google.com.
google.com.     297286  IN  NS  ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.     297067  IN  A   216.239.32.10
ns2.google.com.     297074  IN  A   216.239.34.10
ns3.google.com.     297074  IN  A   216.239.36.10
ns4.google.com.     297067  IN  A   216.239.38.10

然后我们再做一次:

#dig NS google.com
;; QUESTION SECTION:
;google.com.            IN  NS

;; ANSWER SECTION:
google.com.     297249  IN  NS  ns3.google.com.
google.com.     297249  IN  NS  ns2.google.com.
google.com.     297249  IN  NS  ns1.google.com.
google.com.     297249  IN  NS  ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.     297030  IN  A   216.239.32.10
ns2.google.com.     297037  IN  A   216.239.34.10
ns3.google.com.     297037  IN  A   216.239.36.10
ns4.google.com.     297030  IN  A   216.239.38.10

请注意他们如何改变答复中的名称服务器的顺序以分散负载。

答案2

IPv4 解析器通常会按照数据包中的顺序使用服务器,第一个服务器通常会成功。DNS 服务器通常会随机化顺序以分散负载。IPv6 将改变这种情况,因为它需要最常见最高位的 IP 将成为最先联系的 IP。这将使 DNS 回复的随机化变得毫无意义。

答案3

就 DNS 递归服务器而言,“主”名称服务器和“辅助”名称服务器之间没有区别 - 从技术上讲,它们都只是“权威”服务器。

对负载平衡的有效性产生影响的唯一因素是:

  1. NS服务器本身返回记录列表的顺序
  2. 客户端是否随机选择一个
  3. 客户端是否使用其他启发式方法(即往返时间 - RTT)来选择“最快”的服务器

在这些因素中,第一个是至少很重要。随机挑选并使用 RTT 更为常见。

答案4

如果您谈论的是 DNS 服务器,而不是 DNS 缓存,那么它将随机询问服务器。主服务器仅仅是对域具有权威性的其他服务器的 DNS 记录的来源。这也可能只是在您使用 axfr 作为复制 DNS 的方法时才有意义,当使用其他形式的复制来查询后端(例如数据库或 ldap 目录)时,SOA 中记录的意义就更小了。有一个例外,那就是如果您使用动态 DNS 更新,那么 dhcp 客户端将使用其 IP 上的更新信息联系此服务器。

相关内容