在最开始呢,咱们先说一下什么叫负载均衡,负载均衡呢,就是将一批请求,根据请求的内容,分发到不同的后端去进行相应的处理,从而提供负载分担,主备切换等功能。
        
        对于不同的负载均衡软件,有不同的流量分发算法,今天,我们最市面上比较主流的两种负载均衡做一个对比,看看他们分别的优缺点,以及在很多情况下如何去做配合。
 
【四层和七层】
        首先,说说四层和七层的区别;
                四层负载均衡,指的是IP+端口的负载均衡;
                七层负载均衡,指的是基于WEB请求,URL等应用层信息的负载均衡。
                当然,同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。
 
                四层负载均衡,主要分析IP层和TCP/UDP层。
                七层负载均衡,要分析应用层协议,比如HTTP协议,URL,cookie等信息。
 
【关于LVS】
        LVS的负载能力很强,因为其工作模式非常简单,仅进行请求的分发,而且其工作在第四层,没有流量,在效率方面最高。
        LVS是在四层,可以对几乎所有的应用作负载均衡。
        但是LVS对于故障后端感知并不敏感,比如在DR模式下,要是有一个后端服务器没有配置VIP,就会导致请求的一部分数据会直接丢失。
        且LVS对于网络环境的稳定性要求较高,如果请求失败了,只能依赖于前端的应用自身的重试机制,负载均衡不对请求进行重新下发。
        而且LVS也很受限于网络架构,在设计之初就要考虑到网络架构是否满足LVS负载的前置条件。
 
【关于nginx】
        同样的,nginx也可以用于负载均衡,但是由于nginx需要对源端/目的端都建立连接,所以处理流量的速度受限于机器I/O,CPU内存等一系列配置,所以nginx的负载能力相对较差。
        nginx安装,配置都比较简单,与LVS对比,nginx不需要很严格的网络架构,只要网络可以联通即可。
        且nginx自身的重试机制,可以保证请求下发失败之后,会重新下发到健康的后端上。
        但是,nginx因为没有现成的热备机制,所以,存在单点故障的问题,一般需要搭配keepalived使用。
        不过,nginx作为一款应用层负载均衡(后来引入stream模块之后,四层也支持了),可以提供负载分担,贮备切换,HTTPS写在,带宽限速,隐藏真实IP,隐藏真实端口,屏蔽攻击等能力,这是LVS所不能提供的。
 
【对比】
        lvs和nginx都是现在很主流的负载均衡方式,他们各有优缺点,在生产环境需要根据其特点做选择。
 
  LVS Nginx
  四层 四层/七层
抗负载能力
配置性
可配置性低
同时也减少了人为出错的概率
可配置性高
可以配置一些高级功能
稳定性
稳定性高
有完整的双机热备方案
稳定性低,有单机故障
无现成的双机热备方案
网络架构依赖
强依赖
非常依赖网络架构设计
当然可以采用比较简单的NAT方式解决此问题
无依赖
网络稳定性依赖
依赖
数据包分发到坏的后端,不会重新分发,会直接返回错误
不依赖
数据包分发到坏的后端并返回错误后,会尝试重新分发到健康的后端
网络流量
仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。
FULL_NAT同Nginx。
所有的请求和响应流量都会经过nginx
宿主机性能要求
要求较低
lvs仅仅做分发请求,流量并不从它本身出去,所以瓶颈仅仅受限于网络带宽和网卡性能
要求较高
因为nginx需要对源端和目的端都单独建立连接,中间还涉及到一些数据包的解析处理,所以依赖宿主机的I/O性能和CPU内存
转发方式
同步转发
lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。
异步转发
在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端
其他  
支持rewrite重写规则:能够根据域名、url的不同,将http请求分到不同的后端服务器群组。
节省带宽:支持gzip压缩,可以添加浏览器本地缓存的header头。
 
【两者配合】
        在使用上,一般最前端所采取的的策略应是lvs,也就是dns的指向应为lvs均衡器,主要原因在于nginx虽然功能强大,但是当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
        但是当lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。
        
        所以在很多情况下,nginx会作为lvs的节点进行负载均衡,这样,既可以避免nginx的性能造成很严重的带宽瓶颈,也可以利用nginx的错误重传避免lvs一锤子买卖,还能利用nginx的各种高级功能,包括https卸载,报文头修改等。
 

