LVS调度算法(上)——静态调度算法

来源:互联网 发布:mac添加农历 编辑:程序博客网 时间:2024/06/05 12:40

        LVS的调度方法有十几中,每种方法的调度标准和适用场景不同。大体有两大类,分别为固定调度方法或称为静态调度方法,另一类是动态调度方法。

常用的具体算法有十种。


       

        1.轮询调度(rr)

        将所有请求平均的分发到每个集群节点上,即轮流调度。

 

        2.加权轮询调度(wrr)

        由于不同的服务器性能不同,因此要考虑让性能高的节点多承担一些请求,这就需要定义每个节点的权重。调度器根据该节点的权重来判断分发给它的请求量。

也就是以多个节点它们之间的权重比例来分发。

 

        3.源地址hash(Sourcehash,sh)

        用于实现会话绑定到某个具体节点。根据请求的来源地址进行请求的分发,用于实现将某个客户端的所有请求都分发到一个固定的服务器上,

与Nginx中的ip_hash算法一样,也是根据客户端IP的hash值来计算请求转发的目标节点。只要客户端IP没有改变,以后的所有请求都转发到一个

固定的服务器节点。

        这种调度算法在一定程度上会破坏公平调度的效果,但是请求量越大则调度也就越公平。主要为了实现将某个客户端的会话一直锁定在某个节点,

这样利用保持session,从而避免需要做多个节点的session复制。因为http是无状态的协议,多个请求之间没有关系,为了能够表示出请求与上一次

请求的关系,就通过将sessionID写入cookie的方式来实现对客户端多次请求的标识,也就是使用Cookie来实现服务端对客户端的追踪。

 

        在这种机制中,如果某个服务器节点挂了,那么用户的session也就丢失了,此时用户再请求时Director发现该客户端对应的节点挂了,就会将该

请求重新转发到其它节点,但是用户发现保存在session中的数据丢失了。为了避免这种情况,可以在多个服务器节点之间使用session复制,或使用

一个公共的session服务器。如果是了session复制或session服务器,就可以不再使用sh这种调度算法了。

 

        4.目标地址hash(Destination Hash)

        用于将同一类型的请求转发到一个固定节点,例如将以 .jgp、.png等结尾的请求转发到同一个节点。这种算法其实不是为了真正意义的负载均衡,

而是为了资源的分类管理。这种调度算法主要应用在使用了缓存节点的系统中。例如A用户访问 .html时被转发到后端的某个缓存服务器,当缓存中没有

时就访问后端的web服务器,并且响应用户后将该资源放入html的缓存服务器;B用户再请求某个html时,依然被转发到html的缓存服务器,这样B用户

就可以直接获取这个资源而不用再请求后端web服务器。

        因此,目标地址hash这种算法将同一类请求都转发到一个固定节点上,一般应用在缓存系统中,为了提高缓存命中率。

 

        以上的四种调度算法被称为静态调度算法,注意是因为它们进行调度时不考虑后端服务器是空闲还是繁忙,也就是不考虑后端服务器当前的负载量,

也就是不考虑当前调度服务器节点上活动连接和非活动连接的数量。如果某个服务器节点上有较多的用户保持在线,而另一个节点只有少量用户在线,

如果还是才有静态调度算法,就会造成服务器的负载不均衡情况的发生,因此就有了动态调度算法。








0 0