Nginx做负载均衡

作者&投稿:表群 (若有异议请与网页底部的电邮联系)
nginx是怎么实现负载均衡的~

通过设置特定的策略,使nginx将请求按策略分配到不同的后端服务器
一般可以使用IP分流、服务器压力分流等方法
IP分流可以将请求来源IP在某个范围内的请求传递给相同的后端
服务器压力分流可以根据后端服务器压力的不同,而分配给后端压力相对较小的后端服务器

lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。 首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。
下面来分析一下两者:

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

如果你想后端web服务器和负载均衡器全部都双机热备的话,最少需要4台,你需要在两台负载均衡器上搭建keepalive,是负载均衡器也双机热备!


nginx在做负载均衡时如何配置 nginx的负载均衡怎么配置
1、下面的架构就是我们今天的演示结构,后端有两台服务器,分别是node1和node2,前端是一台web服务器,然后在web服务器上做负载均衡,将前端的访问流量导到后端的两个节点服务器上。三个服务器的IP地址分别是:web:192.168.1.210node1:192.168.1.211node2:192.168.1.212 2、按照这样的架构...

nginx常用的负载均衡策略
nginx常用的负载均衡策略包括轮询(Round Robin)、IP哈希(IP Hash)、最少连接(Least Connections)和权重(Weighted)。1. 轮询(Round Robin):这是nginx默认的负载均衡策略。nginx将每个新的请求按顺序分发到后端服务器列表中的下一个服务器。当到达列表的末尾时,它会回到列表的顶部并继续分发。这种...

nginx负载均衡的三种方式
nginx负载均衡的三种方式包括轮询(round robin)、IP哈希(IP hash)以及最少连接(least connections)。1. 轮询(Round Robin):这是nginx默认的负载均衡方式。当请求到来时,nginx按照服务器列表的顺序,将请求依次分配到各个服务器上。当所有服务器都已接收到请求后,nginx再次回到列表的起始位置,进行...

nginx负载均衡的指令
Nginx是一款高性能的Web服务器和反向代理服务器,它可以通过配置来实现负载均衡功能。在Nginx中,实现负载均衡的主要指令包括upstream、server和location等。upstream指令用于定义一组上游服务器,这些服务器可以是Web服务器、反向代理服务器或其他提供服务的机器。这个指令通常会列出所有的上游服务器,每个服务器...

nginx负载均衡的指令有哪些
nginx负载均衡的指令如下:1、upstream:定义后端服务器池,用于负载均衡。2、server:定义后端服务器的权重、端口、主机名等。3、sticky:实现会话粘性,将同一用户的请求分配给同一台后端服务器。4、proxy_pass:将请求转发到后端服务器。5、upstream_list:定义多个后端服务器池,用于轮询或随机选择。6、...

Nginx实现负载均衡
实现负载均衡可有以下算法:Nginx实现负载均衡的原理是利用Http重定向实现负载均衡 rpm 安装方式nginx配置文件地址 \/etc\/nginx\/conf.d 目录下面,配置文件内容结构如下:修改完配置文件以后,还需要输入重新加载配置命令:我们从官网上面看一下负载均衡配置案例,然后根据案例配置去对每项参数进行解释,案例如下...

nginx负载均衡策略是什么?
nginx实现反向代理负载均衡 a、本地使用Windows系统,然后使用VirutalBox安装一个虚拟的Linux系统。在本地的Windows系统上分别安装nginx(侦听8080端口)和apache(侦听80端口)。在虚拟的Linux系统上安装apache(侦听80端口)。这样相当于拥有了1台nginx在前端作为反向代理服务器;后面有2台apache作为应用程序...

使用Nginx实现负载均衡
二、Nginx实现负载均衡 1、源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行...

如何安装nginx负载均衡配置详解
A服务器做为主服务器,域名直接解析到A服务器(192.168.5.149)上,由A服务器负载均衡到B服务器(192.168.5.27)与C服务器(192.168.5.126)上。域名解析 由于不是真实环境,域名就随便使用一个a.com用作测试,所以a.com的解析只能在hosts文件设置。打开:C:WindowsSystem32driversetchosts 在...

