nginx和lvs各自的优劣以及适合的使用环境

 更新时间:2020年10月30日 14:41:10   作者:流年的夏天  
这篇文章主要介绍了nginx和lvs各自的优劣以及适合的使用环境,帮助大家选择符合需求的服务器,感兴趣的朋友可以了解下

        在最开始呢,咱们先说一下什么叫负载均衡,负载均衡呢,就是将一批请求,根据请求的内容,分发到不同的后端去进行相应的处理,从而提供负载分担,主备切换等功能。  

            对于不同的负载均衡软件,有不同的流量分发算法,今天,我们最市面上比较主流的两种负载均衡做一个对比,看看他们分别的优缺点,以及在很多情况下如何去做配合。

【四层和七层】

       首先,说说四层和七层的区别;   

             四层负载均衡,指的是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各自的优劣以及适合的使用环境的详细内容,更多关于nginx和lvs对比的资料请关注脚本之家其它相关文章!

相关文章

  • 服务器使用Nginx部署Springboot项目的详细教程(jar包)

    服务器使用Nginx部署Springboot项目的详细教程(jar包)

    这篇文章主要介绍了服务器使用Nginx部署Springboot项目的详细教程(jar包),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Nginx/Openresty中启用http2支持的方法教程

    Nginx/Openresty中启用http2支持的方法教程

    Openresty/Nginx默认是不支持http2的,需要将http2模块编译进应用中。这篇文章主要给大家介绍了关于在Nginx/Openresty中启用http2支持的方法教程,文中介绍的非常详细,对大家具有一的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Nginx实现接口限流的方法汇总

    Nginx实现接口限流的方法汇总

    这篇文章主要为大家详细介绍了Nginx实现接口限流的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • ubuntu 下的nginx服务器配置详解

    ubuntu 下的nginx服务器配置详解

    这篇文章主要介绍了ubuntu 下的nginx服务器配置详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • nginx开启ws访问和4层负载的编译参数示例

    nginx开启ws访问和4层负载的编译参数示例

    这篇文章主要为大家介绍了nginx开启ws访问和4层负载的编译参数,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Nginx动态压缩gzip的实现示例

    Nginx动态压缩gzip的实现示例

    有时候适当的压缩传输的文件会对APP或网站的性能有极大的提升,本文主要介绍了Nginx动态压缩gzip的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Nginx启用GZIP压缩网页传输方法(推荐)

    Nginx启用GZIP压缩网页传输方法(推荐)

    Gzip压缩我很早已经就启用了,不过从未与大家分享过。今天小编给大家分享Nginx启用GZIP压缩网页传输方法,需要的朋友参考下吧
    2017-01-01
  • CentOS 4.0安装配置Nginx的方法

    CentOS 4.0安装配置Nginx的方法

    这篇文章主要介绍了CentOS 4.0安装配置Nginx的方法,需要的朋友可以参考下
    2014-11-11
  • Nginx如何配置Http、Https、WS、WSS的方法步骤

    Nginx如何配置Http、Https、WS、WSS的方法步骤

    这篇文章主要介绍了Nginx如何配置Http、Https、WS、WSS的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 阿里云国际版使用Nginx作为HTTPS转发代理服务器的处理方法

    阿里云国际版使用Nginx作为HTTPS转发代理服务器的处理方法

    本文介绍了使用NGINX作为HTTPS流量转发代理的两种方法。它总结了NGINX使用HTTP CONNECT隧道和NGINX流充当HTTPS转发代理的解决方案的原则,环境构建要求,应用场景和关键问题
    2022-05-05

最新评论