一、LVS
1.工作在第四层TCP/IP传输层,通过vrrp技术,仅仅做分发,没有流量产生,从而保证均衡器IO性能不会收到大流量的影响。
2.抗负载能力强,能达到F5硬件的60%。对内存cpu资源消耗较低。
3.有完美的热备方案(keepalived)
4.支持的算法:
rr轮询、wrr加权轮询、lc最小连接、wlc权重最小连接
5.配置相对复杂,稳定性高
二、NGINX
- 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
- Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;
- Nginx安装和配置比较简单,测试起来比较方便;
- 也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
- 对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
- Nginx对请求的异步处理可以帮助节点服务器减轻负载;
- Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
- 不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,
- 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)
- Nginx还能做Web服务器即Cache功能。
三、HAPROXY
- 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
- 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
- 支持url检测后端的服务器出问题的检测会有很好的帮助。
- 更多负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
- 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
- HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
- 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
- 不能做Web服务器即Cache。
四、使用业务场景
1.在网站的建设初期,用户访问以及各方面的需求不是很高,选用nginx/haproxy作为负载服务器,配置简单,且能够满足一般的业务需求,如果需要考虑到单点故障,可以采用keepalived做高可用方案。
2.当网站的访问并发数达到一定的程度,为了提高稳定和转发效率,则考虑使用LVS做负载均衡。
五、衡量负载均衡服务器的依据
1.会话率:单位时间内处理的请求数
2.并发处理能力
3.处理数据的能力
经过官方测试统计,haproxy 单位时间处理的最大请求数为20000个,可以同时维护40000-50000个并发连接,最大数据处理能力为10Gbps。综合上述,haproxy是性能优越的负载均衡、反向代理服务器。
六、四层与七层负载均衡的简单理解
1.四层:主要是通过用户请求的ip端口转发
2.七层:主要通过用户请求的具体内容在应用层,通过相关负载均衡器的配置进行转发到内部服务器。
七、Nginx与Haproxy
Niginx与Haproxy比较: Niginx支持七层、用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session保存等。具体选型看使用场景,目前来说Haproxy由于弥补了一些Niginx的缺点致使其用户量也不断在提升。