APP下载

基于业务意图的AI智能负载均衡

2021-10-28吴新松白雪邢晓东匡常山

网络安全技术与应用 2021年9期
关键词:轮询内存调度

◆吴新松 白雪 邢晓东 匡常山

基于业务意图的AI智能负载均衡

◆吴新松1白雪2邢晓东2匡常山1

(1.中国电子技术标准化研究院 北京 100007;2.中国电信股份有限公司云计算分公司 北京 100093)

传统的负载均衡调度算法调度方式简单,难以实现合理的调度,常常会因为请求分配不合理导致后端实服务器负载超负荷。而目前基于后端服务器状态反馈式的负载均衡调度算法也大多只是对相关指标设置门限或采用简单加权等简单数学方式进行策略调度,不够灵活。本文提出基于AI分类推荐算法的负载均衡调度策略,实现基于业务意图的智能调度。

AI;负载均衡调度算法;轮询

随着当今互联网访问规模的增大,单台服务节点已经难以满足用户高并发访问需求。行业里一般采用负载均衡进行流量负载的方式为用户提供服务。而当前业内应用的负载均衡主要是静态负载均衡,它们的调度算法比较简单,例如四层负载均衡LVS中常见的算法有轮询(Round Robin,RR)、加权轮询(Weighted Round Robin,WRR)、最小连接数(Least Connection,LC)、源IP哈希(Source IP Hash,SH)等[1-2],而七层Nginx中的常见算法有RR,WRR,LC,SH,URL_HASH等调度算法[3],与四层类似。在使用静态负载均衡情形下,常常会引发负载均衡后端某台服务器资源耗尽情形,导致任务失效或节点崩溃,引起业务中断。在整个调度过程中,负载均衡不能结合后端实服务器RealServer(RS)差异因素来智能进行调度,导致前述负载均衡过早出现单点资源瓶颈,所以设计一种智能合理的动态反馈式调度算法对负载均衡系统的稳健运行特别重要。

而在动态反馈式负载均衡的研究中,大多学者是根据后端RS服务器的能力,人工为负载均衡设立权值以及为后端资源负载率设计门限进行调度策略计算选取[4-7],算法比较简单,且RS硬件能力量化为权值的方式比较粗糙,不够科学。有些文章中的调度算法会因RS不同负载指标有偏差而得出权重结果相同情况。还有学者文章提出用基于神经网络BP算法思想,但实际文章只是以类似神经网络反馈思想实现的基于阈值设定的反馈机制[8]。且文章算法验证大都是通过仿真软件进行仿真试验,并没有搭建实际系统进行验证。

本文提出一种基于业务意图的AI智能调度算法,能实现请求合理调度,保证负载均衡系统的稳定运行。

1 AI调度算法介绍

本文将采取AI模型方式进行负载均衡调度,先基于业务特征对数据状态进行特定多分类的推荐结果标注,然后选取合适的算法进行模型训练和评测,最终将模型部署在策略调度端进行实时的在线推理决策。

1.1 算法的数据处理

实服务器端可能涉及的状态参数有CPU使用率、内存使用率、磁盘I/O占用率。将这些数据进行归一化,然后进行标注。我们按照N分类标注,比如N=5情形。模型输入的特征有:5台实服务器的当前CPU使用率、内存使用率和磁盘I/O利用率状态参数。模型输入样本的特征向量:

样本对应的标记为0-4中的1个数,表示策略推荐分类结果。图1展示本文部分标记数据,

如图1展示的11个样本,每一列分别代表每一台后端服务器的CPU占用比,内存占用比和磁盘I/O占用比,表格中共显示5台服务器情形状态。最后一列标签y,代表样本标记的服务器调度选择结果。在这里进行样本整体标记时尽量保证服务器冗余资源预留。在不同定制化需求下,可以标注以不同的策略进行基于业务意图的负载均衡调度策略定制。

1.2 算法模型的选择

在模型选择方面,本文考虑的主要因素有模型本身的准召率、时延。本文倾向于选择简单的机器学习模型。

1.3 算法模型的评测

