lvs的12种调度算法 |
您所在的位置:网站首页 › 静态调度和动态调度的优缺点是什么 › lvs的12种调度算法 |
lvs的调度算法多达12种,下面依次进行简单介绍。算法后跟的英文缩写为设置算法时实际的参数选项。 一、静态算法静态算法只根据算法本身进行调度,不考虑服务器当前的负载情况。静态的调度算法有4种。 1、轮询算法 rr 调度器将收到的请求按顺序轮流分配到集群中的RS。均匀地分配请求,不考虑服务器连接数和负载情况。 2、加权轮询算法 wrr 根据RS的处理能力给予不同的权重,性能好的服务器分配更多的请求。 3、源地址哈希算法 sh 根据请求的源IP地址作为哈希键从静态分配的哈希表中找出对应的服务器。同一个IP地址的请求始终发往第一次调度的RS,可实现会话绑定。 4、目标地址哈希算法 dh 根据请求的目标IP地址作为哈希键从静态分配的哈希表中找出对应的服务器。发往同一个目标地址的请求始终转发到第一次调度的RS,可用于实现正向代理缓存场景中的负载均衡,如:web缓存。 二、动态算法主要根据每个RS当前的负载状况和算法进行调度,负载(overhead)较小的RS下次将会被调度。 1、最少连接算法(Least Connection) lc 动态地将网络请求调度到连接数最少的RS上。如果集群各服务器性能相近,这种算法可以较好地均衡负载。适用于长链接应用。其负载计算公式如下: overhead=活动连接数*256+非活动连接数2、加权最少连接算法(Weighted Least Connection) wlc 集群服务器性能差异较大时,使用这种算法比较合适,具有较高权重值的服务器将承受较大比例的活动连接负载。这也是lvs的默认调度算法。其负载计算公式如下: overhead=(活动连接数*256+非活动连接数)/权重值3、最短期望延迟算法(Shortest Expected Delay Scheduling) sed 当使用wlc算法时,如果RS的连接数和权重比例正好一样,下一个请求到来时可能会分配给任意RS,而不是性能最好的RS,sed算法保障了高权重优先。该算法只考虑活动连接,不考虑非活动连接。 overhead=(活动连接数+1)*256/权重值4、最少队列算法(Never Queue Scheduling) nq 如果有RS的连接数为0,就直接分配过去。第一轮会均匀分配,后续使用sed。 5、基于局部的最少连接算法(Locality-Based Least Connections) lblc 根据请求的目标IP找出该目标IP最近使用的服务器,若该服务器可用且没超载,就将请求发给它;若服务器不存在或者超载,且有服务器处于一半的工作负载,则用最少连接原则将请求发给一个可用服务器。是针对目标IP地址的负载均衡算法,可以看作动态的dh算法。可根据负载情况实现正向代理、web缓存等。 6、带复制的基于局部的最少连接算法(Locality-Based Least Connections with Replication) lblcr 该算法维护从一个目标IP地址到一组服务器的映射(lblc维护的是一个目标IP地址到一台服务器的映射)。根据请求的目标IP找出该目标IP对应的服务器组,按最少连接原则从组内选出一台没有超载的服务器,将请求发给它;若该服务器超载,则最少连接原则从该集群中选出一台服务器加入到服务器组中,将请求发给该服务器。如果服务器组在一段时间没有修改,将最忙的服务器从组内剔除,以降低复制程度。这个算法也是针对目标IP地址的负载均衡算法,解决lblc负载不均衡的问题,从负载重的RS复制到负载轻的RS。可根据负载情况实现正向代理、web缓存等。 7、FO算法(Weighted Fail Over) fo 该算法会遍历lvs关联的RS链表,找到未过载(未设置IP_VS_DEST_F_OVERLOAD标识)且权重最高的RS进行调度。 8、OVF算法(Overflow-connection) ovf 基于RS的活动连接数和权重值来实现。它会将新连接调度到权重值最高的RS,直到其活动连接数超过它的权重值,之后调度到下一个权重值最高的RS。该算法会遍历lvs关联的RS链表,找到权重值最高的可用RS。可用RS需要满足以下条件: ①未过载(未设置IP_VS_DEST_F_OVERLOAD标识)。 ②RS当前活动连接数小于其权重值。 ③权重值不为0。 以上就是lvs的12种调度算法。其中FO和OVF算法只有内核版本4.15版本后才有。查看linux内核版本一般使用以下命令: 1、cat /proc/version 2、uname -a |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |