APP下载

一种云平台弹性性能检测方法

2019-06-10武文李欣张晓峰

软件导刊 2019年2期
关键词:云平台云计算

武文 李欣 张晓峰

摘 要:目前云计算平台弹性性能越来越受到用户重视。为了提升云平台提供商的服务质量,保证用户能够准确获取所购买云服务的弹性性能,基于目前云计算服务提供商的服务等级协议,从第三方角度提出一种量化分析方式,通过对云平台CPU利用率进行实时检测与计算,得出云平台的实际弹性性能。利用Openstack开源云平台进行仿真实验,验证设计工具的有效性,对用户测试云平台弹性性能有指导意义。

关键词:云平台;云平台弹性;自动伸缩;工作负载;云计算

DOI:10. 11907/rjdk. 182453

中图分类号:TP393文献标识码:A文章编号:1672-7800(2019)002-0165-04

Abstract: Currently, the elastic performance of cloud computing platforms is getting more and more attention from users. In order to enhance the service quality of cloud platform providers, we should ensure that users can accurately acquire the elastic performance of the purchased cloud services. In view of the service level agreement (SLA) of current cloud computing service providers, it is proposed from the perspective of third parties. Through the real-time detection and calculation of the CPU utilization of the cloud platform, the actual elastic performance of the cloud platform is obtained. Openstack is a open source cloud platform. It is used for simulation experiments to verify the effectiveness of the design tools and provide guidance for users to test the elastic properties of the cloud platform.

Key Words: cloud platform; cloud platform elasticity; autoscaling; workload; cloud computing

0 引言

云计算是目前较为完善的一种商业服务模式[1,2]。互联网公司通过搭建云计算服务平台,虚拟化计算、网络、存储等资源,依照按需付费方式将其出售给用户使用。按需付费优势在于用户可以用更加合理的价格满足需求,闲时可减少实例以降低开销,忙时可增加实例以保证服务,是目前云计算能够占据市场的根本原因。按需付费模式技术核心由云计算平台的弹性服务保障。弹性是指云计算平台的资源调配能力,能够根据用户需求自动增减资源以提供高效优质服务,是云计算服务平台最为突出的一个特性[3,4]。

目前国内外对于云计算平台弹性性能展开了大量研究。就弹性伸缩方式而言,其分为横向伸缩和纵向伸缩[5]。横向扩展基于分布式系统的发展而发展,因此它集成了许多分布式系统的优越性能,比如故障影响范围小、易于开发扩展、技术成熟等[6,7]。而且,从自动扩展与手动扩展角度,横向扩展方式也更易于机器自动完成扩展,纵向扩展难免会遇到停机维护升级的困扰[8,9]。但是,伴随横向扩展出现的是各虚拟机之间负载均衡问题与不同虚拟机之间任务分配问题,同时也会导致弹性计算性能的测量数值产生异动。Koperek[10]通过设置一种简单的阈值判断CPU负载是否超过80%,以判定是否触发了预先弹性规则。Hasan[11]通过设置阈值上限和下限的方式进行判定。

本文提出一种量化监测云计算服务平台弹性性能方案。通过对用户租用虚拟机实例的各项基础指标如CPU、带宽、内存等进行监控,综合判断该运行实例是否正常工作,之后进行负载压力测试,分别考察在高负载和低負载情况下,云计算服务平台能否根据负载变化弹性分配资源给用户,保证服务平稳运行。

1 弹性云服务现状

目前国内云计算服务提供商有阿里云、腾讯云、华为云、360云、青云等,国外有亚马逊、微软、谷歌等,不同云服务商提供的产品性能有一定差异[12]。从各厂商产品的服务等级协议(Service-Level Agreement,SLA)或者服务介绍中获取到一些基本信息,进行分析比对(见表1)。

