LVS、Nginx、HAproxy负载均衡对比

1、LVS

LVS(Linux Virtual Server)即Linux虚拟服务器,在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构为:终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。LVS工作模式分为NAT模式、TUN模式、以及DR模式。
(1)NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。
(2)LVS(TUN)的思路就是将请求与响应数据分离,让调度器仅处理数据请求,而让真实服务器响应数据包直接返回给客户端。
(3)DR模式也叫直接路由模式,要求调度器与后端服务器必须在同一个局域网内。

2、Nginx

在传统的Web项目中,并发量小,用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。当然我们知道,为了解决并发,可以使用负载均衡:也就是我们多增加几个tomcat服务器。当用户访问的时候,请求可以提交到空闲的tomcat服务器上。但是这种情况下可能会有一种这样的问题:上传图片操作。我们把图片上传到了tomcat1上了,当我们要访问这个图片的时候,tomcat1正好在工作,所以访问的请求就交给其他的tomcat操作,而tomcat之间的数据没有进行同步,所以就发生了我们要请求的图片找不到。为了解决这种情况,我们就想出了分布式。我们专门建立一个图片服务器,用来存储图片。这样当我们都把图片上传的时候,不管是哪个服务器接收到图片,都把图片上传到图片服务器, 图片服务器上需要安装一个http服务器。
Nginx是一个http服务器。是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
Nginx的应用场景
1、 http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
基于端口的,不同的端口
基于域名的,不同域名
3、 反向代理,负载均衡。什么是反向代理呢?
正向代理:客户端---->代理----->单个服务器
代理向客户端负责,将客户端发送的信息传递给固定的服务器,单纯为客户端服务。客户端知道服务器的内容,只不过通过代理中转下。
反向代理:客户端------>代理----->多个服务器
代理不仅向客户端负责,同时向服务器负责,负责给不同的服务器分发任务,为服务器服务。客户端不知道服务器的内容,只能接收代理提供的内容。
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

3、HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
Haproxy 并不是 web 服务器,仅仅是一款的用于均衡负载的应用代理。其自身并不能提供web服务。但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。
HAProxy特别适用于那些负载特大的web站点。HAProxy支持从4层至7层的网络交换,即覆盖所有的TCP协议。

4、比较

LVS:
1.抗负载能力强,性能高,能达到F5的60%,对内存和cpu资源消耗比较低
2.工作在网络4层,通过VRRP协议(仅做代理使用),具体的流量是由liunx内核来处理,因此没有流量的产生。
3.稳定,可靠性强,自身有完美的热备方案(Keepalived+LVS/DR(Direct Routing))
4.不支持正则处理,不能做动静分离
5.支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
6.配置相对复杂,对网络依赖比较大,稳定性很高。
7、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

Nginx:
1.工作在网络7层,可以针对http应用做一些分流的策略,比如针对域名,目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。
2.Nginx对网络的依赖较小,理论上能ping通就能进行负载功能
3.Nginx安装配置比较简单,测试起来很方便,基本能把错误日志打印出来。
4.也可以承担较高的负载压力且稳定,Nginx是为了解决c10k问题而诞生的,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。
5.Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点,但是,单只支持通过端口来检测,不支持通过url来检测
6.Nginx支持WebSocket协议,对请求的异步处理可以帮助节点服务器减轻负载压力
7.Nginx仅能支持http、https和Email协议,这样就在适用范围较小
8.不支持Session的直接保持,但能通过ip_hash来解决,对Big request header的支持不是很好
9.不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器,支持Http Cache功能。
10、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。

HAproxy:
1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机
2.能够补充Nginx的一些缺点比如Session的保持,Cookie引导等工作
3.支持url检测后端的服务器出问题的检测会有很好的帮助。
4.更多负载均衡策略比如:动态加权轮循,加权源地址哈希,加权URL哈希加权等参数哈希已经实现。
5.单纯从效率上来讲HAproxy更会比Nginx有更出色的负载均衡
6.HAproxy可以对MYsql进行负载均衡,对后端的DB节点进行检测和负载均衡
7.支持多种负载均衡算法:轮循、带权轮循、源地址保持、请求URL、根据Cookie
8.不支持POP/SMTP协议,不支持SPDY协议,不能做Web服务器即不支持HTTP Cache,重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好,多进程模式支持也不够好。

三大主流软件负载均衡器适用的生产场景:
1.网站建设初期,可以选用Nginx、HAproxy作为反向代理负载均衡(流量不大时可以选择不用负载均衡)因为其配置简单,性能也能满足一般业务场景。如果考虑到负载均衡器是有单点失败问题,可以采用Nginx+Keepalived避免负载均衡器自身单点问题。
2.网站并发达到一定程度后,为了提高稳定性和转发效率,可以使用LVS,毕竟LVS比Nginx/HAproxy要更稳定,转发效率也高。
但是如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,实施及配置还有维护过程会比较痛苦。
3.HAProxy对于后端服务器一直在做健康检测(就算请求没过来的时候也会做健康检查),后端机器故障发生在请求还没到来的时候,haproxy会将这台故障机切掉,但如果后端机器故障发生在请求到达期间,那么前端访问会有异常。也就是说HAProxy会把请求转到后端的这台故障机上,并经过多次探测后才会把这台机器切掉,并把请求发给其他正常的后端机,这势必会造成一小段时间内前端访问失败。
Nginx对于后端的服务器没有一直在做健康检测:后端机器发生故障,在请求过来的时候,分发还是会正常进行分发,只是请求不到数据的时候,它会再转向好的后端机器进行请求,直到请求正常为止。也就是说Nginx请求转到后端一台不成功的机器的话,还会再转向另外一台服务器,这对前端访问没有什么影响。
因此,如果用HAProxy做为前端负载均衡的话 ,如果后端服务器要维护,在高并发的情况,肯定是会影响用户的。但如果是Nginx做为前端负载均衡的话,只要并发撑得住,后端切掉几台不会影响到用户。
4.对于Http协议,Haproxy处理效率比Nginx高。所以,没有特殊要求的时候或者一般场景,建议使用Haproxy来做Http协议负载!但如果是Web,那么建议使用Nginx。
5.nginx故意缺少所有监视功能。它不显示负载平衡的应用程序。它不显示哪些服务器在线,但它们可以付费提供。如果您需要一个合适的监控页面和用于集成的JSON API,则必须支付“ Nginx Plus”版本的费用。价格从每台服务器每年1900美元起。
而在HAproxy里,我们可以看到哪些服务器上升或下降,使用了多少带宽,连接了多少客户端等等
6.Linux上Haproxy理论上最大连接数
最大连接数 = maxconn( global | defaults | listen )
Linux上Nginx理论上最大连接数
正向代理:最大连接数 = work_processes * worker_connections
反向代理:最大连接数 = work_processes * worker_connections / 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值