给自己的服务器域名绑定多个ip地址,客户端每次访问你的服务器域名时,dns服务器会将你域名绑定的ip地址列表返回给客户,这个列表里的ip地址是轮询的,比如:
第一次域名解析:14.215.177.38 14.215.177.39
第二次域名解析:14.215.177.39 14.215.177.38
实践证明:在centos下使用dig命令来访问dns服务器
[root@192 ~]# dig www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42913
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 118 IN A 14.215.177.38
www.baidu.com. 118 IN A 14.215.177.39
;; Query time: 15 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: 四 6月 24 19:11:51 CST 2021
;; MSG SIZE rcvd: 63
[root@192 ~]# dig www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55386
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 118 IN A 14.215.177.39
www.baidu.com. 118 IN A 14.215.177.38
;; Query time: 1 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: 四 6月 24 19:11:51 CST 2021
;; MSG SIZE rcvd: 63
而浏览器会选择列表里的第一个ip地址作为目标地址,这样就简单地实现了负载均衡,但其中有两个问题:
- 如果有一台服务器崩了,dns仍然会返回那台服务器的ip地址,即使浏览器可以在发现无法访问时切换到另一个ip地址,但前一个地址的无法访问会增加响应时间,我们希望的是对于崩溃的服务器访问都不应该访问
- 对于相关联的请求都应该导向同一台服务器的场景,dns服务器无法满足需求,所以对于更复杂的需求需要使用负载均衡器