LVS, Nginx, HAProxy的对比

软件负载均衡一般分为两种实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。

LVS

1. 基于操作系统的软负载

2. 抗负载能力强,性能高,号称能达到F5的60%,对内存和cpu耗费资源低。

3. 工作在4层(tcp),通过vrrp协议进行转发(仅做数据分发),具体流量由linux内核进行处理,因此没有流量的产生

4. 稳定性和可靠性不错,有完美的热备方案(如lvs+keepalive)

5. 不支持正则表达式,不支持动静分离(废话,基于4层的当然没有)

6. 支付的负载均衡算法:rr(轮询),wrr(加权轮询),lc(最小连接),wlc(权重最小连接)

7. 配置复杂,对网络依赖较高,但稳定性很高

8. 不支持http,如域名,目录结构等进行负载(废话,基于4层的当然没有)

Nginx

1. 基于第三方应用的软负载

2. 工作在7层,主要针对的是http,https,email协议,其他不支持

3. 对网络依赖较小,能ping通就能进行负载

4. 能给承担高负载,号称能给支持超过1万次的并发

5. 对后端服务器的健康监测只能通过端口而不是支持url

6. 可以对请求进行异步处理,减轻服务器的负载负担

7. 不支持Session的直接保持,但支持ip-hash

8. 能给作为web服务器,即cache功能

9. 支持的负载均衡算法:轮询,加权轮询,ip哈希

Haproxy

1. 基于第三方应用的软负载

2. 可以工作在4层和7层

3. 支持url来进行后端服务器的检测

4. 支持nginx不支持的session保持和cookie引导等工作

5. 支持的负载均衡算法:动态加权,加权源地址哈希,加权url哈希,加权参数哈希,轮询,加权轮询,源地址保持,根据cookie保持

6. 单纯从效率上讲HAProxy会比Nginx更高效

7. 可以对MySQL进行负载均衡

8. 不能作为web服务器即cache

三大主流软件负载均衡器适用业务场景:

1、网站建设初期,可以选用Nigix/HAproxy作为反向代理负载均衡(或者流量不大都可以不选用负载均衡),因为其配置简单,性能也能满足一般的业务场景。如果考虑到负载均衡器是有单点问题,可以采用Nginx+Keepalived/HAproxy+Keepalived避免负载均衡器自身的单点问题。

2、网站并发达到一定程度之后,为了提高稳定性和转发效率,可以使用LVS、毕竟LVS比Nginx/HAproxy要更稳定,转发效率也更高。不过维护LVS对维护人员的要求也会更高,投入成本也更大。

注:Niginx与Haproxy比较:Niginx支持七层、用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session保存等。具体选型看使用场景,目前来说Haproxy由于弥补了一些Niginx的缺点用户量也不断在提升。

衡量负载均衡器好坏的几个重要因素:

1、会话率 :单位时间内的处理的请求数

2、会话并发能力:并发处理能力

3、数据率:处理数据能力

经过官方测试统计,haproxy 单位时间处理的最大请求数为20000个,可以同时维护40000-50000个并发连接,最大数据处理能力为10Gbps。综合上述,haproxy是性能优越的负载均衡、反向代理服务器。

总结HAProxy主要优点:

一、免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;

二、根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;

三、HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;

四、自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

五、HAProxy支持虚拟主机。

你可能感兴趣的:(LVS, Nginx, HAProxy的对比)