Kubernetes24--弹性伸缩2

结合论文研究一下云平台中弹性伸缩技术,k8s中提供了HPA策略来实现弹性扩容,基于负载预测的弹性伸缩技术。

HPA核心代码

kubernetes/pkg/controller/podautoscaler/horizontal.go

                     

       伸缩理论关注的问题主要是在面临超出现有集群最大承载能力的时候,如何通过调整集群的规模以提高集群的承载能力,从而保证用户体验和系统服务的稳定性,同时在集群负载很低的时候,尽可能的减少闲置服务器带来的资源浪费。资源的伸缩性是指通过增加 CPU、内存等硬件资源的投入来提升软件效率以达到更高的系统性能。平常所说的集群伸缩方法大多数是指资源的伸缩性,而资源的伸缩性又可以划分为两个子类。从伸缩的方向划分,分为纵向的伸缩和横向的伸缩。
       纵向伸缩是指通过提升系统当前各个节点的处理能力来达到提升系统整体处理能力的伸缩方法。提高各节点的处理能力具体来说包括服务器升级现有的配置,例如更换主频更高、多核的处理器,更换容量更大的内存条,配置读写速度更快的硬盘、甚至替换为更高端、更强劲的处理器等。
      横向伸缩是单纯地通过增加节点的数量来提升系统整体的处理能力。横向伸缩的优点在于当每台服务器成本比较低的情况下,可以很容易地搭建起一个系统性能有保障的集群,相比纵向伸缩集群,这个集群面对增加的用户量或者数据量带来的性能瓶颈可以处理得更灵活、游刃有余,并且能够很好的减少由于单台服务器出现故障而对于系统整体带来的影响。

当前阶段常用的策略算法有:
 1.单指标非预测性算法
        常用的有 CPU 利用率为指标,不考虑多条历史记录,只关注当前的负载,直接将历史记录中的最后一条数据(可认为是当前负载)作为扩容指数输出。这种算法简单有效,根据实时的负载大小与阈值进行对比,超过了则扩容,否则保持原样。因此这种算法虽然简单,却是目前工业界普遍采用的。缺点:容易受噪音干扰;反应滞后,不具备预测性;无法预测到 CPU 之外的因素(内存等)引起的负载过重情况。
 2.多指标自回归算法
自回归模型一般用于统计和信号处理,是一种经常被用来对各种自然现象进行建模和预测的随机过程。Web 应用的负载变化虽然不是自然现象,但其多变且难以准确预测的特征在某种程度上具有一定的随机性,因此可以用自回归模型对负载进行建模和预测。将多个负载指标数据经过处理,求出加权负载平均值作为指标,将之用自回归算法处理得出扩容指数。缺点:该方法可以实现预测,且考虑了多种指标的影响。但是没有考虑到 Web 服务访问暗含的规律性,预测性不够高。
Web负载分析
        为了能够准确地预测 Web 集群负载,需要对负载进行收集分析,从而了解负载的特性,并针对这些特性来选择最适合的方法来进行平台负载预测。负载的几个特性,主要有以下六个方面 
1.  负载有很大的波动性,这说明有必要通过预测算法来改善负载相关问题。
2.  方差和最大值之类的差异量数 1 与平均值是正相关的,平均负载高的机器也有较大的方差和最大值,这种关联表明对高负载量的机器进行预测更有价值。
3.  负载相对来说比较复杂,有时多峰分布的负载不能根据一般的分布曲线来预测。
4.  通过负载时间序列分析可以知道,负载与时间有很强的关联,也就是说上一时间段的负载对下一时间段的负载有很大影响。所以对于负载预测来说,线性模型也许是比较适合的预测模型。
5.  负载具有自相似性,其赫斯特指数范围是0.63 至 0.97,已经接近赫斯特指数的上限 2。通过这个结果可知负载按照时间以复杂的方式变化着,并存在长期依赖性。
6.  负载的变化在不同时间段显示出不同特性。有时负载在一段较长时间内非常稳定,但是会忽然有一个较大的波动,这种波动可能是因为新的任务被创建或销毁等,针对这种突发波动,线性模型可能需要自适应并进行修改。

利用GBDT算法,选取cpu,内存,请求响应时间作为指标,结合时间序列来进行负载预测以实现弹性伸缩。

                                                             