谈谈nginx和lvs各自的优缺点以及使用的更多相关文章

  1. 浅谈 Nginx和LVS的各种优缺点

    VS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑. LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用 ...

  2. Nginx,LVS,HAProxy详解

    Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...

  3. 观nginx与lvs负载均衡的较量

    在技术工作者中,常用到的就是lvs负载均衡和Nginx负载均衡了.这两者也是比较普及的.那么,根据不同的需求,两者存在着不同的优势.具体选择哪一个,还要看您的要求了.那么我们在此为大家分享一篇文章,对 ...

  4. nginx,lvs,haproxy负载均衡对比

    Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,具体的应用需求还得具体分析. 如果是中小型的Web应用,比 ...

  5. 【转】lvs、nginx、haproxy转发模式优缺点总结

    原文地址: https://yq.aliyun.com/ziliao/78374 一.LVS转发模式 LVS是章文嵩博士写的一个工作于四层的高可能性软件.不像后两者支持七层转发,不过也正因为其简单,所 ...

  6. Nginx、HAProxy、LVS三者的优缺点

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

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

    http://www.csdn.net/article/2014-07-24/2820837

  8. 13. nginx,lvs之一

    摘要: 1.详细描述常见nginx常用模块和模块的使用示例 2.简述Linux集群类型.系统扩展方式及调度方法 3.简述lvs四种集群有点及使用场景 4.描述LVS-NAT.LVS-DR的工作原理并实 ...

  9. 高并发负载均衡——nginx与lvs

    一.企业级web项目架构 一.企业级web项目架构图 二.架构分析 客户端通过企业防火墙发送请求 在App服务器如tomcat接收客户端请求前,面对高并发大数据量访问的企业架构,会通过加入负载均衡主备 ...

随机推荐

  1. awk的一些认识

    awk awk '{pattern + action}' {filenames} 当我们所指定的规则脚本过长的时候,我们可以使用-f的选项加上我们的脚本文件.再复杂点我们可以直接调用shell脚本,就 ...

  2. 能否使用GHDL+GTKWave代替Quartus ii

    能否使用GHDL+GTKWave代替Quartus ii macOS High Sierra系统 10.13.6 [toc] 先给出答案 可以替代一部分功能 如果你是一个学工科的学生,正在学习EDA. ...

  3. OSI和TCP/IP参考模型

    分层思想: 分层模型是一种开发网络协议的设计方法. 把节点之间的通讯这个复杂的问题,分成了若干个简单的小问题逐一解决. 把网络相邻节点之间通过接口进行通信,下层为上层提供服务.当网络发生故障,很容易确 ...

  4. 牛客在线习题:链表的k各节点翻转

    题目描述 将给出的链表中的节点每\ k k 个一组翻转,返回翻转后的链表如果链表中的节点数不是\ k k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身.要求空间复杂度 \ O ...

  5. Windows下设置Mongodb用户名密码

    MongoDB认证: 在默认的情况下,Mongodb是监听在127.0.0.1 IP上的,端口号默认为27017,任何客户端都可以连接,不需要认证 默认情况下,Mongodb也是没有管理账户的,除非你 ...

  6. Python-装饰器(语法糖)上下五千年和前世今生

    装饰器上下五千年和前世今生,这里我们始终要问,装饰器为何产生?装饰器产生解决了什么问题?什么样的需求推动了装饰器的产生?思考问题的时候,始终要问,为什么要这样,而不是那样或者其他样.这里我不先说,也不 ...

  7. Centos-bash-4.1$

    错误: -bash-4.1$ where? 登录Centos时候,会显示4行这样的错误信息-bash-4.1$ why? 1. 该用户家目录缺少 .bashrc .bash_logout .base_ ...

  8. django_apscheduler 0.4.0删除了name字段

    使用django_apscheduler时默认使用了最新版本,为0.4.2版本,但是在这个版本中,使用migrate 生成定时任务模型时没有了name字段,导致之前写的定时任务不能执行. 翻了下 dj ...

  9. python在一个画布上画多个子图

    转载:https://blog.csdn.net/qq_26449287/article/details/103022636 matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使 ...

  10. 【题解】SAC E#1 - 一道难题 Tree

    Problem is here \(\text{Solution:}\) 首先,一眼看出这是最小割,只要叶子节点对汇点\(T\)连接流量为\(inf\)的边就可以一遍最大流搞定了. 剩下的问题在于,如 ...