nginx负载均衡原理
负载均衡(Load Balance),它在网络现有结构之上可以提供一种廉价、有效、透明的方法来扩展 网络设备 和 服务器的带宽 ,并可以在一定程度上 增加吞吐量 、 加强网络数据处理能力 、提高 网络的灵活性 和 可用性 等。用官网的话说,它充当着网络流中“交通指挥官”的角色,“站在”服务器前 处理所有服务器端和客户...

杭锦后旗17586555528: nginx实现tomcat集群的负载均衡有几种方式 -
史文托拉: 一,如果仅是对外提供一个页面访问,不用区分单一用户(不区分每个访问session,不涉及用户权限,用户资料等内容),仅仅配置nginx负载均衡策略即可. nginx负载均衡策略主要分一下四种: 1)、轮询(默认) 每个请求按时间顺序逐一分...

杭锦后旗17586555528: nginx实现负载均衡的方式有哪些 -
史文托拉: 只有在客户端提交MapReduce任务的时候才有可能获取本地文件,当MapReduce执行的时候,Map和Redure任务都是分发到不同的节点运...

杭锦后旗17586555528: nginx负载均衡的算法怎么实现的 -
史文托拉: 常见的有LVS、Nginx和HAProxy,者者介绍分别如下:LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感谢章文嵩博士为我...

杭锦后旗17586555528: 怎样理解NGINX负载均衡策略?
史文托拉: 一般情况下,客户端发送多个请求到服务器,服务器处理请求,其中一部分可能要操... 将负载分发到不同的服务器,这就是负载均衡,核心是「分摊压力」.Nginx 实现负...

杭锦后旗17586555528: 利用nginx实现Redis的负载均衡,应该怎么配置? -
史文托拉: 网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去.这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数...

杭锦后旗17586555528: Nginx负载均衡策略的优势体现在哪些方面?
史文托拉: 在OSI网络体系中,IP网络层是第3层,TCP/UDP传输层是第4层,而HTTP等应用层则是第7层,因此,在Web场景中,需求量最大的自然是7层负载均衡,而Nginx非常擅长应用层的协议处理,这体现在以下4个方面:1.通过多路复用、事件驱动等技术,Nginx可以轻松支持C10M级别的并发;2.能够充分使用CPU、内存等硬件,极高的效率使它可以同时为几十台上游服务器提供负载均衡功能;3.架构很灵活,它允许任何第三方以C模块的形式,与官方模块互相协作,给用户提供各类功能;4.使用了非常开放的2-clause BSD-like license源码许可协议,它意味着你在修改Nginx源码后,还可以作为商业用途发布.

杭锦后旗17586555528: nginx 做负载均衡需要什么配置 -
史文托拉: 对 nginx.conf 文件的做两处操作: 在修改的过程中,要注意:

杭锦后旗17586555528: 单服务器,使用nginx多进程来负载均衡,怎么做 -
史文托拉: 首先,location要匹配到ooo目录,然后要匹配剩余uri,如果有大写,则调用perl将url全部转成小写,然后rewrite,参考配置代码: #测试perl的统一转小写功能 perl_set $url ' sub { my $r = shift; my $lurl = lc($r->uri); return $lurl; } ';

杭锦后旗17586555528: 我用nginx配置webservice负载均衡,怎么弄 -
史文托拉: 简单的负载均衡配置 upstream backend { server backend1.example.com weight=5;#weight权重,权重越高发送到此台服务器的请求概率越大 server backend2.example.com:8080; server backup1.example.com:8080 backup;#backup备份服务器,只有在非backup服务器都不能访问时才会向此服务器分流

杭锦后旗17586555528: 为什么用nginx做负载均衡 -
史文托拉: 因为Nginx做最好,而且用的话人,相关文档也就多.并且淘宝用的tinge就是基于Nginx的

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网