lvs和nginx的区别?
区别
一个是基于http/应用层,一个是基于ip层。
效率更高。越是基于底层协议,效率越高。因为每往上一层协议,就又多封装了一次协议。
最佳实践
所以,一般来说,使用nginx就够了。因为不需要那么高的并发。除非是海量请求。
学习小结
LVS是目前广为采用的软件负载均衡解决方案,在一些大型企业级系统及互联网系统中应用。本次,简单地了解了一下LVS,并在Linux下搭建了一个小小的测试环境,借助Keepalived实现了一个最小化的负载均衡测试环境。LVS是一个可以工作在网络第四层的负载均衡软件,因此它相对于Nginx一类工作在第七层的负载均衡软件有着无可比拟的性能优势,而且它还是我国的章文嵩博士(现在阿里的副总裁,淘宝的技术专家)作为创始人发起的,现已经成为Linux内核的组成部分。 当然,目前流行的LVS解决方案中,在Web服务器端也有采用了Nginx+Tomcat这样的搭配类型,静态文件和动态文件分开进行处理,也不失为一种有效的尝试。在以后的日子里,我还会尝试下在Linux下借助Jexus跑http://ASP.NET MVC项目,试试.NET项目在Linux下的运行效果,希望到时也可以做一些分享。好了,今天就到此停笔。
最佳实践2
lvs 负载均衡
nginx 静态
tomcat集群
或者,并发没有那么高,去掉lvs。nginx 1.静态2.负载均衡。
软件负载均衡技术lvs和硬件负载均衡技术的区别?
主要是硬件很贵,商业硬件F5。几十万,百万级别。一般初创公司,中小企业,承受不起。
为什么不反向代理?
反向代理,就是响应的时候,也要经过中介软件。
lvs为什么不反向代理?因为响应数据太多。影响性能。所以响应数据就直接到客户端。
基于哪一层进行负载均衡?
ip层。nginx是应用层,即http层。
负载均衡算法
8种。比如,按顺序轮询。
LVS集群采用IP负载均衡技术和基于内容请求分发技术。 就是不同的内容类型,到不同的节点。
其他的算法,都是同样的内容类型。
负载均衡-按顺序算法实现
i + 1 / n
i存储在缓存
架构
- 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
- PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
- IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
- POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
(2)LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。
①NAT模式:网络地址转换
内核
修改linux 内核??? lvs代码是基于内核编写的。
1.早期,lvs代码需要重新编译到linux内核,才能支持该功能
2.后期,已经成为linux内核标准。不再需要自己去编译。
目前已是Linux内核的一部分,可通过ipvsadm管理LVS
2.1 LVS是神马东西
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
百万级别
为什么可以支持百万级别?因为基于linux内核。基于ip层协议。
nginx 万级别。
支持缓存 多媒体 邮件等服务集群
除了普通的业务服务集群,也支持各种服务集群。
缓存
多媒体
邮件服务器
高可用
lvs本身也是主从,从备份。
如何实现容错之后,自动切换?
keepalive。
keepalive是软件,解决lvs高可用,容错时,实现主从自动切换。
4.2 高可用
4.2.1 单点问题
lvs使用过程中会出现单点问题,为了提高可靠性。可以使用双机软件,进行热备。通常和lvs搭配的双机软件是keepalived,keepalived会配置lvs规则。
keepalived通过vrrp协议检测两台主机的健康状态,一旦出现故障,vip自动切换到新的主机上。ipvsadm只是lvs的管理软件,所以即使没安装有ipvsadm,只要配置有keepalived的lvs,启动服务后就会自动生成LVS规则。
keepalived安装
wget www.keepalived.org/software/ke…
tar xzvf keepalived-1.2.13.tar.gz; cd keepalived-1.2.13; ./configure; make; make install
不同的层,都可以负载均衡
dns
ip
应用层 //nginx,基于Http应用层协议
组成
三、LVS的组成
LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
- ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
- ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)
核心
1.2 负载均衡的类型
负载均衡可以采用硬件设备(例如常常听见的F5),也可以采用软件负载。 商用硬件负载设备成本通常较高(一台几十万上百万很正常),所以在条件允许的情况下我们会采用软件负载;
软件负载解决的两个核心问题是:选谁//路由+负载均衡、转发//转发数据,其中最著名的是LVS(Linux Virtual Server)。
传送门->关于负载均衡的实现方式类型等介绍请浏览我的另一篇博文:《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构
数据
网卡 100M 这是普通家用网卡
一个请求的数据1KB
一个请求的时间是ms级别
1s多少个请求?都是可以计算得到的。
学习资料
官方文档 //最权威
www.cnblogs.com/liwei0526vi… //有搭建实践
zhuanlan.zhihu.com/p/34246665 //很好的文章
superproxy.github.io/docs/lvs/in… //极好的文章
以上资料,还有资源的引用资源,已经非常多,非常全,还有实践。不用看其他文章了。