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

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

我尝试解析域名三次,得到了三个不同的 IP 地址。这三次 ping 操作都发生在几秒钟之内。这是正常的吗?我不认为 DNS 服务器可以更新得这么快,所以我猜这与负载平衡有关。

到目前为止,我只在 bestbuy.com 上注意到了这个问题,我尝试了一下,因为一位朋友报告说,昨晚访问 bestbuy.com 时他被重定向到 Best Buy Turkey 和 Best Buy Korea。

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:...

答案1

(对于 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 名称相对应。这样做的主要目的是提供故障转移。如果其中一个 Web 场发生 DOA,则另一个将继续接受入站流量。这样做的积极副作用是,当一切正常运行时,他们可以在两个 Web 场之间共享流量负载。

答案2

这个问题的网站不对,但我猜是负载平衡

答案3

原因是 bestbuy.com 区域的区域文件包含条目 @ 的多个 A 记录,例如:

@                IN        A         77.67.19.120
@                IN        A         77.67.19.107 

这样做是为了平衡负载。

答案4

看看挖掘:

# 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)来实现。

相关内容