自动扩展在以往研究中有多种实现方式,比如基于阈值的策略、增强型学习、队列理论、控制理论以及时间序列分析等。其中,基于阈值的策略在目前的云中实现得较为普遍。时间序列预测分析方法有自回归预测模型、指数预测模型和人工神经网络模型。

自回归预测模型。自回归模型是用过去若干时刻的变量的线性组合来预测以后某时刻随机变量的线性回归模型
指数平滑预测模型。指数平滑法是一种特殊的加权平均法,对本期观察值和本期预测值赋予不同的权重,求得下一期预测值的方法
BP 神经网络预测模型。BP 神经网络的核心是 BP算法:将正确的结果和产生的结果进行比较,得到误差,再逆推对神经网中的权重进行反馈修正,从而来完成学习的过程,这种向后反馈的学习机制被称为BP神经网络的反馈机制

                                             

扫描二维码关注公众号,回复: 4653909 查看本文章

       在应用系统面临高并发、大流量的突发式请求时,监控系统会监测到应用容器的 CPU、内存等资源使用量迅速上升,对应的策略就是通过设置告警阈值来触发弹性伸缩机制。以递增步长的节奏进行扩容;峰值过后,以固定步长的节奏进行缩容。由弹性伸缩模块启动或删除的应用容器,在Etcd中有对应的键值变化。Confd 检测到这种变化后,就会动态生成 Haproxy 的配置文件并重新加载,之后就会将前端的用户请求分流到后端的应用容器上,提供具体的服务,实现应用系统的负载均衡。此动态负载均衡弹性伸缩系统依据应用容器的负载状态,来提供对应的处理能力,按需供给,在保证系统的稳定运行的前提下,将系统开销降低到最低。

基于灰色模型的云资源动态伸缩功能

                                                  

灰色预测通过鉴别系统因素之间发展趋势的差异程度,对原始数据进行生成处理,寻找系统变动的规律,生成有较强规律性 的 数 据 序 列
,然 后 建 立 相 应 的 微 分 方 程 模型,从而预测事物未来发展趋势。灰色预测的数据是通过生成数据模型得到的预测值的逆处理结果。灰色预测以灰色模型为基础。

容器化工作流系统

                                 

基于负载预测的弹性伸缩服务模型,设定性能指标,构建模型预测负载值,提前进行弹性伸缩服务,其中常用的预测模型由自回归模型,指数预测模型,BP神经网络,GBDT预测以及灰度模型等,其根本是回归问题,可以采用机器学习等方法来提前预测。

参考论文

[1]徐建中,王俊,周迅钊,徐雷.一种基于预测的云计算的弹性伸缩策略[J].计算机与数字工程,2018,46(06):1160-1162+1231.

[1]王强,王瑞刚,周德永.基于Docker的动态负载均衡弹性伸缩系统[J].计算机与数字工程,2018,46(06):1140-1144+1159.

[1]李正寅. 服务创新平台中基于Docker的弹性负载均衡功能的设计与实现[D].北京邮电大学,2018.

[1]刘彪,王宝生,邓文平.云环境下支持弹性伸缩的容器化工作流框架[J/OL].计算机工程:1-12[2018-12-14].https://doi.org/10.19678/j.issn.1000-3428.0049811.

[1]王天泽.基于灰色模型的云资源动态伸缩功能研究[J].软件导刊,2018,17(04):131-134.

[1]陈金光. 基于阿里云的Kubernetes容器云平台的设计与实现[D].浙江大学,2018.

[1]王晓钰. 基于云平台可弹性扩缩的Web应用系统的研究与实现[D].北京邮电大学,2018.

[1]刘锦福. 基于Docker的直播云平台弹性调度系统设计及实现[D].北京邮电大学,2018.

[1]梅荣.基于云计算的弹性负载均衡服务研究[J].中国公共安全,2018(01):194-199.

[1]王晓钰,吴伟明,谷勇浩.基于云平台的弹性Web集群扩缩容机制的研究[J].软件,2017,38(11):24-28.

[1]杨若琪.云计算中弹性伸缩负载预测算法的研究和改进[J].电子制作,2017(16):40-41+59

[1]张淼. 面向云服务的弹性调度算法的研究与实现[D].哈尔滨工业大学,2017.

猜你喜欢

转载自blog.csdn.net/u014106644/article/details/84999086