`
maosheng
  • 浏览: 560225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx和LVS集群负载均衡的比较

 
阅读更多
一、lvs的优势:

1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。

2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。

4、无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。

5、基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙。

二、nginx和lvs作对比的结果

1、nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,所以nginx单凭这点可利用的场合就远多于lvs了;但nginx有用的这些功能使其可调整度要高于lvs,所以经常要去触碰触碰,由lvs的第2条优点看,触碰多了,人为出问题的几率也就会大。

2、nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另外注意,lvs需要向托管商至少申请多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个HTTP那么简单了。

3、nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。

4、nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以跑在单机上还是风险较大,单机上的事情全都很难说。

5、nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前lvs中ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而恼火。

6、nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现很多的窄带链接时apache服务器将会占用大量内存而不能释放,使用多一个nginx做apache代理的话,这些窄带链接会被nginx挡住,apache上就不会堆积过多的请求,这样就减少了相当多的内存占用。这点使用squid也有相同的作用,即使squid本身配置为不缓存,对apache还是有很大帮助的。lvs没有这些功能,也就无法能比较。

7、nginx能支持http和email(email的功能估计比较少人用),lvs所支持的应用在这点上会比nginx更多。

在使用上,一般最前端所采取的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。

重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。

nginx可作为lvs节点机器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。当然这一层面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所逊色于nginx。

nginx也可作为中层代理使用,这一层面nginx基本上无对手,唯一可以撼动nginx的就只有lighttpd了,不过lighttpd目前还没有能做到nginx完全的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,所以中层代理也拥有一个VIP和lvs是最完美的方案了。

nginx也可作为网页静态服务器,不过超出了本文讨论的范畴,简单提一下。

具体的应用还得具体分析,如果是比较小的网站(日PV<1000万),用nginx就完全可以了,如果机器也不少,可以用DNS轮询,lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。




分享到:
评论

相关推荐

    Nginx入门到精通搭建高可用集群负载均衡

    - **负载均衡**:通过分配请求到多个服务器,实现高并发和故障转移,提高服务可用性。 - **静态资源服务器**:高效地处理静态内容(如图片、CSS、JavaScript),比其他应用服务器(如 Tomcat)更快。 - **反向...

    LVS+Keepalived高可用负载均衡集群

    随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司...我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。

    LVS服务器集群搭建教程.zip在链路层实现负载均衡,这就是LVS和nginx的区别,一个是IP层转发,另一个是应用层转发,效率差距太大了

    总结,LVS通过在链路层实现负载均衡,提供了一种高效且灵活的服务器集群解决方案,与Nginx等应用层负载均衡器相比,其在处理大规模并发时具有显著优势。通过合理的配置和维护,LVS能够为业务的稳定运行提供强大的...

    负载均衡器技术Nginx和F5的优缺点对比

     我们使用的是软负载均衡器Nginx,而农行用的是F5硬负载均衡器,这里简单介绍下这两种技术:  a、软件负载均衡解决方案  在一台服务器的操作系统上,安装一个附加软件来实现负载均衡,如Nginx负载均衡(我们...

    L4+L7 负载均衡 Keepalived+LVS+nginx搭建nginx高可用集群

    - **应用场景**: 用于构建高可用的网络服务,特别是在LVS集群中作为监控和故障转移的关键组件。 3. **LVS** (Linux Virtual Server): - **简介**: LVS是Linux内核的一部分,提供了一个基于Linux内核的四层负载...

    nginx负载均衡实现

    在实际应用中,为了充分利用四层和七层负载均衡的优点,常常采用LVS + Nginx的组合方案。LVS负责四层的负载均衡,处理TCP/UDP层面的流量分配;而Nginx则作为七层负载均衡器,根据HTTP请求中的具体内容进行更精细的...

    LVS负载均衡

    3. 专业负载均衡软件:除了LVS,还有一些商业软件如Nginx、HAProxy等,它们同样能实现负载均衡,各有其特点和适用场景。 总的来说,LVS作为Linux环境下的高效负载均衡工具,其灵活性和可扩展性使得它成为构建大型...

    CentOS系统安装配置Nginx+keepalived实现负载均衡

    在本文中,我们将使用两台负载机器(NGINX_MASTER和NGINX_BACKUP)和两台Web集群机器(WEB_1和WEB_2)来实现负载均衡。 三、系统规划 在本文中,我们将使用CentOS 6.5作为操作系统,安装Nginx和keepalived来实现...

    搭建LVS集群实战负载均衡-随堂笔记.doc

    【搭建LVS集群实战负载均衡】的随堂笔记主要涵盖了LVS集群的理论知识和实际操作步骤,旨在帮助读者从零开始快速构建LVS负载均衡集群。以下是详细的知识点解析: 1. **LVS集群概述**: - 集群是一种由多台计算机...

    lvs四层的负载均衡和七层负载均衡的区别

    根据处理数据包的层次不同,负载均衡器可以分为四层负载均衡和七层负载均衡。 #### 四层负载均衡(LVS) - **定义**:四层负载均衡(Layer 4 Load Balancing)主要基于TCP/IP协议的第四层(传输层)进行数据包的转发...

    负载均衡集群技术 LVS

    而对于Web2.0,由于数据频繁变化和高请求量,可能需要更复杂的解决方案,如Nginx,它能提供基于内容的负载均衡和缓存管理,但需要考虑高并发时的性能优化和架构扩展性。 在高并发环境中,LVS通常作为第一层负载均衡...

    lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.rar

    在LVS作为四层负载均衡器的基础上,Nginx可以在应用层进一步进行负载均衡和内容缓存,提高系统的响应速度。Nginx可以通过设置不同的路由规则,根据URL、HTTP头部等信息将请求转发至不同的后端服务。 **Tomcat** ...

    Nginx实现集群的负载均衡配置过程解析

    在本文中,我们将详细探讨如何使用Nginx配置集群的负载均衡。 首先,我们要理解Nginx的负载均衡是如何工作的。Nginx的负载均衡功能实际上利用了其代理服务,将来自客户端的请求根据预设的策略分发到后端的一组...

    基于LVS负载均衡的高性能Web站点设计与实现

    LVS是一种开源的负载均衡解决方案,它能够将网络流量有效地分发到多个服务器上,以提高系统的处理能力和可用性。本文将详细介绍如何设计和实现这样的系统。 1. **部署环境架构设计** 为了应对高并发访问,我们需要...

    Piranha安装快速搭建LVS负载均衡集群.pptx

    在示例中,系统架构包括了两台LVS服务器(lvs1和lvs2)以及两台Nginx服务器(nginx1和nginx2),它们通过LVS1进行负载均衡,对外提供服务,且所有服务器都连接到同一网段。 为了配置Piranha和LVS,首先确保虚拟机...

    4 lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx

    LVS是Linux内核中的一个负载均衡模块,通过IP负载均衡技术和TCP负载均衡技术,将来自网络的请求分发到多个后端服务器。在这个拓扑中,有两台LVS服务器,一台作为主(master),一台作为备(slave)。当主LVS出现...

    nginx+lvs+keepalived安装文档

    本文档将详细介绍如何在 Linux 系统上部署 nginx、LVS 以及 Keepalived,构建一个高可用且负载均衡的服务集群。通过这种方式,不仅可以提高服务的稳定性和性能,还能实现服务的自动故障转移。 #### 二、环境准备 -...

Global site tag (gtag.js) - Google Analytics