APP下载

基于云平台的弹性Web集群扩缩容机制的研究

2017-12-07王晓钰吴伟明谷勇浩

软件 2017年11期
关键词:集群弹性预测

王晓钰,吴伟明,谷勇浩

(北京邮电大学 计算机学院,北京 100876)

基于云平台的弹性Web集群扩缩容机制的研究

王晓钰,吴伟明,谷勇浩

(北京邮电大学 计算机学院,北京 100876)

弹性Web集群即随着工作负载的变化,集群规模可以弹性变化的Web集群。本文研究弹性Web集群的扩缩容机制,首先分析现有扩缩策略的常用算法的优缺点,然后当前策略的不足,提出新的扩缩策略,使用更丰富的指标进行负载预测,提高预测的准确性;使对负载评估的结果带有预测性,相对于简单的非预测性算法可以更早地做出扩容决策,最终支撑Web应用系统对外提供高可用和高性能的服务。

云平台,Web集群,弹性伸缩,GBDT

0 引言

随着互联网的日益普及和用户增多,Web应用系统访问量的爆炸式增长的和访问的不确定性对Web服务的稳定性、伸缩性以及可靠性带来了严峻的挑战。固定集群部署模式是根据访问量的峰值预估服务器数量然后搭建集群,集群规模固定,具有部署困难、资源利用率低和成本高昂等缺陷。然而在实际环境中,服务器会经常出现不可预知的负载需求,此时需要快速增加集群中服务的数量来应对额外负载,同时在流量下降时,需要停止空闲服务以降低成本。因此构建弹性集群,实现集群服务器数量的自动伸缩显得尤为重要。本文研究弹性伸缩理论在搭建弹性集群中的应用,重点分析扩缩容策略现有算法,并根据现有策略的优缺点对扩缩容策略提出改进。

1 弹性Web集群

1.1 弹性Web集群概念

随着系统日访问量的增加,Web应用承受的压力会越来越大,随之会带来诸多性能问题,如QPS下降等。为了解决这些问题,Web应用经历了从单机规模到分布式集群到规模可动态变化模式的发展过程。云计算的一个重要特点就是云中的资源规模可以动态伸缩,为用户提供可伸缩的服务。利用这个特点,将Web集群搭建于云基础设施上,可以从基础架构层实现弹性的集群规模。基于云平台的弹性 Web集群是利用云平台的基础设施提供 Web服务,并且集群规模可以随着负载变化动态调整的集群:在集群负载达到一定阈值时,及时进行扩容操作,使之可以应对访问高峰,对外提供高可用的服务;集群负载降到一定阈值时进行缩容操作,减少集群规模,降低硬件成本。

Web集群的规模是与负载变化密切相关的,当当前资源无法满足负载需求时,需要对平台资源进行扩展。但是扩展资源会耗费一定的时间,根据具体情况耗时从几毫秒到几分钟不等,在这段时间内新增加的资源无法马上为用户提供服务,扩容滞后,造成服务满意度下降。因此,在集群的扩缩容策略中,希望能通过对集群负载的预测来解决该问题,使集群能够在性能发生问题之前就能提前发现负载的趋势,预先根据服务负载的变化动态伸缩集群规模,防患于未然;在负载下降后,能够及时发现并调整资源,节约成本。

1.2 弹性Web集群扩缩容模型

弹性Web集群的规模变化从两方面来保证:一是云平台的基础架构支持资源动态伸缩;二规模调整时间和调整算法,主要是利用Web部署系统的扩缩策略模块实现。整个模型包括云基础架构层、应用部署与动态扩容层和客户端三部分,如图1所示。

图1 基于云平台的弹性Web集群模型Fig.1 Cloud-based elastic web cluster model

云基础架构层:将底层的计算、存储和网络资源虚拟化,通过云层向上层提供虚拟化的资源。利用云计算技术,用户只用关心使用何种资源或服务,而不必关心这些资源和服务如何提供,用户所需要的只是一个能够访问互联网的终端,用以提交请求和获得结果,其他的都交由云端实现。云计算与虚拟化技术密切相关,虚拟化技术使得云端的资源整合更为敏捷和有效,也使得用户能够更为细粒度地使用IT资源。

应用部署与动态扩缩容层:自动化部署系统,包括对客户端请求进行处理的负载均衡器;提供具体 Web服各个容器(containers),每个容器上搭载负载监控模块,可以实时监控各容器的负载情况;扩缩策略模块,根据当前集群负载动态判断扩缩容时机,在必要时采取扩缩容操作。

客户端层:接收来自各个客户端的请求,传递给部署在自动化部署系统,进行获取由部署在其中的Web应用提供的服务。