在表1中,华为弹性云主机由于产品分类细粒度更高,包括通用型、内存密集型、计算密集型、存储密集型、计算加速型5类,因此不同类型产品自动扩展实例上限数略有不同,在16~60台之间。青云的最大自动扩展数在其产品介绍中并没有提及,可以根据用户需求自由定义。在计费方式上,所有云计算服务提供商都没有对自动伸缩功能计费,而是将其计算在扩展或收缩的资源实例上。青云因为其服务更加精准实时,计费上采用了逐级非线性递增方式,相较于其它云计算服务提供商使用相同资源实例,需要付出额外金钱。360云主机在其服务中使用了均衡负载技术,但是并不提供自动伸缩服务,需要手动操作。同时,其它云计算服务商均提供手动扩展或收缩资源实例服务,而且手动操作扩展的资源实例无法通过自动伸缩功能释放资源,其实例拥有更高优先级。

在目前大多数云计算服务提供商的SLA中,弹性多表述为资源调配能力或自动伸缩性能[13]。从表1各项对比可以看出,不同云计算服务商提供的弹性服务性能不尽相同。因此需要对SLA中有关云弹性性能指标进行标准化定义以及检测,便于对比不同云计算平台提供的弹性性能优劣[14]。

2 弹性定义及指标量化

2.1 弹性定义

目前对于弹性定义有以下几个方面观点:NIST[15]提出云计算提供的快速弹性通过缩减或扩展资源实现。该定义强调弹性能力的实时与动态性,但是仅反映了理想状态下的弹性。IBM[16]认为云计算系统资源的扩展或者缩减过程不需要人工操作,即自动实现,并认为弹性和扩展性是等同的。该定义着重关注弹性的自动化实现,但是將扩展性与弹性等同看待,没有关注云平台下资源的实时动态变化,而且全自动化实现就目前应用来看仍然不现实。ODCA将弹性定义为是一种解决云计算资源调度中能够改变配置和进行扩展的方案,基于负载的增减改变云计算系统资源能力为弹性,关注了配置问题,并将其作为弹性能力的一部分,但其没有反映云平台弹性的实时性、动态性,不能体现其快速伸缩的特点[17]。Reuven[18]将弹性视为在本地与远程资源组成的资源池中进行资源管理、测量、预测和调整适应并实时处理申请的一种可被计量能力。该定义认为弹性可以作为一种能够被量化的能力反映,但未阐述清楚弹性如何被计量的问题。

本文对云平台弹性性能的定义为:云服务提供商能够在规定时间内根据用户需求,动态分配资源,在性价比最优的同时,保证用户服务正常运行。

2.2 弹性性能测量

云平台弹性性能测量一般通过对运行实例的CPU、I/O、带宽、内存等资源状态进行分析,从而判断云平台的弹性性能是否满足要求。本文通过对运行实例CPU指标研究进行弹性检测。

从上述对各厂商弹性性能研究可以得知,一般云平台弹性触发时间都在5min以内。因此以5min为阈值,弹性反应时间超出阈值,则表明弹性不达标;在5min内完成弹性伸缩,则表明弹性达标。同时,对弹性性能等级进行划分,超出时间越多,表明弹性性能越差;若发生系统宕机情况,则直接记为零分。

本文中,云平台弹性性能记为Y,被测试运行实例CPU负载持续高于80%的时间为X,则云平台弹性性能为:

3 弹性测试实验

3.1 弹性检测原理

本文通过对云平台上运行实例的CPU状态进行分钟级实时监测,同时进行数据分析,判断其能否在不同负载情况下实时触发云平台弹性性能,保证服务正常运行。

首先运行Linux系统下性能监控工具sar,获取该实例的CPU使用状态,时间间隔设置为每分钟检测一次,并将检测数据保存在以该时间命名的日志文件中。然后设置一段检测时间,本文选择1 000s,大于一般弹性触发所需时间5min,保证了合理触发时间。最后通过awk语句对采集到的日志文件进行数据处理,判断云平台弹性性能是否及时触发。

