LVS和Nginx负载均衡调度算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS和Nginx负载均衡调度算法相关的知识,希望对你有一定的参考价值。

LVSnginx负载均衡调度算法

第1章 LVS10种调度算法

1.1 静态算法:

1.1.1 rr(round robin):轮询调度算法:

轮询调度算法的原理就是依次将用户的访问请求,平均的分配到每一台web服务节点上,1开始,到最后一台服务器节点结束,然后在开始新一轮的循环,这种算法简单,但是没有考虑到每台节点服务器的具体性能

1.1.2 wrr(weight):权重调度算法

由于每台服务器的性能会高低不同,wrr将会根据管理员设定的权重值来分配访问请求,权重值越大的,被分到的请求数也就越多,此种算法有效的解决了rr轮询算法的缺点

1.1.3 sh(source hashing)源地址散列:

主要实现会话绑定,解决session会话共享问题,源地址散列会根据请求的源ip地址,作为关键字,在静态分配的hash表中找出对应的服务器,若该服务器没有超过负荷,就将请求分配到该服务器

1.1.4 dh(destination hashing)目标地址散列,把同一个ip地址的请求,发送给同一个server

目标地址散列调度算法是针对目标ip地址的负载均衡,是一种静态映射算法,把目标ip地址作为关键字,在静态分配的hash表中找到对应的服务器,若该服务器可用并没有超过负荷,则将请求发送到该服务器 

1.2 动态调度算法:

1.2.1 LC(least connection)最少连接:

当有用户发起访问请求时,lc算法将会把请求分配到集群中连接数最少的服务器上

1.2.2 wlc(weight least connection scheduling)加权最少连接:

加权最少连接算法是最少连接的升级版,各个服务器用想应的权重值表示其处理连接的性能,默认权重值为1,加权最少连接调度在调度访问请求时,会尽量使服务器的已建立连接和权重值成比例

也就是活动的连接数除以权重,谁小,挑谁

1.2.3 sed(shortest expected)最短延迟调度:

wlc基础上进行改进,不在考虑非活动状态,把当前处于活动状态的数目+1,数目最小的,则接受下次访问请求,+1的目的是为了考虑加权的时候,非活动链接过多,当权限过大,会导致非空闲的节点一直处于无连接状态

1.2.4 nq(nerver queue)永不排队,改进的sed

无需队列,如果有rs节点的连接数为0,那么直接将访问请求分配过去,不需要进行sed运算

1.2.5 LBLC(locality based leastconnection)基于局部性的最少连接

此算法是根据请求报文的目标ip地址的负载均衡调度,目前主要用于cache集群系统,因为cache集群中的客户请求报文的目标ip地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载剧本平衡的请求下,将相同的目标ip地址的请求调度到同一个服务器,来提高整个web服务的访问局部性和主存cache的命中率,从而调整整个集群系统的处理能力

基于局部性的最少连接调度算法根据请求的目标ip地址找出该目标地址最近使用的rs,若该rs可用,将发送请求,若该服务器不可用,则用最少连接的原则选出一台可用服务器来进行匹配

1.2.6 LBLCR(Locality-Based Least Connections withReplication)带复制的基于局部性最少连接

此种算法是针对目标ip地址的负载均衡,该算法根据请求的目标地址ip找出该地址对应的服务组,按最少连接的原则从服务组中选出一台服务器,若服务器没有超载,则发送请求到该服务器,若该服务器超载或者不可用,则按照最小连接的原则从这个集群中选出一台服务器,将该服务器添加到服务组中,在将请求发送到该服务器,同时当该服务器组中有一段时间没有被修改,将最忙的服务器从组中剔除,以降低复制的程度

第2章 Nginx的五种调度算法

2.1 rr轮询算法:

依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况

2.2 wrr权重算法:

根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点

2.3 ip_hash算法:

根据用户访问的真实ip生成一个hash,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题

2.4 url_hash:

根据用户访问的urlhash结果,使每个url定向到同一个后端服务器上

2.5 fair:

fair是更加智能的负载均衡算法,此种算法可以根据页面大小的和加载时间长短智能的进行负载均衡,也就是根据后端节点的响应时间来分配请求,响应时间短的则优先分配,Nginx本身不支持fair,如果需要则必须下载nginxupstream_fair模块


以上是关于LVS和Nginx负载均衡调度算法的主要内容,如果未能解决你的问题,请参考以下文章

负载均衡集群介绍LVS介绍及调度算法LVS NAT模式搭建

负载均衡(集群介绍,lvs介绍,LVS调度算法,NAT模式搭建)

负载均衡集群LVS介绍及调度算法LVS NAT模式搭建

负载均衡集群介绍LVS介绍LVS调度算法LVS NAT模式搭建

负载均衡集群介绍LVS介绍LVS的调度算法LVS NAT模式搭建

负载均衡集群介绍,LVS介绍,LVS的调度算法,LVSNAT模式搭建