lvs的调度算法有几种_lvs四种负载均衡类型,十种调度算法

LVS四种负载均衡类型,十种调度方法

Load balancer / director    负载调度器

RS / real server            真实服务器

VIP客户端访问的虚拟集群ip

RIP集群所提供的应用程序的真实ip

DIP调度器的真实地址

一.四种负载均衡类型

1.DR直连

(1)首先,客户端CIP的请求发送给LVS调度器的VIP。

(2)LVS调度器收到客户端的请求包后,会选择一台real server,将数据包的MAC地址改成选择的RealServer的MAC地址,并通过交换机(数据链路层)发送给RS服务器(因为MAC地址是rs服务器,所以,rs可以接收到该数据报。)注意:此时数据包的目的及源ip地址没有发生任何改变。

(3)A.RS的数据链路层收到发送来的数据报文请求后,会从链路层往上传给IP层,此时IP层需要验证请求的目标IP地址。因为包的目标IP(即VIP)并不是像常规数据报那样为RS的本地IP,而仅仅目的MAC地址是RS的。所以,在RS上需要绑定一个VIP,这样包的目标ip就没有发生变化。而且这个vip是隐藏的,不会响应arp解析。

B.RS处理数据包完成后,直接将应答返回给客户端,此时的源ip为vip,目标为cip,回复这个过程不经过调度器

2.Tun隧道

(1)客户端发送请求到调度器的vip;

(2)调度器根据调度算法选择一台real server进行转发,这个时候的源ip为cip,目标ip为vip,如果直接转发,目标ip就为rip了,所以需要在vip到rip这个过程进行隧道封装,封装两个ip首部,转发的报文源cip目标vip,但是还会在ip首部再添加一个ip首部,目标地址是rip,这个过程要求支持隧道协议。

(3)当real server接受到数据包之后,由于ip首部的目标ip是自己,就会拆开封装,还有一个首部内容为cip请求自己的vip,就会响应这个请求给cip。(响应报文的源ip为vip,目标ip为cip)

3.Nat

(1)客户端访问集群的vip,请求web服务。(请求报文:源cip,目标vip);

(2)调度器收到请求,会修改目标ip为rip,并且将请求根据相应的调度算法发往后端web服务器(请求报文:源cip,目标rip)

(3)Web服务器收到请求,发现目标ip是自己,并且也提供相应的服务,就会响应这个请求报文,并且发送给调度器。(相应报文:源rip,目标cip)

(4)调度器收到web服务器的相应报文,会根据相应的机制判断出用户的目标ip是vip,这时会修改源ip为vip发送给客户端响应。(源vip,目标cip)

4.Fullnat

(1)客户端发送请求给调度器。(源cip,目标vip)

(2)Vip经过调度算法,讲请求发送给real server。(源dip,目标rip)

(3)Real server 接收到请求后,发现源地址是dip,则对dip进行响应。(源rip,目标dip)

(4)调度器收到real server 的响应后,会修改数据报的源地址为vip,目标地址为cip进行响应。

十种调度算法:

LVS的调度算法LVS的调度方法分为两种,一种是静态方法,一种是动态方法:

静态方法:仅根据算法本身实现调度;实现起点公平,不管服务器当前处理多少请求,分配的数量一致;动态方法:根据算法及后端RS当前的负载状况实现调度;不管以前分了多少,只看分配的结果是不是公平;

一,静态调度算法(4种)

(1)rr : round robin :轮叫,轮询

每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。缺点:是不考虑每台服务器的处理能力。

(2)wrr: weight round robin :加权轮询(以权重之间的比例实现在各主机之间进行调度)

由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

(3)sh : source hashing :源地址hash实现会话绑定sessionaffinity

将同一客户端的请求发给同一个real server,源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的并且没有超负荷,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标IP地址换成请求的源IP地址。

(4)dh : destination hashing :目标地址hash

将同样的请求发送给同一个server,一般用于缓存服务器,简单的说,LB集群后面又加了一层,在LB与realserver之间加了一层缓存服务器,当一个客户端请求一个页面时,LB发给cache1,当第二个客户端请求同样的页面时,LB还是发给cache1,这就是我们所说的,将同样的请求发给同一个server,来提高缓存的命中率。

动态调度算法(6种):

(1)lc :leash-connection最少连接

把新的连接请求分配到当前连接数最小的服务器,最小连接调度是一种动态调度短算法,它通过服务器当前所活跃的连接数来估计服务器的负载均衡,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1,当连接中止或超时,其连接数减一,在系统实现时,我们也引入当服务器的权值为0时,表示该服务器不可用而不被调度。此算法忽略了服务器的性能问题,有的服务器性能好,有的服务器性能差,通过加权重来区分性能,所以有了下面算法wlc。简单算法:active*256+inactive (谁的小,挑谁)

(2)wlc :加权最少连接

加权最小连接调度算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权限,加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。由于服务器的性能不同,我们给性能相对好的服务器,加大权重,即会接收到更多的请求。简单算法:(active*256+inactive)/weight(谁的小,挑谁)(3)sed :最少期望延迟说明:不考虑非活动连接,谁的权重大,我们优先选择权重大的服务器来接收请求,但会出现问题,就是权重比较大的服务器会很忙,但权重相对较小的服务器很闲,甚至会接收不到请求,所以便有了下面的算法nq。基于wlc算法,简单算法:(active+1)*256/weight (谁的小选谁)(4).nq :never queue永不排队说明:在上面我们说明了,由于某台服务器的权重较小,比较空闲,甚至接收不到请求,而权重大的服务器会很忙,所此算法是sed改进,就是说不管你的权重多大都会被分配到请求。简单说,无需队列,如果有台real server的连接数为0就直接分配过去,不需要在进行sed运算。(5).LBLC :基于局部性的最少连接说明:基于局部性的最少连接算法是针对请求报文的目标IP地址的负载均衡调度,主要用于Cache集群系统,因为Cache集群中客户请求报文的目标IP地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载基本平衡的情况下,将相同的目标IP地址的请求调度到同一个台服务器,来提高服务器的访问局部性和主存Cache命中率,从而调整整个集群系统的处理能力。(6).LBLCR :基于局部性的带复制功能的最少连接说明:基于局部性的带复制功能的最少连接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地 址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除, 以降低复制的程度。注:LVS默认调度算法是 wlc 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值