【 Linux 】三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

  (资料来自网络,做了部分的补充说明)

LVS:
    1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低
    2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生。
    3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+lvs)
    4. 不支持正则处理,不能做动静分离。
    5. 支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
    6. 配置相对复杂,对网络依赖比较大,稳定性很高。
    7. LVS工作模式有4种:
        (1) nat 地址转换
        (2) dr 直接路由
        (3) tun 隧道
        (4) full-nat

Nginx:
    1. 工作在网络7层,可以针对http应用做一些分流的策略,比如针对域名,目录结构
    2. Nginx对网络的依赖较小,理论上能ping通就能进行负载功能
    3. Nginx安装配置比较简单,测试起来很方便
    4. 也可以承担较高的负载压力且稳定,nginx是为解决c10k问题而诞生的
    5. 对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
    6. Nginx对请求的异步处理可以帮助节点服务器减轻负载压力
    7. Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
    8. 不支持Session的直接保持,但能通过ip_hash来解决。对Big request header的支持不是很好。
    9. Nginx还能做Web服务器即Cache功能。

第6点补充:
    什么是nginx的异步处理:
        squid同步处理:浏览器发起请求,而后请求会立刻被转到后端,于是在浏览器和后台之间就建立了一个通道。从请求发起直到请求完成,这条通道都是一直存在的。
        nginx异步处理:浏览器发起请求,请求不会立刻转到后端,而是请求数据(header)先收到nignx上,然后nginx再把这个请求发到后端,后端处理完成后把数据返回到nginx上,nginx将数据流发到浏览器。

使用异步处理的好处:
        1. 假设用户执行一个上传文件操作,因为用户网速又比较慢,因此需要花半个小时才能把文件传到服务器。squid的同步代理在用户开始上传后就和后台建立了连接,半小时后文件上传结束,由此可见,后台服务器连接保持了半个小时;而nginx异步代理就是先将此文件收到nginx上,因此仅仅是nginx和用户保持了半小时连接,后台服务器在这半小时内没有为这个请求开启连接,半小时后用户上传结束,nginx才将上传内容发到后台,nginx和后台之间的带宽是很充裕的,所以只花了一秒钟就将请求发送到了后台,由此可见,后台服务器连接保持了一秒。同步传输花了后台服务器半个小时,异步传输只花一秒,可见优化 程度很大。
        2. 在上面这个例子中,假如后台服务器因为种种原因重启了,上传文件就自然中断了,这对用户来说是非常恼火的一件事情,想必各位也有上传文件传到一半被中断的 经历。用nginx代理之后,后台服务器的重启对用户上传的影响减少到了极点,而nginx是非常稳定的并不需要常去重启它,即使需要重启,利用kill -HUP就可以做到不间断重启nginx。
        3. 异步传输可以令负载均衡器更有保障,为什么这么说呢?在其它的均衡器(lvs/haproxy/apache等)里,每个请求都是只有一次机会的,假如用 户发起一个请求,结果该请求分到的后台服务器刚好挂掉了,那么这个请求就失败了;而nginx因为是异步的,所以这个请求可以重新发往下一个后台,下一个 后台返回了正常的数据,于是这个请求就能成功了。还是用用户上传文件这个例子,假如不但用了nginx代理,而且用了负载均衡,nginx把上传文件发往 其中一台后台,但这台服务器突然重启了,nginx收到错误后,会将这个上传文件发到另一台后台,于是用户就不用再花半小时上传一遍。
        4. 假如用户上传一个10GB大小的文件,而后台服务器没有考虑到这个情况,那么后台服务器岂不要崩溃了。用nginx就可以把这些东西都拦在nginx上,通过nginx的上传文件大小限制功能来限制,另外nginx性能非常有保障,就放心的让互联网上那些另类的用户和nginx对抗去吧。
        用异步传输会造成问题:
            后台服务器有提供上传进度的功能的话,用了nginx代理就无法取得进度,这个需要使用nginx的一个第三方模块来实现。

第8点补充:
    Nginx upstream支持的分配策略及原理:
        1. 轮询(默认):每个请求按照顺序逐一分配到不同的后端服务器。如后端服务器down掉,就切换到另一台并剔除down的后端主机
        2. weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
        3. ip_hash:每个请求按照访问ip的hash结果分配,不同ip的请求被分配到后端不同的服务器上,可以解决session的问题。

HAProxy:
    1. 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
    2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
    3. 支持url检测后端的服务器出问题的检测会有很好的帮助。
    4. 更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
    5. 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
    6. HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
    7. 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
    8. 不能做Web服务器即Cache。

