LVS详解(三)——LVS算法简介
今天继续给大家介绍Linux运维相关知识,本文主要内容是LVS算法。
LVS的算法决定了LVS架构的分发器将客户端请求分配给哪个真实服务器去处理,不合理的算法将导致一部分真实服务器压力过大而宕机,另一部分真实服务器却长时间处于空闲的状态。在生产环境中,LVS算法的选择要综合我们的设备情况、服务提供等进行决定。
一、轮询
轮询,即rr(Round Robin)的调度方式。如果采用轮询调度,LVS分发器将按照配置顺序,将处理请求依次分给后端真实服务器去进行处理。
二、加权轮询
加权轮询,即wrr(Weighted Round Robin)的调度方式。wrr相对于rr的进步之处在于考虑到了后端真实服务器的性能差异,wrr在进行分配时引入了权重,可以使得性能好的真实服务器处理更多的请求,使得性能一般的服务器处理较少的请求。
三、最小链接调度
最小链接调度,即lc(Least Connection)的调度方式。lc相比去rr和wrr,考虑到了不同请求之间处理的难度问题,因为有些请求处理比较简单,有些请求处理比较困难,因此,lc会把请求分配给当前以建立的链接数较小的设备上。
四、加权最小链接调度
加权最小链接调度,即wlc(Weighted Least Connections)的调度方式。wlc的调度方式相比于lc更多的考虑了不同设备之间性能的差异,因此也引入了权重的概念。在有新的客户端链接需要分配时,分发器会将各个设备的活跃链接数除以权重,将新的链接分配给结果最小的设备上,最终实现各个设备的活跃链接数为配置的权重之比。
五、基于局部的最小链接
基于局部的最小链接,即lblc(Local-Based Least Connections)的调度方式。这种算法与之前相比考虑了系统的缓存对系统响应性能的提升。在存在缓存的系统中,服务器将把部分资源从磁盘放入内存中,将相同的请求发送至相同的设备上可以提升缓存命中率,从而加快处理速度。因此,lblc的算法会首先考虑将相同目的IP地址的请求发送到相同的后端真实服务器上去。但是,如果该真实服务器超载,那么分发器就会运行最小连接(lc)算法,重新指定服务器去处理。
六、带复制的基于局部的最小链接
带复制的基于局部的最小链接,即lblcr(Local-Based Least Connections with replication)的调度方式。这种算法是在lblc算法的基础上,采用目的IP地址和服务器组的映射代替了lblc算法的目的IP地址和服务器的映射。采用该算法的分发器会先按照lblc算法处理客户端请求,当发现目标服务器超载时,会从服务器集群中选出新的服务器进行处理,之后会把新的服务器和原有的服务器放入到一个服务器组中,新的请求会分配给这个服务器组中的服务器,这样也考虑了缓存命中率的问题。当服务器组存在一段时间后,会把最忙的服务器从服务器组中删除。
七、目的地址HASH
目的地址HASH的调度,即dh(Destination Hashing)的调度方式。这种算法会使得相同目的地址的请求分发到相同的服务器上去处理。只有当该服务器超载时,才会选择别的服务器去处理。
八、源地址HASH
原地址HASH调度,即sh(Source Hashing)的调度方式。这种算法与dh的调度算法相类似,只不过是吧相同源IP地址的请求分发到相同的服务器上去处理。
九、最短期望延迟
最短期望延迟调度,即sed(Shortest Expected Delay)的调度方式。这种调度算法希望将新的请求分配给处理最短延迟的服务器上,服务器采用这种方式计算(当前活跃链接数+1)/服务器权重,新链接会被发送给按照上述方式计算得出的数值最小的服务器上去。
十、永不排队调度
永不排队调度,即nq(Never Quene)的调度方式。使用永不排队的调度方式,当目前有真实服务器处于空闲状态时,则将新请求分配给处于空闲状态的服务器,当目前没有真实服务器处于空闲状态时,则会将新请求按照sed的调度方式进行分配。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
相关文章
- 如何看待「算法模板」
- 【KDD2022教程】图算法公平性:方法与趋势
- RAFT算法详解
- C++ 不知算法系列之深入动态规划算法思想
- 【图像配准】SIFT算法原理及二图配准拼接
- PTA 数据结构与算法题目集(中文)7-44 基于词频的文件相似度 (30分)
- 推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
- 归并算法详解
- 非阻塞算法简介详解程序员
- 机器学习工程师必知的十大算法详解架构师
- Java经典问题算法大全详解编程语言
- java实现排序算法:插入排序、选择排序、冒泡排序详解编程语言
- [C语言] 数据结构-算法效率的度量方法-事前分析估算方法详解编程语言
- 算法-把字符串转换成整数详解编程语言
- 算法-顺时针打印矩阵详解编程语言
- 算法-把二叉树打印成多行详解编程语言
- 对称的二叉树算法详解编程语言
- 找出字符串中的最长回文子串 – 马拉车算法详解编程语言
- C++ upper_bound(STL upper_bound)二分查找算法详解
- C++ equel_range(STL equal_range)二分查找算法详解
- C++快速排序(递归)算法详解
- Oracle中大数据按小到大排序算法(oracle从大到小排序)
- OCR开发者福音:PDF提取Excel文件算法开源啦
- 算法详解之分治法具体实现
- c语言实现单链表算法示例分享