美文网首页
LVS 之 调度算法介绍

LVS 之 调度算法介绍

作者: ghbsunny | 来源:发表于2017-10-22 12:00 被阅读0次

    1  概述

    LVS中ipvs scheduler总共有10中调度算法:RR,WRR,LC,WLC,LBLC,LBLCR,DH,SH,SED,NQ,

    VS根据其调度时是否考虑各RS当前的负载状态,分成两大类:静态方法和动态方法,其中,算法越复杂,会影响服务器的效率(性能)

    2  静态方法

    静态方法仅根据算法本身进行调度,关心的是起点公平。相对LVS而言的,而不关心RS是否可以处理请求,如RS的负载状态。

    有如下4类算法

    RRroundrobin

    轮询,后端RS均摊所有的请求

    WRRWeighted RR

    加权轮询,根据权值来分配请求的数量

    SHSource Hashing

    源地址hash,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

    但是,这种方式问题比较多,如源地址是nat后的公网地址,如果该地址对应的后端机器很多,这样同一ip的访问可能会对同一服务器造成负担。

    DHDestination Hashing

    目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

    3  动态方法

    动态主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

    动态调度关心的是最终的结果,要考虑到后端服务器RS的负载情况

    有如下6类算法

    LCleast connections

    适用于长连接应用

    Overhead=activeconns*256+inactiveconns

    活动连接表示正在传送数据

    非活动连接表示建立连接了,但是没有传送数据

    WLCWeighted LC

    WLC是默认调度方法

    Overhead=(activeconns*256+inactiveconns)/weight

    这里如果是第一次连接,活动和非活动连接的值都是0.,这样同LC和WL的算法计算结果都是0,需要通过SED来解决这个问题。因为初始+1,就会有数值的对比

    SEDShortest Expection Delay

    初始连接高权重优先,Overhead=(activeconns+1)*256/weight

    NQNever Queue

    第一轮均匀分配,后续SED,解决了第一次分配不均匀的问题。使得所有的服务器都会执行一定的任务

    LBLCLocality-Based LC

    动态的DH算法,使用场景:根据负载状态实现正向代理

    LBLCRLBLC with Replication

    带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

    相关文章

      网友评论

          本文标题:LVS 之 调度算法介绍

          本文链接:https://www.haomeiwen.com/subject/wpyguxtx.html