本文主要研究应用部署与动态扩缩容层中,扩缩策略模块的机制及算法改进。

2 扩缩容机制

扩缩容机制是实现弹性集群的重要一环。准确的预测集群负载并能及时调整集群规模使之适应当前情况,是扩缩容策略模块中最重要的两个内容。

2.1 伸缩理论

伸缩理论关注的问题主要是在面临超出现有集群最大承载能力的时候,如何通过调整集群的规模以提高集群的承载能力,从而保证用户体验和系统服务的稳定性,同时在集群负载很低的时候,尽可能的减少闲置服务器带来的资源浪费。根据伸缩对象的不同,可以将伸缩方法分为以下三类,如图 2所示。

图2 伸缩方法的分类Fig.2 Classification of telescopic method

(1)应用的伸缩性

应用的伸缩性表示构建在集群上的应用能够在集群规模变化的同时也保持应用性能变化的能力,例如在不断扩大规模的集群上应用同样能够表现出很好的性能。

(2)技术的伸缩性

技术的伸缩主要体现在系统对新技术的适应性。一般包含三个方面:版本伸缩性、空间伸缩性和异构伸缩性。版本伸缩性是指应用了新技术的版本确实可以提高系统的性能。空间伸缩性是指在多处理系统中可扩充的处理空间。异构伸缩性类似于系统的兼容性,系统对于不同的组件具有很好的包容性,同时系统的输出可以作为标准接口。

(3)资源的伸缩性

资源的伸缩性是指通过增加CPU、内存等硬件资源的投入来提升软件效率以达到更高的系统性能。平常所说的集群伸缩方法大多数是指资源的伸缩性,而资源的伸缩性又可以划分为两个子类。从伸缩的方向划分,分为纵向的伸缩和横向的伸缩。

纵向伸缩是指通过提升系统当前各个节点的处理能力来达到提升系统整体处理 能力的伸缩方法。提高各节点的处理能力具体来说包括服务器升级现有的配置,例如更换主频更高、多核的处理器,更换容量更大的内存条,配置读写速度更快的硬盘、甚至替换为更高端、更强劲的处理器等。

横向伸缩是单纯地通过增加节点的数量来提升系统整体的处理能力。横向伸缩的优点在于当每台服务器成本比较低的情况下,可以很容易地搭建起一个系统性能有保障的集群,相比纵向伸缩集群,这个集群面对增加的用户量或者数据量带来的性能瓶 颈可以处理得更灵活、游刃有余,并且能够很好的减少由于单台服务器出现故障而对于系统整体带来的影响。

考虑云计算的资源可动态获取的特点,我们将动态扩缩容研究定位到资源的横向伸缩。

2.2 常用扩缩容算法

当前阶段常用的策略算法有:

(1)单指标非预测性算法

常用的有CPU利用率为指标,不考虑多条历史记录,只关注当前的负载,直接将历史记录中的最后一条数据(可认为是当前负载)作为扩容指数输出。这种算法简单有效,根据实时的负载大小与阈值进行对比,超过了则扩容,否则保持原样。因此这种算法虽然简单,却是目前工业界普遍采用的。

缺点:容易受噪音干扰;反应滞后,不具备预测性;无法预测到CPU之外的因素(内存等)引起的负载过重情况。

(2)多指标自回归算法

自回归模型一般用于统计和信号处理,是一种经常被用来对各种自然现象进行建模和预测的随机过程。Web应用的负载变化虽然不是自然现象,但其多变且难以准确预测的特征在某种程度上具有一定的随机性,因此可以用自回归模型对负载进行建模和预测。将多个负载指标数据经过处理,求出加权负载平均值作为指标,将之用自回归算法处理得出扩容指数。

缺点:该方法可以实现预测,且考虑了多种指标的影响。但是没有考虑到Web服务访问暗含的规律性,预测性不够高。

3 扩缩容策略的研究与改进

3.1 Web负载分析

为了能够准确地预测Web集群负载,需要对负载进行收集分析,从而了解负载的特性,并针对这些特性来选择最适合的方法来进行平台负载预测。在1997年和1998年,美国卡内基梅隆大学的Peter A. Dinda分别对38台不同的机器进行长期的跟踪抽样,这些机器包括集群服务器、计算服务器和桌面主机等,并通过长期观测获取了大量的负载数据,通过对这些负载数据的统计和分析,Dinda总结了负载的几个特性,主要有以下六个方面:

1. 负载有很大的波动性,这说明有必要通过预测算法来改善负载相关问题。

2. 方差和最大值之类的差异量数1与平均值是正相关的,平均负载高的机器也有较大的方差和最大值,这种关联表明对高负载量的机器进行预测更有价值。

