LVS

1.抗冲击能力强,能力最高可达F5(一种硬件的负载均衡器,功能强大,性能稳定,拥有很多软件负载无法做到的能力)设备性能的60%。

2.工作在网络层。采用VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)进行转发(仅仅用于分发)。

3.良好的可靠性和稳定性,拥有优秀的热备方案。

4.具有广泛的应用范围,可以对所有的应用程序进行负载均衡。

5.不支持动静分离。

6.支持的均衡算法有:RR(round robin),WRR(weighted round robin),LC(minimum connection),WLC(minimum weight connection)等。

7.结构复杂,非常依赖于网络情况。

Nginx

1.工作在应用层,你可以为HTTP应用程序设置一些转移策略,如依据域名和目录结构。

2.Nginx轻度依赖于网络。理论上来说,只要ping的通,就能执行负载均衡。

3.相对于LVS,Nginx的配置相对简单且易于测试。

4.Nginx同样可以承受较大的负载压力并保持稳定性。通常Nginx可以同时承载1w条操作。

5.后端服务器的健康检查只支持端口,不支持URL。

6.Nginx可以通过对请求的异步处理来减少服务器节点的负载。

7.Nginx只支持HTTP,HTTPS以及Email协议,所以应用范围较窄。

8.不支持会话保持,但是可以通过IP哈希来间接解决,对于较大的请求头不太友好。

9.支持的负载均衡算法:RR,WRR和IP-Hash。

10.Nginx在某些应用场景下也可以充当web服务器,例如缓存。

Haproxy

1.支持两种协议模式:网络层的TCP和应用层的HTTP,支持虚拟主机。

2.可以弥补Nginx的一些短板,例如会话保持等。

3.支持URL检测和后端服务器问题检测。

4.支持更多的负载均衡算法,例如:DRR(dynamic round robin),WSH(weighted source hash),weighted URL hash 和weighted parameter hash。

5.同等效率下,Haproxy比Nginx负载均衡速度更快。

6.Haproxy可以对mysql实行负载均衡,对后端的数据库节点进行检测和负载均衡。

7.不能充当web服务器。

业务场景

1.在构建网站的初始阶段,Nginx或者Haproxy可以作为反向代理负载均衡器(当然在网络流量较小的情况下不需要使用负载均衡),因为他们配置简单,并且足够应对大部分的业务场景。考虑到负载均衡器存在单点问题,可以与keepalived结合。

2.当网站发展到某一阶段后,可以使用LVS来提升稳定性和转发效率。相比于Nginx和Haproxy,LVS更稳定,转发效率更高,但是与之而来的是对维护人员更高的要求以及更高的维护成本。

比较负载均衡器的几个关键因素

1.单位时间内的请求处理数。

2.会话并发能力。

3.数据处理能力。