设为首页 收藏本站
查看: 1582|回复: 0

[经验分享] LVS、Nginx负载分衡构建实战,以及应用性能对比

[复制链接]

尚未签到

发表于 2015-11-20 15:26:39 | 显示全部楼层 |阅读模式
一、LVS负载均衡结构
二、Nginx的负载结构

三、LVS和Nginx的对比
四、负载均衡选型
五、在高并发环境中LVS,Nginx的角色一、LVS负载均衡结构
LVS负载均衡:

针对高可伸缩、高可用网络服务的需求,基于IP层的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。

IPVS的总体结构主要如下:
客户端访问–IPVS检测负载均衡算法和调度算法–IPVS处理IP包—IPVS根据虚拟服务器与真实服务器链表发往真实服务器(RS)-RS返回数据。
LVS的实现方式:
VS/NAT
VS/TUN
VS/DR


图1

LVS 在生产中的环境:


图2


LVS各种解构的性能分析:
LVS本身是基于IP层的负载均衡,可以说是最高效的一个种方式。但基于NAT方式的,往往在流量的环境中会出现性能问题,NAT模式是需要资源最多的模式,其实是TUN模式,TUN模式对系统要求也比较高。
目前来说推荐用DR方式,目前没遇到性能问题。
二、Nginx的负载结构
  Nginx的负载均衡是一个基于内容和应用的七层交换负载均衡的实现。
同样Nginx也是一个Http的服务端。
  负载均衡主要使用的Nginx的ngx_http_upstream_hash_module模块。
Nginx的负载结构:


图3


Nginx的性能分析:
优点:
Nginx的负均衡实现比较简单,默认对后端有健康检查的能力。后端机器少的情况下(少于10台)负载均衡能力表现好。


缺点:
  所以访问从一个出口出去,容易引起流量浪涌连接失败。后面机器较多时(多于10)无法良好的发挥机器性能。
三、LVS和Nginx的对比
LVS: 
是基于IP层的负载均衡,特别DR和TUN两种模式可以由后端机器直接对外服务。性能提升明显,负载均衡对资源占用较少。
Nginx:
   是基于内容的负载均衡实现,实现模式和LVS的NAT模式相似,但性能比LVS的NAT高。
四、负载均衡的选型原则
使用什么样的负载均衡器,不重要,重要的是是公司愿意在这个上面花多少成本来维护他。
 
  下面我们将会为大家提供一个针对WEB服务的一个负载均衡方案
  LVS=>Nginx=>Cache

对比web1.0和web2.0的解决方案碰到的困难
Web1.0
1、源数据量小,单台squid即可达到很高的命中率。
2、请求量大,用lvs+squid或者dns轮询即可解决问题。
3、squid服务器磁盘IO压力大,用超大内存做cache。

web 2.0
1、数据变化频繁,数据总量大,squid的hast table较大,命中下降。
2、请求量大,种类多,数据源上T是正常现象,squid的Cache更新现象严重。
3、Cache的IO更新严重,致使效率低下
4、基于HASH的URL CACHE,其中一台Cache死掉,必将引起Hash ReHash
5、压力过大导致的hit ratio抖动

负载均衡的选型总结
总结上面问题如果只是简单的负载均衡,难于解决WEB2.0的问题。Nginx可以说是一个完美的方案,但一个大的网站流量不只是一个千兆网卡能挡住的。
五、在高并发环境中LVS、Nginx的角色


图4


Nginx的实现代码:
部分代码如下:
upstream img1{
server 192.168.100.1;
server 192.168.100.2;
}
upstream img2{
server 192.168.100.1:81;
server 192.168.100.2:82;
}

部分代码如下:
location ~ ^/[0-1][0-f]/ {
proxy_pass http://img1;
}
location ~ ^/[2-3][0-f]/ {
proxy_pass http://img2;
}

这种结构的优点:
实现了高可用性,最大程度上防止单点,又保证架构的伸缩性。
  在后端服务器中模拟url hash的算法来找到内容所在的squid,提高了命中率。
  充分发挥机器的性能,架构可扩展性,层次分明。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-141603-1-1.html 上篇帖子: Linux下基于LVS的集群原理及配置方法 下篇帖子: LVS学习笔记 8 crm实现Mysql高可用集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表