nginx负载均衡和lvs负载均衡的比较分析

1、lvs的优点:

一、抗负载能力强,由于lvs工做方式的逻辑是很是之简单,并且工做在网络4层仅作请求分发之用,没有流量,因此在效率上基本不须要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。

二、配置性低,这一般是一大劣势,但同时也是一大优点,由于没有太多可配置的选项,因此除了增减服务器,并不须要常常去触碰它,大大减小了人为出错的概率。

三、工做稳定,由于其自己抗负载能力很强,因此稳定性高也是瓜熟蒂落,另外各类lvs都有完整的双机热备方案,因此一点不用担忧均衡器自己会出什么问题,节点出现故障的话,lvs会自动判别,因此系统总体是很是稳定的。

四、无流量,lvs仅仅分发请求,而流量并不从它自己出去,因此能够利用它这点来作一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。

五、基本上能支持全部应用,由于lvs工做在4层,因此能够对几乎全部应用作负载均衡,包括http、数据库、聊天室等等。

另:lvs也不是彻底能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。因此,用lvs也得多多小心为妙。
前端

2、nginx和lvs做对比的结果

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

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

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

四、nginx也一样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理全部流量因此受限于机器IO和配置;自己的bug也仍是难以免的;nginx没有现成的双机热备方案,因此跑在单机上仍是风险较大。

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

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

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

在使用上,通常最前端所采起的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优势令它很是适合作这个任务。

重要的ip地址,最好交由lvs托管,好比数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会愈来愈大,若是更换ip则故障会接踵而至。因此将这些重要ip交给lvs托管是最为稳妥的,这样作的惟一缺点是须要的VIP数量会比较多。
linux

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

相关文章
相关标签/搜索