3. 负载相对来说比较复杂,有时多峰分布的负载不能根据一般的分布曲线来预测。

4. 通过负载时间序列分析可以知道,负载与时间有很强的关联,也就是说上一时间段的负载对下一时间段的负载有很大影响。所以对于负载预测来说,线性模型也许是比较适合的预测模型。

5. 负载具有自相似性,其赫斯特指数范围是0.63至 0.97,已经接近赫斯特指数的上限 2。通过这个结果可知负载按照时间以复杂的方式变化着,并存在长期依赖性。

6. 负载的变化在不同时间段显示出不同特性。有时负载在一段较长时间内非常稳定,但是会忽然有一个较大的波动,这种波动可能是因为新的任务被创建或销毁等,针对这种突发波动,线性模型可能需要自适应并进行修改。

3.2 扩缩容策略的改进

从上一节的Web负载分析可以看出负载和时间具有强相关性,因此本文将实际负载视为一个时间序列。时间序列往往具有一定的规律性:比如对于电商性质的Web应用系统而言:

每日晚上的交易量都要大于白天的交易量;

每周周末的交易量要大于周内的交易量;

节假日交易量大于平时交易量等。

从长期来看,交易量变化具有规律性;从短期来看,交易量变化又具有随机性。

当前常用的扩缩容算法没有考虑到集群负载的时间特性,只是将Web集群常见的负载参数作为衡量指标。GBDT算法是一种迭代的决策树算法,可以同时将负载参数和时间参数作为算法模型的输入,进行负载预测。根据以上规律利用时间和负载特征,提出扩缩容策略的改进,将GBDT算法用于负载预估,利用比其他算啊更丰富的衡量指标,可以增加负载指数预估准确度;由于带预测性,可以提前知道负载情况,必要时提前采取扩缩容策略,且预测更加灵敏。

