为什么多次ping相同的主机名时会得到不同的IP地址?

尝试parsing域名三次时,我有三个不同的IP地址。 所有这三个乒乓都发生在几秒钟内。 这是正常的吗? 我不认为DNS服务器可以这么快更新,所以我的猜测是,这是与负载平衡有关。

到目前为止,我只是注意到了bestbuy.com的这一点,我试了一下,因为有一位朋友报告说,昨天晚上访问bestbuy.com时,他被redirect到百思买土耳其和韩国百思买。

G:\>ping bestbuy.com Pinging bestbuy.com [77.67.19.107] with 32 bytes of data:... G:\>ping bestbuy.com Pinging bestbuy.com [69.31.49.74] with 32 bytes of data:... G:\>ping bestbuy.com Pinging bestbuy.com [69.31.49.73] with 32 bytes of data:... 

(可能是serverfault更好的问题,但是…)

如果你在bestbuy.com上做nslookup:

 localhost /home/me > nslookup Default Server: #############.com Address: 192.168.252.11 > bestbuy.com Server: ####################.com Address: 192.168.252.11 Non-authoritative answer: Name: bestbuy.com Addresses: 77.67.19.120, 77.67.19.107 > 

请注意,有多个IP地址对应于此IP名称。 其主要目的是提供故障转移。 如果他们的网站之一进入DOA,那么另一个将继续接受入站stream量。 这样做的好处是,当一切正常运行时,他们可以共享两个农场之间的stream量负载。

这个问题错误的网站,但我的猜测是负载平衡

原因是因为bestbuy.com区域的区域文件包含多个Alogging,例如:

 @ IN A 77.67.19.120 @ IN A 77.67.19.107 

这是为了负载平衡的目的。

看挖:

 # dig bestbuy.com ; <<>> DiG 9.5.0-P2.1 <<>> bestbuy.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 395 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;bestbuy.com. IN A ;; ANSWER SECTION: bestbuy.com. 20 IN A 173.223.232.48 bestbuy.com. 20 IN A 173.223.232.98 ;; Query time: 52 msec ;; SERVER: 72.249.191.254#53(72.249.191.254) ;; WHEN: Sat Aug 14 14:26:35 2010 ;; MSG SIZE rcvd: 61 

正如上面所指出的那样,它们是为了负载平衡,故障转移等而做的。但是这是一个非常不安全的方法,因为DNS负载平衡的工作方式接近循环法:每当你要求一个主机名时,DNS服务器都会回答其中一个池(就像你在ping中发现的那样)。 不幸的是,这意味着如果其中一个“服务器”出现故障,一半的请求将会失败。

最好使用真正的负载平衡器或VIP(虚拟IP)来实现。