开发者学堂课程【LVS负载均衡实战:负载均衡集群LVS调度算法实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/553/detail/7633
负载均衡集群LVS调度算法实战(二)
三、调度算法
ipvs scheduler
1.ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态两种∶静态方法和动态方法
2.静态方法∶仅根据算法本身进行调度
//上午静态调度指的就是在进行定义完之后仅仅只根据自身固定的算法来进行调度
//而不考虑各RS当前的负载状态的方法就叫做静态方法。
//与之相反的是动态算法会考虑RS当前的负载状态。如果RS目前//的压力较大,调用的资源也会相应的减少,反之,调用的资源就会//变多。
1、RR : roundrobin,轮询
//轮询指的就是几台服务器同时对外进行服务的一种调度方式
//简言之,就是轮流提供服务。
2、WRR : Weighted RR,加权轮询
//加权调度需要考虑到后端服务器的性能,加权调度可以做到安照一定的比例给服务器分配任务,尽可能的做到物尽其用,整体最优化。
3、SH : Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
SH辅助理解示意图如下:
/**
*新问题,当客户端访问服务器时,会存在一个信息存储不均衡的问题,存储的信息无法与调度的对象完全同步,导致调度失败。
*Hash的含义指的是将记录下来的ip地址进行hash运算,进而出一个摘要,注意这里的hash值与ip地址挂钩,密切相关。
*第四种是目标地址Hash,两次调度的结果相同,这里看的是上一次调度的结果,上一次是调度到哪一个机器,那么这一次也就调度哪一个机器上去。
**/
4、DH : Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如︰宽带运营商
DH辅助理解示意图如下:
/**
*DH会通过目标地址将数据存放在缓存器中去,以此来提高缓存
*(cache)的利用率,从而进一步提高互联网的访问速度,节省
*宽。当后端服务器压力过大时,可以适当的给其添加一些缓存服
*器,这样用户在访问时,便会先来到缓存服务器进行访问,如果
*没有,再进入后端服务器进行访问。
缓存服务器会在后端服务器与
*用户需求之间记录用户所需的数据,以此来提高缓存利用率。
*根目标地址来访问便可以将用户常用的页面,视频等等缓存下来,
*以此来提高缓存的利用率。
**/
动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
//动态方法下的调度算法需要考虑到后端的负载情况
1、LC : least conhections适用于长连接应用
Overhead=activeconns*256+inactiveconns
LC辅助理解示意图:
/**
*LC可以实现资源的最大合理应用话,防止出现资源浪费和机器
*负载过重的情况出现,更好的实现了均衡负载。
该算法可以通过*Overhead=activeconns*256+inactiveconns该公式计算出正*在使用的活动连接。计算结果值越大,被调度的可能性便越小,计*算结果值越小,被调度的可能性便越大。LC算法存在的一个主要*缺陷是无法考虑到后端的性能问题。
**/
2、WLC : Weighted LC,默认调度方法
Overhead=(activeconns*256+inactiveconns)/weight
WLC辅助理解示意图:
/**
*WLC算法可以用来弥补LC算法无法考虑到后端机器性能的问
*题。
该算法可以通过*Overhead=(activeconns*256+inactiveconns)/weight这个公式*计算出对应的权重。同时,WLC算法也存在一个缺陷:无法解决用*户初次连接LVS服务器时的调度问题。
**/
3、SED : Shortest Expection Delay,初始连接高权重优先
Overhead=(activeconns+1)*256/weight
SED辅助理解示意图:
/**
*SED算法可以用来弥补WLC无法解决用户初次分配时出现的调*度问题的缺陷。
SED算法可以通过*Overhead=(activeconns+1)*256/weight这个公式计算出第一次*调度时应该选择的最优服务器。同时,该算法也存在一个问题:容
*易导致性能优异的服务器过量负载,而性能较差的服务器负载过小。
**
4、NQ: Never Queue,第一轮均匀分配,后续SED
NQ辅助理解示意图:
/**
*NO算法解决了SED算法存在的缺陷问题。该算法会在第一次
*分配时给每一天后端服务器都分配一些任务,在第二次任务分配*时再使用Overhead=(activeconns+1)*256/weight公式进行性能*调优,调度分配,性能优者多分配一些,性能一般的就少分配一些。
**/
ipvs
1.ipvsadm/ipvs :
2.ipvs :
grep -i -C 10 "ipvs" /boot/config-VERSION-RELEASE.x86_64支持的协议:TCP ,r UDP,AH,ESP,AH_ESP,SCTP
ipvs辅助理解示意图:
/**
*ping测试不出调度效果,因为无法到达后端的real server。
**/
3.ipvs集群︰
管理集群服务
管理服务上的RS
ipvsadm包构成
4.ipvsadm :
5.程序包: ipvsadm
Unit File: ipvsadm.service
主程序∶/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm命令
1.ipvsadm命令∶
2.核心功能︰
集群服务管理:增、删、改
集群服务的RS管理∶增、删、改查看
ipvsadnil -A|E-tluf service-address [-s scheduler] [-p [timeout] [-M netmask] [--pepersistence_engine] [-b sched-flags]
ipvsadm -D -tlulf service-address 删除
ipvsadm -C清空
ipvsadm -R重载
ipvsadm -s [-n]保存
ipvsadm -ale -tlulf service-address -r server-address [options]
ipvsadm -d -tlu|f service-address -r server-address
ipvsadm -Lll [options]
ipvsadm -z [-tlulf service-address]