注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

nginx的负载均衡特点分析  

2014-01-25 16:16:58|  分类: nginx编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

************************
nginx与haproxy工作在网络结构中的第7层(应用层),所以它可以针对http应用本身来做分流策略.
************************

<一>nginx负载均衡和lvs负载均衡比较分析

        lvsnginx(haproxy)都可以用作多机负载的方案,它们各有特点。其中nginx与haproxy都工作在应用层,对自然语言进行过滤处理(其中分流功能即算是本文所指的负载均衡)。
     一、lvs的优势(可以工作在应用层,还可以工作了其它较低网络层);
     1
.抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。内存和 cpu方面基本无消耗。
      2
.配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

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

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

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

      另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。

<二>nginx(haproxy)和lvs作对比的结果

1
.nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,在应用层, nginx(haproxy)单凭这点可利用的场合就远多于lvs了;但nginx有用的这些功能使其可调整度要高于lvs

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

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

7
.nginx能支持httpemailemail的功能估计比较少人用),lvs所支持的应用在这点上会比nginx更多。

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

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

      nginx
可作为lvs节点机器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。

       当然这一层面也可以直接使用squidsquid的功能方面就比nginx弱不少了(将来squid全面支持smp时,那就另当别论了,squid3.4中新增加了store_id已可以很好的实现url的重写过滤了),性能上也有所逊色于nginx但是apache-trafficserver较nginx又有许多优势。

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

      另外,在taobao的方案中,对这几个东西有很综合的应用。在调度算法方法方面,随着lvs-fullnat的开源,lvs已具备了十种以上的调度方式。当然nginx(tengine)也已具有6种以上调度算法。特别是随着nginx对lua的支持,使用者可以根据息需求写出很多自己的调度算法加以使用。


      ***************************

nginx代理https参考设置与分析

**************************

前提,后端web节点已经可以同时监听80,443端口(站点可以正常通过web节点访问http和https),具体配置https的方法网上一大堆,大家可以百度一下 生成一个ssl的免费证书 搭建https的web站点, 解析web本机ip的话可以分别实现http和https的访问,(注意:web节点没有设置rewrite规则实现http到https的自动跳转)(如果不需要nginx做web代理 的情况下 web节点需要在location字段下配置rewrite 规则才能实现http到https的自动跳转)

附上后端web nginx配置文件 (phpadmin.ff.com)

nginx的负载均衡特点分析 - itoedr - itoedr的it学苑
 

我们要做的重点来了

Nginx代理已经分别开启80 和443的同时监听 配置成类似后端web节点的配置,这里我们以phpadmin.ff.com 这个域名进行测试 nginx代理上配置如下

通用配置nginx.conf

为了方便 我的upstream里面只放了一个web节点 另外一个做备份使用,注意我的upstream 并没有在后端加上:443这样的信息

nginx的负载均衡特点分析 - itoedr - itoedr的it学苑
 

(include)Phpadmin.conf配置(注意红色箭头的部分,如果不加入这条规则 用户必须手动输入https://phpadmin.ff.com才能访问https 而不能实现http到https的自动跳转)

nginx的负载均衡特点分析 - itoedr - itoedr的it学苑
 

这里标注的地方就是为了实现 http访问到https的自动切换 ,如果不加这条rewrite 需要自己手动输入https://phpadmin.ff.com访问,

  评论这张
 
阅读(238)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017