GBDT(Gradient Boosting Decision Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器模型而引起大家关注。

GBDT主要组成概念如下:

(1)DT回归树Regression Decision Tree

决策树分为两大类,回归树和分类树。前者用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;后者用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面。GBDT的核心在于累加所有树的结果作为最终结果。

(2)GB梯度迭代Gradient Boosting

即通过迭代多棵树来共同决策。GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

根据之前所述的 Web负载与时间强相关的特性,考虑使用某一段时间内的历史数据和时间特征预测未来时刻的负载情况。

考虑多种指标的综合因素作为指标特征。选取的指标有:cpu,内存,请求响应时间。采集的每组指标组成指标向量(x1,x2,x3),数据形式为由n条历史数据组成的矩阵。对矩阵的每一行求加权平均值,将每项指标都考虑进去,但越重要的指标相应的权值也越大,对于第k行,按如下公式转化为单一指标:

然后据负载与时间的强相关性,按时间衍生出多维特征,和负载指标一起作为GBDT算法输入,训练可根据历史规律预测负载的模型。

此方法加入了对多指标监控值的综合处理,着重考虑了最可能成为瓶颈的负载, 使得对不同负载特征的应用具有了一定的普适性,避免由于单一指标选择不当导致预测算法失效。同时该算法充分利用了负载与时间的强相关性,并且加入了短期趋势指标,由此模型预测出的结果可以同时兼顾长期规律和短期变化,增加预测结果的准确度;将结果作为扩容指数应用于扩缩策略,可以在负载高峰前提前扩容,缓解滞后性。

4 实验结果分析

设计实验验证GBDT算法在Web负载场景下的有效性。

用有规律性的周期函数加上噪声模拟长期有规律,短期有突发现象的负载情形,分别使用自回归算法和gbdt算法进行预测。评价指标选用的是可决系数,是指回归平方和(ESS-explained sum of squares)在总变差(TSS-total sum of squares)中所占的比重。(其中TSS=ESS+SSR,SSR-sum of squares residual)可决系数可以作为综合度量回归模型对样本观测值拟合优度的度量指标。可决系数越大,说明在总变差中由模型作出了解释的部分占的比重越大,模型拟合优度越好。反之可决系数小,说明模型对样本观测值的拟合程度越差。

yi示第 i个真实值, yˆl表示第 i个预测变量,公式表示预测值和真实值的差距的平方和。

实验方法如下:将数据分为训练集(70%)和测试集(30%),用训练集分别训练两种模型,并用测试集进行测试,评价两种算法的效果。

图3 gbdt, 自回归和原曲线结果合并展示Fig.3 Results’ combined display of gbdt,autoregressive and original curve

图4 gbdt, 自回归和原曲线结果分开展示Fig.4 Results’separately display of gbdt,autoregressive and original curve

从图3和图4中可以看出,在大多数时间段,本章的算法与实际曲线拟合得较紧密,预测效果较好。相比较来说,由于自回归算法是基于对近几个时间段负载直接计算的,造成预测结果总是比实际负载曲线滞后一些的后果,不能及时对负载做出准确判断。

图5 gbdt算法和自回归算法的可决系数比较Fig.5 Decisive factor comparison of gbdt algorithm and the autoregressive algorithm

从图5中可以看出,在此实验场景下,gbdt算法的可决系数为0.95,高于自回归算法的0.89,说明在拟合程度上gbdt算法优于自回归算法。说明在该算法在当前负载的场景里效果更好。

该算法充分利用了负载与时间的强相关性,并且加入了短期趋势指标,由此模型预测出的结果可以同时兼顾长期规律和短期变化,增加预测结果的准确度。

将结果作为扩容指数应用于扩缩策略,可以在负载高峰前提前扩容,缓解滞后性。

[1] Chieu T.C, Mohindra A, Karve A.A et al. Dynamic scaling of web applications in a virtualized cloud computing environment.in: Proceedings of the 2009 IEEE International Conference on e-Business Engineering. Washington, DC, USA: IEEE Computer Society, 2009. 281~286.

[2] Xu J. Analysis, Modeling and Simulation of Workload Patterns in Cloud. IEEE Transactions on Cloud Computing[J].2014, 2(2): 208—221.

[3] 何英东. 基于负载预测的OpenStack虚拟机智能管理[D].杭州. 浙江大学, 2015.

[4] 单志广, 戴琼海, 林闯等. Web 请求分配和选择的综合方案与性能分析. 软件学报, 2001, 12(3): 355~366.

[5] 孙香花. 云计算研宄现状与发展趋势[J]. 计算机测量与控制, 2011, 19(5): 998-1001.

[6] 吴朱华. 云计算核心技术剖析[M]. 人民邮电出版社. 2011.66-67.

[7] 张敏辉, 赵锡奎. 基于云计算技术的研究与探讨[J]. 数字技术与应用, 2010, 12: 038.

[8] 田文洪, 赵勇. 云计算一资源调度管理[M]. 国防工业出版社. 2011. 29-30.

[9] 曾金龙, 肖新华, 刘清. Docker开发实践[M]. 北京. 人民邮电出版社2015. 8. 11.

[10] 刘健. 可伸缩服务器集群的研究与实现[D]. 长沙. 中国人民解放军国防科学技术大学, 2002.

[11] Tesauro G,Jong N K,Das R.A Hybrid Reinforcement Learning Approach to Autonomic Resource Allocation. Proceedings of the 3rd International Conference on Autonomic Computing[C]. Dublin. Ireland: ICAC, 2006. 65. 73.

[12] 余浩维. PaaS云中w如容器及调度的设计与实现[D]. 北京.北京邮电大学, 2014.

[13] Chohan N, Bunch C, Pang S et al. AppScale design and implementation. UCSB Technical Report Number 2009-02,2009.

[14] Fedora Unified Network Controller, https://fedorahosted.org/func/.

Research on Elastic Web Cluster Capacity Expansion Mechanism Based on Cloud Platform

WANG Xiao-yu, WU Wei-ming, GU Yong-hao
(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876, China)

Resilient Web Cluster is a Web cluster with flexible scales as the workload changes. In this paper, we study the expansion and contraction mechanism of flexible Web clusters. Firstly, we analyze the advantages and disadvantages of the commonly used algorithms for existing expansion strategies. Then, we propose a new expansion and contraction strategy based on the current strategy. We use more abundant indexes to forecast the load to improve the accuracy of the result of load evaluation predictive. Compared with a simple non-predictive algorithm,it can make the expansion decision earlier, and ultimately support the Web application system to provide high availability and high performance services.

Cloud platform; Web cluster; Flexible scaling; GBDT

TP393.09

A

10.3969/j.issn.1003-6970.2017.11.004

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

国家自然科学基金项目资助(61173017,61370195);工信部通信软科学项目资助(2014-R-42,2015-R-29);国网科技项目(SGTYHT/15-JS-191)

王晓钰(1989-),女,北京邮电大学硕士研究生,研究方向:网络管理、大数据。

吴伟明,教授,主要研究方向:现代网络管理。

猜你喜欢

集群弹性预测
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
为什么橡胶有弹性?
为什么橡胶有弹性?
注重低频的细节与弹性 KEF KF92
海上小型无人机集群的反制装备需求与应对之策研究
弹性夹箍折弯模的改进
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用