如果运行实例的CPU负载在80%以上,且持续时间超过5min,那么判定云平台并没有按照要求触发弹性性能,不能保证服务正常运行。如果运行实例的CPU负载在达到80%之后,5min内逐渐回落到80%以下,那么说明云平台及时触发了弹性性能,保证了服务正常运行。如果运行实例的CPU负载一直低于80%,说明负载压力给予不够,应该提升负载压力。

3.2 负载设计

云计算中常见负载类型有起伏可控的平稳型、可以预知的渐变型、不可预知的激变型3种[19]。其分别对应云平台运行时弹性服务的3种状态:非触发弹性状态、手动调整伸缩组状态以及自动伸缩弹性状态。

起伏可控的平稳型一般出现在客户服务淡季,资源需求量较低,在一定时间内云平台上的负载变化很小。如12306铁路部门在运行服务淡季,网易、腾讯等游戏服务商在工作日时间。

可以预知的渐变型是指云计算服务提供商能够通过分析判断或者前期经验总结,提前对接下来一段时间内可能发生的负载变化进行预判,用户通过手动添加伸缩组的方式保证服务正常运行。如游戏提供商在工作日19-22点以及周末大型游戏活动期间,高校选课系统在学期初学生选课期间。

不可预知的激变型通常出现在用户业务量暴增期间,用户并不清楚自己将在接下来一段时间内可能接受到多大负载量。如新开发某款APP突然变得火爆,运营商如果没有接入云架构做好准备,就很可能由于突增的访问导致业务崩溃;淘宝在“双十一”活动期间、12306在春运或者旅游黄金周之前,虽然都会有一定分析预判,但是仍然无法获知具体业务量大小。

3.3 核心代码实现

核心代码实现如下:

4 实验仿真与分析

4.1 实验环境

实验环境为利用Openstack开源资源搭建的一个测试云平台,实例上运行的操作系统为64位Ubuntu14.04。

表2中,os01上部署的主要是各部件控制器,包括计算节点nova、网络节点neutron、块存储节点cinder、对象存储节点swift;os02、os03为计算节点;os04、os05、os06为存储节点ceph;os07为身份认证管理系统Keystone;os08为服务页面Web;os09、os10为测试实例。

4.2 实验过程与数据分析

通过3种实验,在前文提出的3种不同负载情况下对云平台弹性性能进行测试。

实验一:开启os10,利用loadrunner对os09运行实例的CPU进行加压,使其CPU利用率介于30%~80%之间,持续1 000s。

实验二:开启os10,利用loadrunner对os09运行实例的CPU进行线性加压,使其CPU利用率逐步达到80%,持续1 000s。

实验三:将os10关闭并脱离云计算平台,利用loadrunner对os09运行实例的CPU进行加压,模拟暴增压力,极短时间内使其CPU利用率达到80%以上,持续1 000s。

如图1所示,为方便集中展示,将处理结果统一保存在文件result.txt中,并将其反馈到控制主机Os01,可以根据实验次序分别查看。在实验一中,由于loadrunner产生的负载压力不足,没有达到云平台触发弹性要求,因此并没有触发弹性规则。在实验二中,由于Os09实例的CPU负载超过了80%,在规定时间5min内触发了弹性规则,通过均衡负载降低了CPU利用率,因此满足弹性要求,弹性指数为100%。在实验三中,由于提前关闭了备用弹性实例os10,因此在os09实例的CPU利用率达到80%后无法触发弹性规则,在1 000s内其利用率一直高达80%以上,所以根据公式计算得知弹性指数为31.3%。

综上所述,该检测工具能够正确检测云平台弹性性能。

5 结语

