lvs 与nginx做药作用

时间:2022-07-11 03:11:48
1,如果是比较小的网站(日PV<1000万),用nginx就完全可以了,如果机器也不少,可以用DNS轮询,lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。
2,重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。
3,大量real server 的话    肯定是lvs厉害 
4,LVS 工作在网络4层仅做请求分发之用没有流量,可配置性低,几乎可对所有应用做负载均衡,对网络依赖大,没有健康检查机制。
nginx的7层(应用层),所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,对网络依赖小,可检测服务器内部错误。
nginx可以根据URL进行负载均衡的请求转发,而LVS只能根据ip:port进行请求转发
一般情况下,LVS会被放在最前端做负载均衡,nginx可作为lvs的节点服务器。


现在我觉得Nginx作为最前端的负载均衡并不是一个非常理想的选择,一个大型的网站或系统的 话,可以存在多级代理,比如我们最前端可以用F5或 LVS来作为网站或系统的入口,让它们来顶外部的高并发流量,而Nginx由于其强大的正则处理能力,可以作为中层代理,一来可以作为F5/LVS的补 充,节约大量成本,这种做法也是张宴兄推荐的,架构图也很简单,即F5/LVS -->Nginx(多台)-->web集群。


大家可以看一下基于架构的好处有:
一、不需要担心单Nginx负载均衡器crash的问题,随便怎么挂都可以;
二、Nginx作为F5的补充,利用其强大的upstream模块和正则,可以轻松实现动静分离;
三、压缩可以通过nginx做,这样,后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器,都不用考虑压缩的功能问题。
四、方便的运维管理,在各种情况下可以灵活制订方案;
五、即使没有squid群组,Nginx现在可以做为优秀的反向代理加速软件了。




一般用 LVS 做四层转发,Nginx做七层转发。 
四层的网络层数据转发,没有“请求”的概念。




Nginx是7层调度,34层的流量负载还是要LVS来




LVS的负载均衡比较一般,需要NGINX做更优的调度 
但是没有LVS,你总不能让NGINX抗在最前面成为单点。






现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:


第一阶段:利用Nginx或者HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,需要一定的负载均衡,但是仍然规模较小没有专业的维护团队来进行维护,也没有需要进行大规模的网站部署。这样利用Nginx或者HAproxy就是第一选择,此时这些东西上手快,配置容易,在七层之上利用HTTP协议就可以。这时是第一选择。


第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能满足,这时使用LVS或者商用F5就是首要选择,Nginx此时就作为LVS或者 F5的节点来使用,具体LVS或者F5的是选择是根据公司规模,人才以及资金能力来选择的,这里也不做详谈,但是一般来说这阶段相关人才跟不上业务的提 升,所以购买商业负载均衡已经成为了必经之路。


第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。








一般常用的七层负载均衡设备有Nginx和Varnish,两者都可以进行负载均衡处理,但是应用方式和场景略有不同。Varnish配置简单并且具有比较强大的缓存加速功能,因此通常用在静态资源请求的分流上。而Nginx主要的特点是高效,可以编写各种各样的第三方模块提供定制化的功能。例如可以在Nginx上做认证,灰度流量切换以及文本压缩等等功能。在处理过程中我们知道Nginx服务器通过upstream模块选择后端服务器转发请求,通过实现特定的后端服务器选择算法就可以做到灰度流量切换的功能。另外在获取后端服务的结果之后,还可以通过Nginx的filter模块对结果进行各种处理,包括文本压缩增加Footer等功能。从这个角度来说,Nginx比Varnish使用要灵活许多。










至于负载均衡高可用架构,我首推是Nginx/HAProxy+Keepalived的架构,这时很多朋友就有疑问,说你为什么不选择基于LVS+Keepalived的集群方案呢?这是因为我们部署的网站一般都会有动静分离、正则分发的需求,如果我们最前面选用LVS+Keepliaved的架构,那么我们至少又要在中间加一层二级负载均衡的机器,这样比较耗机器,无形中也会增加整个网站的成本;另外,很多朋友都比较担心的一个问题,说Nginx/HAProxy+Keepalived的稳定性不如LVS+Keepalived,这个其实是误解;我们通过十几个项目的成功实施,再加上几年的观察期,发现这些软件级别的负载均衡器的稳定性确实很好,在高并发的情况下宕机的可能性微乎其微,而近段时间实施的一个商业网站,用的是HAProxy+Keepalived,在亿/日高并发流量的冲击下,HAProxy稳如磐石。LVS在性能方面是最好的,尤其是后面的节点(如Web或MySQL数据库服务器)超过10台时,它的性能是最优异的。而小公司的并发和流量一般不是特别大,大概一天持续在100万/日之间,所以我这里也向大家推荐Nginx/HAProxy+Keepalived。










 如果网站是放在IDC机房托管,而机房最前面也没有硬件防火墙防护时,这时候大家尽量做好流量监控的工作,我一般会在主Nginx/HAProxy上安装MRTG+Nload软件来对流量进行监控,Nload可以对流量进行即时监控,它的安装也是很简单的,我们先安装好RPMForege。RPMforge是Centos系统下的软件仓库,拥用4000多种的软件包,被Centos社区认为是最安全也是最稳定的一个软件仓库,地址为http://pkgs.repoforge.org/rpmforge-release。这个安装成功以后,我们可以通过命令yum –y install nload很轻松的安装nload。输入此命令后,nload软件会很直观的显示流量的即时状态,上半部分ncoming是进入网卡的流量,下半部分Outgoing是从这块网卡出去的流量,每部分都有当前流量(Curr)、平均流量(Avg)、最小流量(Min)、最大流量(Max)、总流量(Ttl)。由于此软件比较直观,我用它来取代之前的即时流量监控软件iptraf,Nload的工作界面如下所示:




                  该层一般是由2台lvs服务器组成主被机模式,类似路由器的模式,通过管理员配置的理由和映射规则把请求分发到具体的服务器层.
                  该层次还可以对第二层的服务器进行监控,监控每个服务节点的运行情况,如果不正常的话可以及时移除掉,等正常后再加入...
                  由于该层次使用的四http 4层协议,所以他的效率非非常的高的,相对nginx7层协议,他又很大的性能优势,这也是它能在nginx并发支持不够的情况下作为nginx的前段阶段,把请求分发给nginx的原因....


                  本层所采用的负载均衡协议主要是 基于IP负载均衡.


                   在lvs的ipvs模块运行后悔在前段服务器上虚拟一个IP地址,这个IP被叫作 LVS的vip,当用户访问这个ip后就可以由IPVS模块实现负责均衡了....












http://www.centoscn.com/IT/2013/0804/1008.html
http://54im.com/web/nginx-web-high-performance.html
http://www.linuxeden.com/html/sysadmin/20120216/120298.html
http://www.centoscn.com/yunwei/manage/2013/0804/1015.html
http://blog.feehi.com/linux/274.html
http://www.itmmd.com/201503/653.html