lvs

455 阅读6分钟

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存储在缓存

架构


  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

(1)LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

(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。

  1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
  2. 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… //极好的文章

以上资料,还有资源的引用资源,已经非常多,非常全,还有实践。不用看其他文章了。