模型的一般常见评判标准有精确率(Precision),召回率(Recall),准确率(Accuracy)和F1-Measure[9-10]。在AI智能负载场景下运用AI模型,主要考虑模型策略上述中的准确率指标。另外,计算时延T也是要重点考虑的指标。准确率决定负载均衡对流量负载的合理性,做到尽量均衡的负载,防止单点过载。计算时延保证在负载均衡落地场景下模型对session的首包识别速度,这个也很好理解,就是后端服务器RS负载状态数据经过模型的单次计算时间。

1.4 算法系统架构和算法

图2 负载均衡AI调度相关模块逻辑

图2表示AI负载均衡基础逻辑模块架构。负载均衡端通过统计后端服务负载状态信息特征,输入AI策略决策模块对到来的数据流进行调度决策,路由到合适的后端设备。在模型训练好之后,需要结合业务情形,依赖相关工程算法将模型集成落地。

本文需要考虑兼容不同节点数量情形下流程的实现。假设当前负载均衡后端有个服务器节点,如果训练好的模型是分类模型,值的大小也是不确定的。本文将考虑这些情形下怎样设计通用算法尽可能快的计算调度选出最佳的节点。如果模型计算时延相比其他基础代码逻辑耗时长很多,我们使用多任务模式进行结果运算,且定义每一次经过模型分类的计算耗时约为,如果使用个CPU核进行并行计算的话,预期计算出最终调度节点的最短计算时间计算如下:

在保证这个时间复杂度前提下,我们尽可能减少模型计算次数。我们定义一个内存堆区队列数组,每一个数据代表对应某一台服务器的状态数据。每一次模型计算都需要队头弹出个元素进行计算。我们采用多线程(其他粒度任务也可以考虑)不断从队头消费的数据的方式来进行计算,具体当每个任务取够个元素,马上输入模型进行调度计算选择最优实服务器,计算结束将计算结果放回队尾。然后继续等待队头元素够个再次计算消费。直到某任务识别队列为空,将取出的数量不到个元素的缓存内容放入队尾,直到最后一个未结束的任务识别队列为空,完成最后计算结果保留为调度结果(如果此时元素数量仍然不够的话,输入状态参数均为1.0或稍微再偏大的特征值样本进行补全)。前述并行算法在对实时性要求很高的负载均衡场景充分利用硬件资源迅速进行结果运算输出。

2 AI负载调度算法的实践

在本文实验中,首先需要进行样本标注和模型训练。接着搭建实际环境对调度算法进行验证,同时和传统负载均衡算法调度的效果进行对比。

2.1 实验系统硬件

实验在VMVARE虚拟环境搭建四台虚拟机,一台充当模拟LB,另外三台充当RS。相应的配置如图3所示。

图3 实验硬件配置

2.2 实验系统软件模块

实验中,LB节点中的状态数据采集模块对后端RS负载状态数据进行不断采集,并在用户态模拟多用户http请求行为,根据状态数据对负载调度策略进行计算。因为实验环境LB的CPU核数有限,实验场景的RS数量较少,所以在1.4中使用前述算法对单进程任务进行处理。

2.3 实验所用模型和数据集

实验选择运算量相对较小,分类效果比较好的支持向量机(SVM)模型,使用sklearn工具进行模型训练和评估。因为后端的RS配置完全一样,所以主要将本文的负载均衡策略和传统的RR轮询策略进行对比研究。本文通过标注的上千级别样本集进行SVM模型训练,经过测试模型达到准确率83%,平均延时为0.25ms。

2.4 实验结果分析

