我dig
针对我拥有的某个域名(例如 domain.com)进行了测试。执行后dig domain.com
,我获得了如下结果:
;; ANSWER SECTION:
domain.com. 21600 IN A x.y.z.80
domain.com. 21600 IN A x.y.z.77
domain.com. 21600 IN A x.y.z.36
domain.com. 21600 IN A x.y.z.79
domain.com. 21600 IN A x.y.z.75
domain.com. 21600 IN A x.y.z.104
domain.com. 21600 IN A x.y.z.82
domain.com. 21600 IN A x.y.z.83
执行dig www.domain.com
给了
;; ANSWER SECTION:
www.domain.com. 2715 IN A x.y.z.101
这与所有以前的 IP 不同。www.domain.com 是一个简单的网站,它只有一个网络服务器、邮件服务器和 DNS 服务器。
但是,如果第一个列表中不包含 Web 服务器 xyz101,那么所有这些地址的含义是什么?它们可以指代哪些机器?
如果我输入pop3.domain.com
类似的列表,则会提供与第一个列表不同的 IP。我的问题是一样的。
这么简单的网站有这么多地址看起来很奇怪,而例如dig google.com
simpy 提供
;; ANSWER SECTION:
google.com. 300 IN A 216.58.212.110
答案1
这些发现并没有什么不寻常之处。您可以为一个 DNS 条目设置多个 A 记录,如第一个示例所示。您可以设置一个 A 记录,如第二个和第三个示例所示。
如果您的网站托管在多台服务器上,那么您通常会有多个 IP。所有结果的优先级都相同,因此人们每次都会解析到不同的服务器,从而将负载分散到各个服务器上。
无需在同一台服务器上有domain.com
和www.domain.com
(或fdkfdkj.domain.com
或dfjdf.sdfsdf.sdfdsf.domain.com
,www
这并不特殊,只是惯例),它们是完全不同的 DNS 名称。不过,在同一台服务器上有它们很常见。在上述情况下,地址可能会www.domain.com
重定向到domain.com
和,因为这就是发生的一切,www.domain.com
因此不需要多台服务器来支持负载。
还有其他方法可以分配负载。一种方法是使用虚拟 IP,连接会连接到非常快的负载平衡器,然后该平衡器会将请求传递到其他服务器。
另一种方法是严格控制 DNS 并每次返回一个 IP 地址,但每次请求返回不同的 IP 地址,而不是多个 IP,这样您就可以准确指定要处理连接的服务器,而不是让 DNS 随意丢弃一堆 IP 并让负载随机分配。