Nginx/LVS/HAProxy负载均衡软件转ITeye - AG环亚娱乐集团

Nginx/LVS/HAProxy负载均衡软件转ITeye

2019-01-10 12:01:43 | 作者: 忆之 | 标签: 负载,均衡,运用 | 浏览: 1946

一般对负载均衡的运用是跟着网站规划的提高依据不同的阶段来运用不同的技能。详细的运用需求还得详细分析,假设是中小型的Web运用,比方日PV小于1000万,用Nginx就彻底能够了;假设机器不少,能够用DNS轮询,LVS所消耗的机器仍是比较多的;大型网站或重要的效劳,且效劳器比较多时,能够考虑用LVS。

一种是经过硬件来进行进行,常见的硬件有比较贵重的F5和Array等商用的负载均衡器,它的长处便是有专业的保护团队来对这些效劳进行保护、缺陷便是花销太大,所以关于规划较小的网络效劳来说暂时还没有需求运用;别的一种便是相似于Nginx/LVS/HAProxy的依据Linux的开源免费的负载均衡软件,这些都是经过软件级别来完成,所以费用十分低价。

现在关于网站架构一般比较合理盛行的架构计划:Web前端选用Nginx/HAProxy+Keepalived作负载均衡器;后端选用MySQL数据库一主多从和读写别离,选用LVS+Keepalived的架构。当然要依据项目详细需求制定计划。
下面说说各自的特色和适用场合。

一、Nginx(大约5万/s,而F5可能是200~800万/s)

Nginx的长处是:

 

1、作业在网络的7层之上,能够针对http运用做一些分流的战略,比方针对域名、目录结构,它的正则规矩比HAProxy更为强壮和灵敏,这也是它现在广泛盛行的主要原因之一,Nginx单凭这点可运用的场合就远多于LVS了。
2、Nginx对网络安稳性的依靠十分小,理论上能ping通就就能进行负载功用,这个也是它的优势之一;相反LVS对网络安稳性依靠比较大,这点自己深有体会;
3、Nginx装置和装备比较简略,测验起来比较便利,它根本能把过错用日志打印出来。LVS的装备、测验就要花比较长的时刻了,LVS对网络依靠比较大。
3、能够承当高负载压力且安稳,在硬件不差的状况下一般能支撑几万次的并发量,负载度比LVS相对小些。
4、Nginx能够经过端口检测到效劳器内部的毛病,比方依据效劳器处理网页回来的状况码、超时等等,而且会把回来过错的恳求从头提交到另一个节点,不过其间缺陷便是不支撑url来检测。比方用户正在上传一个文件,而处理该上传的节点刚好在上传进程中呈现毛病,Nginx会把上传切到另一台效劳器从头处理,而LVS就直接断掉了,假设是上传一个很大的文件或许很重要的文件的话,用户可能会因此而不满。
5、Nginx不仅仅是一款优异的负载均衡器/反向署理软件,它一起也是功用强壮的Web运用效劳器。LNMP也是近几年十分盛行的web架构,在高流量的环境中安稳性也很好。
6、Nginx现在作为Web反向加快缓存越来越成熟了,速度比传统的Squid效劳器更快,能够考虑用其作为反向署理加快器。
7、Nginx可作为中层反向署理运用,这一层面Nginx根本上无对手,仅有能够比照Nginx的就只有lighttpd了,不过lighttpd现在还没有做到Nginx彻底的功用,装备也不那么明晰易读,社区材料也远远没Nginx活泼。
8、Nginx也可作为静态网页和图片效劳器,这方面的功用也无对手。还有Nginx社区十分活泼,第三方模块也许多。

淘宝的前端运用的Tengine便是依据nginx做的二次开发定制版。

Nginx惯例的HTTP恳求和呼应流程图:

 

