Lvs 调度算法
lvs scheduler:仅根据IP和端口进行调度
静态方法:仅根据算法本身进行调度,不考虑当前服务器实际负载情况;保证起点公平
RR:round robin, 轮调,轮询,轮叫:
调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
WRR:weighted rr, 加权轮询;
调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服 务器的负载情况,并动态地调整其权值。
SH:source ip hash, 源地址哈希;将来自于同一个IP的请求始终调度至同一个RS。
(因为IP-VS在本地会维护一个哈希表,这张表把每一个请求的源地址K被调度到哪一个real server V,都会记录下来。表中的每个K-V有可能还会有一个计时器,SH 实现session保持的机制,会损害负载均衡的效果,因为它会将来自同一个地址的请求将始终被调度至同一个real server)
源地址散列"调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器, 否则返回空。
DH:desination ip hash, 目标地址哈希;对同一个目标的请求始终发往同一个RS
根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
正向web代理,负载均衡内网用户对互联网的请求;
Client --> Director --> Web Cache Server(正向代理)
动态方法:根据算法及各RS当前的负载状态进行评估;保证结果公平
挑选后端real server是有挑选方式是有计算机制的,首先要把各real server的当前负载情况记录下来,
计算当前主机的负载方式: Overhead=
RS权重为0时,表示RS不可用
把所有权重加起来,权重之和是整体权重基数,每个服务器的权重比上这个权重之和,得到的比例大概就是调度这个服务器与整个集群所接受的所有所有请求的比例。
LC:最少链接(Least Connections)
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡 负载。
Overhead=Active*256+Inactive 活动连接数*256+非活动链接数
Active:每一个服务器当前主机活动链接的数量;
Inactive:非活动连接数量
256:相比较于非活动(Inactive)链接的数量,活动链接将会占据更多的资源,所以权重比较大
RS1: 10, 100
RS2: 20, 10
WLC: weighted LC 加权最少连接(默认采用的就是这种)(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
Overhead=(Active*256+Inactive)/weight
RS1: 10, 100, 1
RS2: 20, 10, 3
缺陷是:当前10个主机,都没有响应报文,假如能力最小的排最前面,来了一个请求,那么只能第一个主机响应,所以响应的最慢,而后面响应快的主机却在空闲。
SED:Shortest Expection Delay 最短延迟调度/最短期望延迟
在WLC基础上改进,Overhead=(ACTIVE+1)*256/weight,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会导致空闲服务器一直处于无连接状态。
Overhead=(Active+1)*256/weight
刚开始每台主机的活动链接数都为0,利用SED调度算法后,这里先不乘以256,因为不考虑非活动链接,就没有必要考虑非活动连接数
第一台主机的Overhead=(0+1)/1=1
第二台主机的Overhead=(0+1)/2=1/2
第三台主机的Overhead=(0+1)/3=1/3
第四台主机的Overhead=(0+1)/4=1/4
第五台主机的Overhead=(0+1)/5=1/5
按照上述计算后,第五台链接数最少,权重最大,所以直接挑选第五台响应请求,这就最大限度利用了资源
缺点:总共两台服务器,第一台权重为1,第二台权重为4,那么前三个请求会全部分给第二台
RS1: 0, 1
RS2: 0, 9
NQ: Nerver Queue永不排队
SED算法的改进;(首先挑选一个主机分配一个请求,然后挑选下一个主机分配请求,直到把所有主机轮询一遍之后,再根据SED算法进行分配)
无需队列。如果有台realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机很空闲,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力。
LBLC:Locality-Based LC 基于局部/本地的最少链接(locality-Based Least Connections)
即为动态的DH算法;用到场景:只有在实现正向代理,代理本地大量客户端访问互联网时,用到缓存时才有用
正向代理情形下的cache server调度
Client --> Director --> Web Cache Server(正向代理)
基于局部性/本地的"最少链接调度算法"是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
LBLCR:LBLC with Replication,带复制功能的LBLC;带复制的基于局部性最少连接(Locality-Based Least-Connections with Replication)
带复制的基于局部性"最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按"最小连接"原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
Lvs 调度算法的更多相关文章
- Linux Cluster 基础之LVS调度算法与集群类型
Linux Cluster 基础之LVS调度算法与集群类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LB Cluster 1>.什么是LB LB 集群是 load ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...
- Linux centosVMware 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
一.负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做 ...
- 负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
1.负载均衡集群相关 2.LVS的三种模式:NAT.DR .IP tunnel 3. LVS的调度算法(共有8种) 4.LVS NAT模式搭建准备条件: 在分发服务器上安装:yum install ...
- LVS调度算法总结
LVS 调试算法分为两种:静态方法和动态方法. 静态方法 RR:轮询 WRR:加权轮询 SH:源地址哈希,将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定 DH:目标地址哈希,第 ...
- 负载均衡集群介绍 LVS介绍 LVS调度算法 LVS NAT模式搭建
LVS BAT模式搭建 更改主机名: hostnamectl set-hostname centos7-three bash 准备工作 • 三台机器 • 分发器,也叫调度器(简写为dir) • 内网: ...
- LVS调度算法
LVS-四层调度 1.轮询算法:Round Robin - RR 后端RS性能一致,请求开销差别小 2.加权轮询:Weighted Round Robin - WRR 后端RS性能有差异,请求开销差异 ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
随机推荐
- What does __GNUC__ mean?
It indicates that I'm a GNU compiler and you can use GNU extensions. https://stackoverflow.com/quest ...
- QtConcurrent::run() 只能运行参数个数不超过5的函数
有时不得不看源码 qtconcurrentrun.h template <typename T, typename Param1, typename Arg1, typename Param2, ...
- Qt 的日期 时间
QDateTime 的构造函数,有参数是QDate的.这样就可以把日期转化成 QDateTime. QDateTime.toTime_t() 可以转化成 Unix 时间.
- Openstack object list 一次最多有一万个 object
When you request a list of containers or objects, Object Storage returns a maximum of 10,000 names f ...
- java中FutureTask的使用
文章目录 FutureTask简介 Callable和Runnable的转换 以Runnable运行 java中FutureTask的使用 FutureTask简介 FutureTask是java 5 ...
- centos 编码问题 编码转换 cd到对应目录 执行 中文解压
2019独角兽企业重金招聘Python工程师标准>>> **unzip -O CP936 xxx.zip (用GBK, GB18030也可以)** find -type f -nam ...
- P3842 [TJOI2007]线段
最近多刷些dp,觉得这个算不上蓝题 在一个\(n\times n\)的平面上,在每一行中有一条线段,第\(i\)行的线段的左端点是\((i, L_i)\),右端点是\((i, R_i)\),其中\ ...
- RF(自定义关键字)
1.在 D:\work_software\python\Lib\site-packages 文件夹下, 新建 python package 包 ,例如我的是 TestLibrary 建好后的完整路径: ...
- Springboot-WebFlux实现http重定向到https
1 简介 Spring WebFlux是一个新兴的技术,Spring团队把宝都压在响应式Reactive上了,于是推出了全新的Web实现.本文不讨论响应式编程,而是通过实例讲解Springboot W ...
- 04 全局局部配置 wxml数据绑定 事件 冒泡
一. 配置介绍 一个小程序应用程序会包括最基本的两种配置文件.一种是全局的 app.json 和 页面自己的 page.json(index.json /test.json等) 注意:配置文件中不能出 ...