Nginx:
工作在网络7层,可以针对http应用做一些分流的策略,比如针对域名,目录结构
Nginx对网络的依赖较小,理论上能ping通就能进行敷在功能
Nginx安装配置比较简单,测试起来很方便
也可以承担较高的负载压力且稳定,Nginx是为了解决c10k问题而诞生的
对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
Nginx对请求的异步处理可以帮助节点服务器减轻负载压力
Nginx仅能支持http、https和Email协议,这样就在适用范围较小
不支持Session的直接保持,但能通过ip_hash来解决,对Bigrequestheader的支持不是很好
Nginx还能做Web服务器即Cache功能。
LVS:
抗负载能力强,性能高,能达到F5的60%,对内存和cpu资源消耗比较低
工作在网络4层,通过VRRP协议(仅做代理使用),具体的流量是由liunx内核来处理,因此没有流量的产生。
稳定,可靠性强,自身有完美的热备方案(Keepalived+LVS)
不支持正则处理,不能做动静分离
支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
配置相对复杂,对网络依赖比较大,稳定性很高。
LVS工作模式有4种:
nat地址转换
dr直接路由
tun隧道
full-nat
HAproxy:
支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机
能够补充Nginx的一些缺点比如Session的保持,Cookie引导等工作
支持url检测后端的服务器出问题的检测会有很好的帮助。
更多负载均衡策略比如:动态加权轮循,加权源地址哈希,加权URL哈希加权等参数哈希已经实现。
单纯从效率上来讲HAproxy更会比Nginx有更出色的负载均衡
HAproxy可以对MYsql进行负载均衡,对后端的DB节点进行检测和负载均衡
支持负载均衡算法:轮循、带权轮循、源地址保持、请求URL、根据Cookie
不能做Web服务器即Cache。
三大主流软件负载均衡器适用的生产场景:
网站建设初期,可以选用Nginx、HAproxy作为反向代理负载均衡(流量不大时可以选择不用负载均衡)因为其配置简单,性能也能满足一般业务场景。如果考虑到负载均衡器是有单点失败问题,可以采用Nginx+Keepalived避免负载均衡器自身单点问题。
网站并发达到一定程度后,为了提高稳定性和转发效率,可以使用LVS,毕竟LVS比Nginx/HAproxy要更稳定,转发效率也高。
--------------------------------------------------------------------------------
Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。
LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性、可靠性和可管理性,是一款强大实用的开源软件。
LVS的优点:
1:抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,也保证了均衡器I/O的性能不会受到大流量的影响。;
2:lvs是专门的负载均衡软件,对任何应用都可以做负载均衡;
3:工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,目前用的比较多的是lvs+keepalived,比较大型的用的多的是lvs+heartbeat。
nginx的优点:
1:Nginx的高并发,同时能承载上万个并发连接;
2:nginx有充足的第三方功能模块的支持,主要通过upstream模块进行负载均衡;
3:nginx对网络的依赖较小,理论上只要Ping得通,网页访问正常,nginx就能连得通;
4:工作在网络的7层之上,可以针对http应用做一些分流的策略,它的正则规则比haproxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,nginx单凭这点可利用的场合就远多于lvs了。
缺点:
1:将Nginx当做反向代理时,负载均衡功能不是很好,对后端服务器的健康检查功能较弱;
2:nginx仅能支持http、https和email协议,这样就在适用范围上面小些,这个是它的缺点;
3:nginx只支持通过端口来检测,不支持通过url来检测。
haproxy的优点:
1:HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态;
2:haproxy也是专门的负载均衡软件,Haproxy可以负载http,还可以负载均衡mysql;
3:HAProxy是支持虚拟主机的。
总结这么多,我觉得根据不同的需求,不同的功能,可以选择不同的软件类的负载均衡软件,当然也是可以选择硬件类的负载均衡器。
像对于大型的,需要进行高并发的网站或者对网络不太严格的时候,可以使用nginx;
对于大型的Web服务器的时候可以使用haproxy;
对性能有严格要求的时候可以使用lvs,就单纯从负载均衡的角度来说,lvs也许会成为主流,更适合现在大型的互联网公司。
来源:oschina
链接:https://my.oschina.net/u/4377582/blog/4077172