Nginx的缺陷是:
1、Nginx仅能支撑http、https和Email协议,这样就在适用规划上面小些,这个是它的缺陷。
2、对后端效劳器的健康检查,只支撑经过端口来检测,不支撑经过url来检测。不支撑Session的直接坚持,但能经过ip_hash来处理。

二、LVS(大约80万/s)

LVS:运用Linux内核集群完成一个高功用、高可用的负载均衡效劳器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS的长处是:
1、抗负载才能强、是作业在网络4层之上仅作分发之用,没有流量的发生,这个特色也决议了它在负载均衡软件里的功用最强的,对内存和cpu资源消耗比较低。
2、装备性比较低,这是一个缺陷也是一个长处,由于没有可太多装备的东西,所以并不需求太多触摸,大大减少了人为犯错的几率。
3、作业安稳,由于其本身抗负载才能很强,本身有完好的双机热备计划,如LVS+Keepalived,不过咱们在项目施行中用得最多的仍是LVS/DR+Keepalived。
4、无流量,LVS只分发恳求,而流量并不从它本身出去,这点确保了均衡器IO的功用不会收到大流量的影响。
5、运用规划比较广,由于LVS作业在4层,所以它简直能够对一切运用做负载均衡,包含http、数据库、在线聊天室等等。

LVS DR(Direct Routing)形式的网络流程图:

LVS的缺陷是:
1、软件本身不支撑正则表达式处理,不能做动态别离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势地点。
2、假设是网站运用比较巨大的话,LVS/DR+Keepalived施行起来就比较复杂了,特别后边有Windows Server的机器的话,假设施行及装备还有保护进程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简略多了。

三、HAProxy

HAProxy的特色是:
1、HAProxy也是支撑虚拟主机的。支撑两种署理形式:TCP(四层)和HTTP(七层),支撑虚拟主机;
2、HAProxy的长处能够弥补Nginx的一些缺陷,比方支撑Session的坚持,Cookie的引导;一起支撑经过获取指定的url来检测后端效劳器的状况。
3、HAProxy跟LVS相似,本身就仅仅一款负载均衡软件;单纯从功率上来讲HAProxy会比Nginx有更超卓的负载均衡速度,在并发处理上也是优于Nginx的。
4、HAProxy支撑TCP协议的负载均衡转发,能够对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,咱们能够用LVS+Keepalived对MySQL主从做负载均衡。
5、HAProxy负载均衡战略十分多,HAProxy的负载均衡算法现在详细有如下8种:
① roundrobin,表明简略的轮询,这个不多说,这个是负载均衡根本都具有的;
② static-rr,表明依据权重,主张重视;
③ leastconn,表明最少衔接者先处理,主张重视;
④ source,表明依据恳求源IP,这个跟Nginx的IP_hash机制相似,咱们用其作为处理session问题的一种办法,主张重视;
⑤ ri,表明依据恳求的URI;
⑥ rl_param,表明依据恳求的URl参数’balance url_param’ requires an URL parameter name;
⑦ hdr(name),表明依据HTTP恳求头来确定每一次HTTP恳求;
⑧ rdp-cookie(name),表明依据据cookie(name)来确定并哈希每一次TCP恳求。

