LVS、HAProxy、Nginx是目前使用最广泛的三种负载均衡软件。
Lvs 是Linux Virtual Server的简称,即Linux虚拟服务器,是负载均衡的一种调度器,现在也已经是linux内核标准的一部分。可见其重要度。(是我们中国人自己研发的开源软件!)
LVS优点:
1、抗负载能力强:工作在网络4层之上,仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低:这是一个缺点也是一个优点,因为没有太多可配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定:因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量:LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会受到大流量的影响。
5、应用范围比较广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
LVS的缺点:
1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
LVS工作模式:
LVS常用的工作模式有DR模式、TUN模式、以及NAT模式
LVS无论NAT及DR模式,均要求VS和RS在同一个网段内,NAT需要把VS当作各个RS的默认网关, DR模式采用修改mac地址直接从数据链路层转发、要求必须在同一个物理网段内。
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。目前国内很多大厂网站都在使用Nginx,比如:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx优点:
1、支持高并发:可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量
2、内存消耗少
3、成本低廉
4、配置简单:Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。
5、内置健康检查:Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。
6、节省带宽:Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。
7、支持热部署:Nginx支持热部署,它的自动特别容易,并且,几乎可以7天*24小时不间断运行,
Nginx缺点:
1、适应范围较小,仅能支持http、https、Email协议。
2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。
Nginx工作模式:
Nginx由内核和模块组成。Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block.而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。
通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。
HAProxy提供高可用性、负载均衡,以及基于TCP(第四层)和HTTP(第七层)的应用程序代理。特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy优点:
1、支持虚拟主机,可以工作在4、7层(支持多网段)
2、支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3、单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
5、HAProxy负载均衡策略多样
HAProxy缺点:
1、不支持POP/SMTP协议、SPDY协议
3、不支持HTTP cache功能。即不能做Web服务器
4、重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。
5、多进程模式支持不够好
HAProxy工作模式:
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
接下来给大家分享一下这三款软件的学习资料,大家可以保存收藏!