本文提出一种基于第三方的云平台弹性性能检测工具,算法通过对连续时间内用户实例CPU的负载情况进行监控分析,判断该云平台弹性性能是否有效,为云计算弹性性能检测提供了技术保障[20]。但是该工具还存在一定缺陷:仅部署在一个运行实例上,因此无法获取其它实例的运行情况,不能完整得出整个云平台的弹性性能。同时,单一CPU检测仅能从一个侧面反映实例的运行情况。因此,下一步研究重点为多运行实例和多指标检测分析与算法优化。

参考文献:

[1] ARMBRUST M,FOX O,GRIFFITH R,et al. Above the clouds:a berkeley view of cloud computing[J]. Eecs Department University of California Berkeley,2009,53(4):50-58.

[2] LIMRUNGSI N,ZHAO J,XIANG Y,et al. Providing reliability as an elastic service in cloud computing[C]. IEEE International Conference on Communications,2012,11(18):2912-2917.

[3] CALHEIROS R N,TOOSI A N,VECCHIOLA C,et al. Acoordinator for scaling elastic applications across multiple clouds[J]. Future Generation Computer Systems,2012,28(8):1350-1362.

[4] MOLDOVAN D,COPLI G,TRUONG H L,et al. Mela:monitoring and analyzing elasticity of cloud services[C]. Cloud Computing Technology and Science,2013,1:80-87.

[5] SHARMA U, SHENOY P, SAHU S, et al. Kingfisher: a system for elastic cost-aware provisioning in the cloud[J]. Infocom,IEEE,2011,28(6):206-210.

[6] KHATUS S, GHOSH A, MUKHERJEE N. Optimizing the utilization of virtual resources in Cloud environment[J]. IEEE International Conference on Virtual Environments Human-computer Interfaces & Measurement Systems,2010:82-87.

[7] GHANBARI H, SIMMONS B, LITOIU M, et al. Optimal autoscaling in a IaaS cloud[C]. International Conference on Autonomic Computing ACM,2012:173-178.

[8] GALANTE, GUILHERME, BONA L C E D. A survey on cloud computing elasticity[C]. IEEE Fifth International Conference on Utility and Cloud Computing,2013:236-270.

[9] COUTINHO E F, SOUSA F R D C, REGO P A L, et al. Elasticity in cloud computing: a survey[J].  Annals of Telecommunications,2015,70(7):289-309.

[10] KOPEREK P,FUNIKA W. Dynamic business metrics-driven resource provisioning in cloud envuionments[C]. International Conference on Parallel Processing and Applied Mathematics,2016:171-180.

[11] HASAN M Z, MAGANA E, CLEMM A, et al. Integrated and autonomic cloud resource scaling[J]. Network Operations & Management Symposium,2012,104(5):1327-1334.

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

[13] 徐劲松. SLA约束下的云资源调度关键技术研究[D]. 南京:南京邮电大学,2011.

[14] 李乔,郑啸.  云计算研究生现状综述[J]. 计算机科学,2011,38(4):32-37.

[15] MELL P,GRANCE T.The NIST definition of cloud computing[J]. Communications of the ACM,2011,53(6):50.

[16] SCHOUTIOU E. Rapid elasticity and the cloud,September 2012[EB/OL]. http://thoughtsoncloud.com/index.php/2012/09/rapid-elasticity-and-the-cloud.

[17] 边爽. 云计算系统资源弹性调度的评测方法研究[D]. 哈尔滨:哈尔滨工业大学,2015.

[18] COHEN R. Defining elastic computing,September 2009[EB/OL]. http://www.elasticvapor.com/2009/09/defining-elastic-com-putting.html,2013.

[19] 陈龙,张国庆,陈宁江,等. 可区分服务的反馈式Web应用负载均衡策略[J]. 广西大学学报:自然科学版,2012,37(6):1170-1176.

[20] 楊祥宏. 基于IaaS云平台的性能评测与建模方法研究[D]. 杭州:杭州电子科技大学,2016.

(责任编辑:何 丽)

猜你喜欢

云平台云计算
企业云平台建设研究
实验云:理论教学与实验教学深度融合的助推器