负载均衡集群LVS调度算法实战(二)|学习笔记

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 快速学习负载均衡集群LVS调度算法实战

开发者学堂课程【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辅助理解示意图如下:

image.png

/**

*新问题,当客户端访问服务器时,会存在一个信息存储不均衡的问题,存储的信息无法与调度的对象完全同步,导致调度失败。

*Hash的含义指的是将记录下来的ip地址进行hash运算,进而出一个摘要,注意这里的hash值与ip地址挂钩,密切相关。

*第四种是目标地址Hash,两次调度的结果相同,这里看的是上一次调度的结果,上一次是调度到哪一个机器,那么这一次也就调度哪一个机器上去。

**/

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

DH辅助理解示意图如下:

image.png

/**

*DH会通过目标地址将数据存放在缓存器中去,以此来提高缓存

*(cache)的利用率,从而进一步提高互联网的访问速度,节省

*宽。当后端服务器压力过大时,可以适当的给其添加一些缓存服

*器,这样用户在访问时,便会先来到缓存服务器进行访问,如果

*没有,再进入后端服务器进行访问。

缓存服务器会在后端服务器与

*用户需求之间记录用户所需的数据,以此来提高缓存利用率。

*根目标地址来访问便可以将用户常用的页面,视频等等缓存下来,

*以此来提高缓存的利用率。

**/

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

//动态方法下的调度算法需要考虑到后端的负载情况

1、LC : least conhections适用于长连接应用

Overhead=activeconns*256+inactiveconns

LC辅助理解示意图:

image.png

/**

*LC可以实现资源的最大合理应用话,防止出现资源浪费和机器

*负载过重的情况出现,更好的实现了均衡负载。

该算法可以通过*Overhead=activeconns*256+inactiveconns该公式计算出正*在使用的活动连接。计算结果值越大,被调度的可能性便越小,计*算结果值越小,被调度的可能性便越大。LC算法存在的一个主要*缺陷是无法考虑到后端的性能问题。

**/

2、WLC : Weighted LC,默认调度方法

Overhead=(activeconns*256+inactiveconns)/weight

WLC辅助理解示意图:

image.png

/**

*WLC算法可以用来弥补LC算法无法考虑到后端机器性能的问

*题。

该算法可以通过*Overhead=(activeconns*256+inactiveconns)/weight这个公式*计算出对应的权重。同时,WLC算法也存在一个缺陷:无法解决用*户初次连接LVS服务器时的调度问题。

**/

3、SED : Shortest Expection Delay,初始连接高权重优先

Overhead=(activeconns+1)*256/weight

SED辅助理解示意图:

image.png/**

*SED算法可以用来弥补WLC无法解决用户初次分配时出现的调*度问题的缺陷。

SED算法可以通过*Overhead=(activeconns+1)*256/weight这个公式计算出第一次*调度时应该选择的最优服务器。同时,该算法也存在一个问题:容

*易导致性能优异的服务器过量负载,而性能较差的服务器负载过小。

**

4、NQ: Never Queue,第一轮均匀分配,后续SED

NQ辅助理解示意图:

image.png

/**

*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辅助理解示意图:

image.png

/**

*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]

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
流计算
在Flink中,如果需要进行split和where操作
【2月更文挑战第6天】在Flink中,如果需要进行split和where操作
328 1
|
9月前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《揭秘AI语音助手:从“听”到“说”的智能之旅》
在数字化时代,AI语音助手如Siri、Alexa、小爱同学等成为生活中的得力伙伴。它们通过自动语音识别(ASR)将语音转换为文本,利用自然语言处理(NLP)理解语义并生成回应,再通过文本到语音转换(TTS)输出自然语音。ASR捕捉、预处理和分析语音信号;NLP解析文本、理解意图;TTS合成流畅语音。这三项技术协同工作,使语音助手能听懂、理解并回应用户,为人机交互带来便利与创新。
1672 1
|
Linux
Linux中grep命令详解与实战应用
Linux中grep命令详解与实战应用
2174 0
|
Linux API C语言
lua 如何在嵌入式Linux中与c语言结合
lua 如何在嵌入式Linux中与c语言结合
303 1
|
安全 网络安全 数据安全/隐私保护
如何申请GeoTrust证书?
如何申请GeoTrust证书?
249 3
|
应用服务中间件 nginx 网络协议
|
XML 小程序 前端开发
mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能
其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异。 首先,需要注册微信公众号平台[https://mp.weixin.qq.com](https://mp.weixin.qq.com/),并且开通微信支付功能,随后将你的小程序关联一个微信商户:pay.weixin.qq.com,这一系列申请下来之后,你手中需要有微信小程序appid,微信小程序秘钥,商户号,以及商户秘钥,这四个关键的支付配置变量。
mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能