我们都知道,在实际应用中,Web服务器集群之前总会有一台负载均衡服务器,一般负载均衡软件的使用是随着网站规模的提升根据不同的实际情况来使用不同的技术。例如中小型的Web应用,用Nginx就足够了,但若是大型网站或重要的服务,就可以使用LVS。
Nginx、LVS、HAProxy就是目前使用范围最广泛的3种负载均衡软件。
下面给大家详细讲一下这3种负载均衡软件的优缺点,帮助大家更好地挑选合适的软件。
【文末有Nginx、LVS、HAProxy视频资料可领取!!】
Nginx一度成为Web服务器市场的后起之秀,作为一个高性能的Web和反向代理服务器,Nginx性能高、量级轻、消耗少、能力优,在3种负载均衡软件中属于好上手,适用性最广的软件,主要是对7层网络通信模型中的第七层应用层上的http、https进行支持。
Nginx优点:
1、简单:Nginx无论是安装还是配置都十分简单,非常好上手
2、轻量:可以承担高负载压力,官方测试能够支撑5万并发连接
3、稳定:用于反向代理,宕机的概率十分小
4、节省:Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能
5、强大:内置健康检查;拥有多种功能
6、内存消耗少:在3万并发连接下,开启的10个 Nginx 进程才消耗150M 内存(15M*10=150M) 成本低廉、可跨平台
Nginx缺点:
1、Nginx 仅能支 持http、https 、tcp、 Email等协议,这样就在适用范围上面小些,这个是它的缺点2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过 ur l来检测。不支持 Session 的直接保持,但能通过 ip_hash 来解决
Nginx 是以反向代理的方式进行负载均衡的。反向代理(Reverse Proxy)方式是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理示意图
LVS是Linux虚拟服务器的缩写,它不同于HAProxy等7层软件负载面向的是HTTP包,所以7层负载可以做的工作,LVS无法完成。
但LVS从1998年发展到现在已经是一个比较成熟的技术项目了,LVS架设的服务器集群有3个部分:
(1) 最前端的负载均衡层,用 Load Balancer 表示
(2) 中间的服务器集群层,用 Server Array 表示
(3) 最底端的数据共享存储层,用 Shared Storage 表示
LVS优点 :
1、抗负载能力强:LVS对内存和cpu资源消耗比较低,因没有流量的产生,因此LVS是负载均衡软件中是性能最强的2、配置性比较低:配置性低,简化操作成本,降低操作错误几率3、工作比较稳定:自身有完整的双机热备方案,本身抗负载能力很强,工作比较稳定4、应用范围广:LVS几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等5、性能受流量影响小:LVS只分发请求,流量本身不从它本身出去
LVS缺点:
1、不能做动静分离2、大型网站LVS Keepalived实施起来就比较复杂,配置成本高
LVS体系结构
HAProxyHAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
提供高可用性、负载均衡,以及基于TCP(第四层)和HTTP(第七层)的应用程序代理。特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy优点:
1、HAProxy是支持虚拟主机的,通过frontend指令来实现
2、支持Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡
6、能对请求的url和header中的信息做匹配,有比lvs有更好的7层实现
HAProxy缺点:
1、不支持POP/SMTP协议、SPDY协议
2、不支持HTTP cache功能。即不能做Web服务器
3、重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。
4、多进程模式支持不够好
分别从Nginx、LVS和HProxy3种负载均衡软件的优缺点、适用性和量级等角度进行详细的对比。
新手快速掌握Nginx无敌教程:
LVS负载均衡学习资料:
HAProxy学习资料:
【视频领取见下图!!】