Web负载均衡的方法有很多,下面介绍几种常见的负载均衡方法。
1.用户手动选择方法
这是一种较为古老的方式。通过在主站首页入口提供不同线路、不同服务器连接的方式,来实现负载均衡。这种方式在一些提供下载的网站中比较常见。
2.DNS轮询方式
大多域名注册商都支持对同一主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析骑牛按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。
DNS轮询的成本非常低,在一些不重要的服务上,经常被使用。
下图为enom的域名Web管理界面,这里我们为api.bz域名添加一个二级域名ntp.api.bz(主机名为ntp),并为该域名添加多条A记录,让其DNS轮询7个IP,用7台服务器来做负载均衡。
添加完成后,我们用Linux下的dig命令查看ntp.api.bz域名的域名解析情况
[root@instance-3lm099to ~]# dig ntp.api.bz ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> test1.testa.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33762 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 19 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;test1.testa.com. IN A ;; ANSWER SECTION: test1.testa.com. 600 IN A 201.17.07.223 ;; AUTHORITY SECTION: testa.com. 172761 IN NS vip2.testdns.com. testa.com. 172761 IN NS vip1.testdns.com. ;; ADDITIONAL SECTION: vip1.testdns.com. 475 IN A 101.19.44.101 vip1.testdns.com. 475 IN A 110.215.1.1 vip1.testdns.com. 475 IN A 110.215.28.103 vip1.testdns.com. 475 IN A 110.215.208.11 vip1.testdns.com. 475 IN A 13.1.102.10 vip1.testdns.com. 475 IN A 42.66.22.111 vip1.testdns.com. 475 IN A 101.15.10.103 ;; Query time: 15 msec ;; SERVER: 192.168.0.88#13(192.168.0.2) ;; WHEN: Mon Jul 06 21:14:12 CST 2015 ;; MSG SIZE rcvd: 391
虽然DNS轮询的成本非常低,但是,DNS负载均衡存在两个明显的缺点。
(1).可靠性低
假设一个域名DNS轮询多台服务器,如果其中的一台服务器发生故障,那么所有的访问该服务器的请求将不会有所回应,这是任何人都不愿意看到的。即使从DNS中去掉该服务器的IP,但在Internet上,各地区电信、网通等宽带接入商将众多的DNS存放在缓存中,以节省访问时间,DNS记录全部生效需要几个小时,甚至更久。所以,尽管DNS轮流在一定程度上解决了负载均衡问题,但是却存在可靠性不高的缺点。
(2).负载分配不均衡
DNS负载均衡采用的是最简单的轮询负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓冲已解析的域名到IP地址的映射,这会导致使用该DNS服务器的用户在一段时间内访问的是同一台Web服务器,导致Web服务器间的负载不均衡。
此外,用户本地计算机也会缓存已解析的域名到IP地址的映射。当多个用户计算机都缓存了某域名到IP地址的映射时,而这些用户继续访问该域名下的网页,这是也会导致不同Web服务器件的负载分配不均衡。
负载不均衡可能导致的后果有:某几台服务器负荷很低,而另几台服务器负荷很高、处理缓慢;配置高的服务器分配到的请求少,而配置覅的服务器分配的请求多。
负载不均衡可能导致的后果有:某几台服务器负荷很低,而另几台服务器负荷很高、处理缓慢;配置高的服务器分配到的请求少,而配置覅的服务器分配的请求多。
因此,DNS轮询方式仅适用于一些可靠性要求不高的服务器集群,例如:图片服务器群、纯静态网页服务器集群等。
3.四/七层负载均衡设备
常见的四/七层负载均衡设备:
1.硬件四/七层负载均衡交换机
常见的如F5 BIG-IP、Foundry等产品,采用F5的公司有:新浪、百度、雅虎、猫扑、搜狐、慧聪网等等。
2.软件四层负载均衡
代表有LVS(Linux Virtual Server).
3.软件七层负载均衡
大多基于HTTP反向代理,代表作有Nginx
4.多线多地区智能DNS解析与混合负载均衡方式
以新浪首页为例,负载均衡同时用到了“多线多地区智能DNS解析、DNS轮询、四/七层负载均衡交换机”等技术。智能DNS解析能够根据用户本地设置的DNS服务器线路和地区,将对同一个域名请求解析到不同的IP上。