三大主流软件负载均衡器适用业务场景:
    1. 网站建设初期,可以选用Nginx、HAProxy作为反向代理负载均衡(流量不大时,可以不选用负载均衡),因为其配置简单,性能也能满足一般业务场景。如果考虑到负载均衡器是有单点问题,可以采用Nginx+Keepalived/HAproxy+Keepalived避免负载均衡器自身的单点问题。
    2. 网站并发到达一定程度后,为了提高稳定性和转发效率,可以使用lvs,毕竟lvs比Nginx/HAProxy要更稳定,转发效率也更高。
    注:nginx与HAProxy比较:nginx只支持七层,用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session等。

衡量负载均衡器好坏的几个重要的因素:
    1. 会话率 :单位时间内的处理的请求数
    2. 会话并发能力:并发处理能力
    3. 数据率:处理数据能力

时间: 2024-10-12 19:24:55

【 Linux 】三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)的相关文章

三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)

LVS:1.抗负载能力强.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低2.工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生.2.稳定性.可靠性好,自身有完美的热备方案:(如:LVS+Keepalived)3.应用范围比较广,可以对所有应用做负载均衡:4.不支持正则处理,不能做动静分离.5.支持负载均衡算法:rr(轮循).wrr(带权轮循).lc(最小连接).wlc(权重最小连接)6.配置 复杂,对网络依赖比较大

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

LVS:    1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低    2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生.    3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+lvs)    4. 不支持正则处理,不能做动静分离.    5. 支持多种负载均衡算法:rr(轮询),wrr(带权轮询).lc(最小连接).wlc(带权最小连接)    6. 配置相对复杂,对网络依赖比较大,稳定

三大主流负载均衡软件对比(LVS+Nginx+HAproxy)

LVS: 优点 : 1.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低2.工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生.3.稳定性.可靠性好,自身有完美的热备方案:(如:LVS+Keepalived)4.应用范围比较广,可以对所有应用做负载均衡:5.支持负载均衡算法:rr(轮循).wrr(带权轮循).lc(最小连接).wlc(权重最小连接) 缺点: 1.不支持正则处理,不能做动静分离. 2.配置 复杂,对网络

三大主流软件负载均衡群集对比

三大主流软件负载均衡群集分别是: LVS: Nginx: Haproxy: LVS负载均衡群集特点: 1.抗负载能力强.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低2.工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生.2.稳定性.可靠性好,自身有完美的热备方案:(如:LVS+Keepalived)3.应用范围比较广,可以对所有应用做负载均衡:4.不支持正则处理,不能做动静分离.5.支持负载均衡算法:rr(轮循)

LVS,Nginx,HAProxy简单对比

LVS,Nginx,HAProxy 作为负载均衡器对比 LVS:     优点:         负载均衡能力强,工作在4层(内核中)         稳定,配置简单         应用范围广     缺点:         不支持后端real server 的健康状态监测 nginx: 优点: 强大的正则表达式,工作在7层 nginx对网络的依赖小 nginx配置简单,模块众多 nginx支持后端real server的健康状态检查 缺点: nginx 社区版不支持url来对后端服务器进行健

Linux三大主流发行版,及其衍生版本

随着Linux从诞生到目前数量众多的发行版,其中主要有三大主流发行版及其之后的衍生版本 Linux三大主流发行版及其衍生版本(比较著名的)目录树为: Debian系列--Ubuntu--Knopix Slackware系列--Suse--Opensuse Redhat系列--Centos--Fedora 还有一些其他比较著名的发行版 GentooArchLinux 具体详细的发行版的演化可访问:http://futurist.se/gldt/ 进行查看 原文地址:http://blog.51ct

前端三大主流框架的对比React、Vue、Angular

前端三大主流框架的对比React.Vue.Angular React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站, 并于 2013年 5 月开源.React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它.它有以下的特性: 1.声明式设计:React采用声明范式,可以轻松描述应用. 2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互. 3.灵活:React可以与已知的库或框架很好地配合. 优点: 1. 速度快:在UI渲染过程中,

lvs/nginx/haproxy 负载均衡优缺点分析讲解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

LVS/Nginx/HAProxy keepalived/heartbeat总结

LVS/Nginx/HAProxy集群 1.一般中小型的web应用,比如日pv(访问量)小于1000万,用Nginx作负载均衡就可以了. 2.大型网站或重要的服务,且服务器比较多时,可以考虑用lvs. 3.目前比较流行的方案,web前端用Nginx/HAProxy+keepalived作负载均衡,后端用MySQL数据库一主多从和读写分离,采用lvs+keepalived架构. 就阶段而言, 第一阶段,单点的负载均衡Nginx/HAProxy,此时服务器刚脱离单服务器.单数据库模式,需要一定的负载