经过试验,模拟不同数量客户端进行访问的时候,在同等条件下关注LB端新建连接数变化,即不同算法情况下的TCP新建连接能力。在新建连接能力统一的情况下分析接口访问的平均延时以及流量调度不匀时可能产生的单点故障情形。首先,模拟在不同客户数对后台每个接口分别访问两次情况下,观察记录整个过程LB端TCP新建连接数变化和接口访问平均时延。当模拟客户数为300、500、800和1000时候,分别如图4的(a),(b),(c),(d)所示,AI和RR轮询负载均衡的TCP新建连接能力起初一致(最开始处曲线斜率一样),后面由于调度原因AI渐渐强于RR,两种算法最终新建连接数没有准确收敛于一个数值是因为存在连接复用情形。然后,增加客户数样本,统计不同客户数不同负载算法下的接口访问延时。如图4所示,在AI算法情形下,接口平均访问延时比RR轮询算法缩短。同时,在实验过程中,传统RR轮询容易使某一台实服务器RS出现负载不均衡,比如内存不匀称。而在内存负载过高的RS操作系统中的OOM killer(Out Of Memory killer)机制为防止内存耗尽会选择占用内存过大的进程杀掉,所以很多时候会导致被访问服务进程崩溃[11],而AI负载均衡算法在相同访问压力下则没有出现这种情况。

图4 不同客户数情形下LB端新建连接变化

图5 AI和RR算法下接口访问时延比较

3 AI负载均衡的未来优化

3.1 模型准确率和时延提升

在接下来的研究中,可以通过更大量的样本和更加合理的样本标注方式,尝试简单集成模型(Bagging和Boosting等方式)[12]和深度学习模型并对参数扫描优化,然后进行训练测试评估,考虑它们的准确率和模型可解释性[13]。

3.2 负载参数采集速度优化

可以考虑引入RDMA(Remote Direct Memory Access)技术[14],通过旁路系统内核,减少RS状态数据采集延时和间隔。零拷贝方式为数据进行低延时传输,同时也会更少地影响RS实服务器资源使用。

4 结束语

本文提出了一种基于业务意图的AI负载均衡智能调度策略,算法能对http请求进行合理的负载,在保证和传统方法相同新建连接能力情况下,进行更优的请求负载调度,有效减少客户接口访问延时。同时可以避免同等访问压力下传统RR算法中基于流调度产生的负载不匀称导致宕机的现象。用户可以通过测试分析模型命中用户业务意图样本的模型准确度和重训练方式,来更好的拟合用户定义的合理调度行为,避免之前反馈式负载均衡方法中一系列简单地加权建模和一些僵硬门限规则的组合,准确实现基于业务意图的负载。

[1]王红斌. Web服务器集群系统的自适应负载均衡调度策略研究[D].长春:吉林大学,2013.

[2]Zhangwensong. A distribution of Linux Virtual Server with some advanced features[EB/OL].(2016-4-19)/[2013-11].https://github.com/alibaba/LVS.

[3]戴伟,马明栋,王得玉.基于Nginx的负载均衡技术研究与优化[J].计算机技术与发展,2019,29(3):77-80.

[4]杨杭,张昕,赵建平.基于动态反馈的负载均衡方法研究[J].长春理工大学学报,2017,40(6):136-142.

[5]刘健,徐磊,张维明.基于动态反馈的负载均衡算法[J].计算机工程与科学,2003,25(5):65-68.

[6]梁彪,黄战,张维明.基于实时性能动态反馈的负载均衡算法[J].计算机工程与科学,2010,19(3):183-186.

[7]李坤.基于动态反馈机制的服务器负载均衡算法研究[J].电子科技,2005,28(9):45-49.

[8]王鹏,黄洪琼.基于神经网络反馈机制的改进型负载均衡算法[J]. 现代计算机,2018,12(1):3-9.

[9]董亚东.面向不平衡分类的逻辑回归算法[D]. 郑州:郑州大学,2015.

[10]李航.统计学习方法[M].北京:清华大学出版社,2012:19-20.

[11]苏炜淞.典型内存计算系统的内存开销评测研究[D] .南京:东南大学,2016.

[12]李晓波.集成分类对比:Bagging NB &Boosting NB [J]. 微电子学与计算机,2010,27(8):136-139.

[13]纪守领,李进锋,杜天宇,李博.机器学习模型可解释性方法、应用与安全研究综述[J]. 计算机研究与发展,2019,56(10):2071-2096.

[14]邱昊械.数据中心RDMA网络资源复用与应用加速研究[D].南京:南京大学,2019.

猜你喜欢

轮询内存调度
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
虚拟机实时迁移调度算法
基于等概率的ASON业务授权设计∗
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
内存搭配DDR4、DDR3L还是DDR3?