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-natHAproxy:
支持两种代理模式: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也许会成为主流,更适合现在大型的互联网公司。