Nginx和LVS比照的总结:
1、Nginx作业在网络的7层,所以它能够针对http运用本身来做分流战略,比方针对域名、目录结构等,相比之下LVS并不具有这样的功用,所以Nginx单凭这点可运用的场合就远多于LVS了;但Nginx有用的这些功用使其可调整度要高于LVS,所以常常要去触碰触碰,触碰多了,人为出问题的几率也就会大。
2、Nginx对网络安稳性的依靠较小,理论上只需ping得通,网页拜访正常,Nginx就能连得通,这是Nginx的一大优势!Nginx一起还能区别内外网,假设是一起具有内外网的节点,就相当于单机具有了备份线路;LVS就比较依靠于网络环境,现在来看效劳器在同一网段内而且LVS运用direct方法分流,效果较能得到确保。别的留意,LVS需求向保管商至少恳求多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习许多有关网络通信方面的常识,就不再是一个HTTP那么简略了。
3、Nginx装置和装备比较简略,测验起来也很便利,由于它根本能把过错用日志打印出来。LVS的装置和装备、测验就要花比较长的时刻了;LVS对网络依靠比较大,许多时分不能装备成功都是由于网络问题而不是装备问题,出了问题要处理也相应的会费事得多。
4、Nginx也相同能接受很高负载且安稳,但负载度和安稳度差LVS还有几个等级:Nginx处理一切流量所以受限于机器IO和装备;本身的bug也仍是难以避免的。
5、Nginx能够检测到效劳器内部的毛病,比方依据效劳器处理网页回来的状况码、超时等等,而且会把回来过错的恳求从头提交到另一个节点。现在LVS中 ldirectd也能支撑针对效劳器内部的状况来监控,但LVS的原理使其不能重发恳求。比方用户正在上传一个文件,而处理该上传的节点刚好在上传进程中呈现毛病,Nginx会把上传切到另一台效劳器从头处理,而LVS就直接断掉了,假设是上传一个很大的文件或许很重要的文件的话,用户可能会因此而动火。
6、Nginx对恳求的异步处理能够协助节点效劳器减轻负载,假设运用apache直接对外效劳,那么呈现许多的窄带链接时apache效劳器将会占用大 量内存而不能开释,运用多一个Nginx做apache署理的话,这些窄带链接会被Nginx挡住,apache上就不会堆积过多的恳求,这样就减少了相当多的资源占用。这点运用squid也有相同的效果,即便squid本身装备为不缓存,对apache仍是有很大协助的。
7、Nginx能支撑http、https和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是最完美的计划了。详细的运用还得详细分析,假设是比较小的网站(日PV小于1000万),用Nginx就彻底能够了,假设机器也不少,能够用DNS轮询,LVS所消耗的机器仍是比较多的;大型网站或许重要的效劳,机器不忧愁的时分,要多多考虑运用LVS。

现在对网络负载均衡的运用是跟着网站规划的提高依据不同的阶段来运用不同的技能:

榜首阶段:运用Nginx或HAProxy进行单点的负载均衡,这一阶段效劳器规划刚脱离开单效劳器、单数据库的形式,需求必定的负载均衡,可是依然规划较小没有专业的保护团队来进行保护,也没有需求进行大规划的网站布置。这样运用Nginx或HAproxy便是榜首挑选,此刻这些东西上手快, 装备简单,在七层之上运用HTTP协议就能够。这时是榜首挑选。

第二阶段:跟着网络效劳进一步扩展,这时单点的Nginx现已不能满意,这时运用LVS或许商用Array便是首要挑选,Nginx此刻就作为LVS或许Array的节点来运用,详细LVS或Array的是挑选是依据公司规划和预算来挑选,Array的运用交给功用十分强壮,自己在某项目中运用过,性价比也远高于F5,商用首选!可是一般来说这阶段相关人才跟不上事务的提高,所以购买商业负载均衡现已成为了必经之路。

第三阶段:这时网络效劳现已成为干流产品,此刻跟着公司知名度也进一步扩展,相关人才的才能以及数量也随之提高,这时不管从开发合适本身产品的定制,以及降低成本来讲开源的LVS,现已成为首选,这时LVS会成为干流。
终究构成比较抱负的根本架构为:Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2

    oxygenxml.oxygenITeye

    插件,生成器,代码
  • 3

    JVM参数装备大全ITeye

    信息,打印,前后
  • 4

    ThreadITeye

    先后,正常,作业
  • 5
  • 6

    vba upgradeITeye

    文件,程序,晋级
  • 7

    java 多线程ITeye

    线程,作业,内存
  • 8
  • 9

    ClassLoaderITeye

    运用,文件,办法
  • 10