`
gaozzsoft
  • 浏览: 427012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Nginx、HAProxy、LVS三者的对比

 
阅读更多

 LVS的优点:

1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用范围比较广,可以对所有应用做负载均衡;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。

 

Nginx的优点:
1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。

 


HAProxy的优点:
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;

 

LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS由于是基于四层的转发所以只能做端口的转发
而基于URL的、基于目录的这种转发LVS就做不了

 

工作选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy

 

-------------------------------------------------------------------------------------

 

一、Nginx优点:

 

1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。

 

2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。

 

3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。

 

4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。

 

5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。

 

6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。

 

7、可作为中层反向代理使用。

 

8、可作为静态网页和图片服务器。

 

9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。

 

Nginx常规的和HTTP请求和相应流程图:

 

 

 

Nginx缺点:

 

1、适应范围较小,仅能支持http、https、Email协议。

 

2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。

 

 

 

二、LVS优点:

 

1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。

 

2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。

 

3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。

 

4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。

 

5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

 

LVS DR(Direct Routing)模式的网络流程图:

 

 

 

LVS的缺点:

 

1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。

 

2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。

 

 

 

三、HAProxy优点:

 

1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段)

 

2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。

 

3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。

 

4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。

 

5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种

 

① roundrobin

 

表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法。该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。最大支持4095个后端主机;

 

② leastconn

 

连接数最少的服务器优先接收连接。leastconn建议用于长会话服务,例如LDAP、SQL、TSE等,而不适合短会话协议。如HTTP.该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。

 

③ static-rr

 

每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权限是无效的。另外,它对服务器的数量没有限制。该算法一般不用;

 

④ source

 

对请求源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一个服务器。如果哈希的结果随可用服务器数量而变化,那么客户端会定向到不同的服务器;该算法一般用于不能插入cookie的Tcp模式。它还可以用于广域网上为拒绝使用会话cookie的客户端提供最有效的粘连;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

 

⑤ uri

 

表示根据请求的URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一个服务器。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端;该算法一般用于后端是缓存服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

 

⑥ url_param

 

在HTTP GET请求的查询串中查找<param>中指定的URL参数,基本上可以锁定使用特制的URL到特定的负载均衡器节点的要求;该算法一般用于将同一个用户的信息发送到同一个后端服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

 

⑦ hdr(name)

 

在每个HTTP请求中查找HTTP头<name>,HTTP头<name>将被看作在每个HTTP请求,并针对特定的节点;如果缺少头或者头没有任何值,则用roundrobin代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

 

⑧ rdp-cookie(name)

 

为每个进来的TCP请求查询并哈希RDP cookie<name>;该机制用于退化的持久模式,可以使同一个用户或者同一个会话ID总是发送给同一台服务器。如果没有cookie,则使用roundrobin算法代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

 

haproxy的工作模型图:

 

 

 

HAPorxy缺点:

 

1. 不支持POP/SMTP协议

 

2. 不支持SPDY协议

 

3. 不支持HTTP cache功能。现在不少开源的lb项目,都或多或少具备HTTP cache功能。

 

4. 重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。

 

5. 多进程模式支持不够好

 

原文链接:https://blog.csdn.net/qlj324513/article/details/81541282

 

分享到:
评论

相关推荐

    LVS Nginx HAProxy 三种负载均衡器优缺点

    ### LVS、Nginx 和 HAProxy 三种负载均衡器优缺点分析 #### LVS 负载均衡器 **优点:** 1. **抗负载能力强:**LVS 工作在网络第四层,只负责分发请求而不产生额外流量,这使得它在负载均衡软件中的性能表现非常...

    Nginx、LVS及HAProxy负载均衡软件的优缺点详解.docx

    Nginx、LVS 及 HAProxy 是目前使用最广泛的三种负载均衡软件,每种软件都有其特点和优缺点。 Nginx 的优点: 1. 工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略。 2. 对网络稳定性的依赖非常小,理论...

    多种负载均衡部署文档,实操笔记 Nginx,lvs(dr,nat,fullnat),haproxy等,dpdk-lvs

    在本文中,我们将深入探讨几种常见的负载均衡器——Nginx、LVS(DR、NAT、FullNAT)以及Haproxy,并分析它们的优缺点。同时,我们还将详细讲解LVS的配置,包括Keepalived参数的解释。 **Nginx负载均衡** Nginx是一...

    LVS+HAPROXY+NGINX+mysql+N7200.html

    LVS+HAproxy+NGINX+mysql+nf综合实验过程,详细步骤,可以参考。

    Haproxy+Nginx+Tomcat实现动静页面分离

    一、Haproxy概述; 二、Haproxy原理实现; 三、Nginx、LVS、Haproxy对比; 四、Haproxy配置文件讲解; 五、案例:Haproxy+Nginx+Tomcat搭建高可用集群;

    高性能业务架构解决方案(HAproxy+Keepalive)

    Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。对于大型的,需要进行高并发的网站或者对网络不太严格的场景,可以使用Nginx;对于大型的Web服务器的时候可以使用Haproxy;对性能有严格要求的时候可以使用...

    linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结

    本篇文章将对比三种常用的Linux服务器负载均衡器:LVS、Nginx和HAProxy,探讨其各自的特点、适用场景和常用算法。 LVS(Linux Virtual Server)是基于IP层的负载均衡器,它具有以下显著特点: 1. 高抗负载能力:...

    nginx+haproxy.docx

    ### Nginx与Haproxy在七层负载均衡中的应用 #### 一、七层负载均衡简介 负载均衡是现代互联网架构中不可或缺的一部分,旨在提高应用程序的可用性和响应速度。根据处理的数据包层面不同,负载均衡可以分为四层...

    第三十四章:Haproxy+Nginx+Tomcat实现动静页面分离1

    三、Haproxy与Nginx、LVS对比 Nginx同样作为七层代理,其优势在于配置简单、非阻塞的高并发处理、低内存消耗,以及内置的健康检查。与LVS(四层代理)相比,Nginx更适合处理静态内容和反向代理,而LVS则在大型企业...

    高性能业务架构解决方案(LVS+Keepalived)

    在众多的负载均衡方案中,Nginx、HAProxy 和 LVS 各有所长。Nginx 适用于网络环境不太严格的情况,尤其适合对静态资源处理要求较高的场景;HAProxy 更倾向于大型 Web 服务器的负载均衡需求;而 LVS 则因其出色的性能...

    SaltStack之Pillar和Jinja部署LVS+Keepalived+Haproxy源码(srv.tar.gz)

    本资源包含本人用SaltStack之Pillar和Jinja实现一健部署LVS+Keepalived+Haproxy的源码(srv.tar.gz),本人测试通过,有需要的可以下载下来学习。具体可参考本人博客:http://t.cn/ROB68fc 资源内容: ├── pillar...

    PHP高级工程师必知必会Nginx+keepalived+MongoDB+haproxy+Sphinx实现分布式集群部署实战视频

    本文将围绕“Nginx + keepalived + MongoDB + haproxy + Sphinx”这一技术栈,详细介绍如何实现一个稳定的分布式集群部署方案。 #### 二、关键技术解析 ##### 1. Nginx **定义**:Nginx是一款高性能的HTTP和反向...

    NGINX的功能介绍

    2. **与LVS的比较**:LVS只支持第四层负载均衡,而NGINX和HAProxy都支持更高级别的负载均衡。 3. **与硬负载(如F5)的比较**:硬负载解决方案通常具有更高的稳定性和性能,但由于其高昂的成本和复杂的维护需求,...

    haproxy-2.0.5_for_windows.rar

    单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;   5、HAProxy可以对mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10...

    LVS负载均衡软件Keepalived高可用:keepalived-2.0.10

    本文将深入探讨Keepalived的核心功能、工作原理以及如何与其他服务如Nginx、Haproxy、MySQL等结合,构建高效、可靠的分布式系统。 首先,Keepalived的核心功能包括健康检查、故障转移和负载均衡。它通过监控服务...

    实现负载均衡的Web服务器软件nginx-1.13.0

    实现负载均衡常用的Web服务器软件有Nginx、HAProxy、LVS、Apache,本资源是Nginx的负载均衡策略。 负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务。

    haproxy-1.8.1.tar.gz

    它在业界被誉为小型的LVS(Linux Virtual Server),这是因为haproxy具有轻量级、高并发处理能力的特点,同时在功能上可以与LVS相媲美。 haproxy的核心特性包括: 1. **高可用性**:haproxy能够通过健康检查和会话...

    Linux 41 道面试题及答案.docx

    本资源提供了 Linux 面试题及答案,涵盖了 Linux 运维、游戏运维、数据库、服务器管理、RAID、LVS、Nginx、HAproxy、Squid、Varinsh 等知识点,涉及到服务器管理、网络配置、数据库管理、缓存技术等多方面的内容,为...

Global site tag (gtag.js) - Google Analytics