一种基于负载自适应的云平台应用实例自动伸缩方法技术

技术编号:10210989 阅读:161 留言:0更新日期:2014-07-12 16:26
本发明专利技术涉及云计算领域,具体的说是一种基于负载自适应的云平台应用实例自动伸缩方法。本发明专利技术的方法主要步骤为:通过实例负载监测组件从各个运行中的应用实例采集实时负载数据;通过应用负载分析组件对接收到的实例负载数据进行汇总计算确定该应用的运行负载,并结合该应用的用户访问请求量进行综合决策分析,确定是否对该应用进行实例伸缩控制;然后通过实例控制组件调用云平台API进行该应用的实例增减操作。本发明专利技术的有益效果为,首先解决了原生Cloud Foundry开源云平台使用人工方式伸缩应用实例问题,同时还解决了仅依据应用的用户访问请求量进行应用实例伸缩所带来的可能与实际情况不吻合问题。本发明专利技术尤其适用于Cloud Foundry开源云平台。

【技术实现步骤摘要】

本专利技术涉及云计算领域,具体的说是。
技术介绍
云计算是一种服务的交付和使用模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。云计算基本特征为按需使用资源、资源可以动态扩展、应用弹性计算、通过网络以服务方式提供给用户。弹性计算是云计算的基本特征之一,它是指用户应用根据实际业务或者计算需要,灵活地使用计算资源,真正实现按需使用、按需交付和按需付费。弹性计算主要通过云计算平台运行资源的垂直伸缩和水平伸缩来实现。资源垂直伸缩是在云计算平台中单个运行节点中增减资源,如给运行计算机增减CPU或内存;资源水平伸缩是指在云计算平台中,增加或减少运行节点数量,例如将应用的运行服务器由一台增加为三台。Cloud Foundry是VMware于2011年初推出的业界第一个开源PaaS云计算平台,它支持应用运行所需的多种框架、数据库服务、运行时环境,使开发人员能够在短时间内在云计算环境进行应用程序的部署和扩展,无需管理应用所依赖的基础架构运行环境。CloudFoundry作为一种云计算平台软件,提供了基本的弹性计算功能。它具体通过控制云平台上各应用运行的实例数量来支持不同负载的弹性计算能力。当外界对应用的访问请求增多时,用户可通过调用云平台提供的实例增加命令,复制更多的应用实例,来增强应用的运行能力,满足云平台中应用的弹性计算。反之,当外界对应用的访问请求减少时,为避免资源浪费,则减少应用的运行实例个数,这样可以将节省下的资源用于其他应用的计算需求,从而实现平台计算资源的高效利用。但原生的Cloud Foundry开源云平台对于应用弹性计算的支持有限,仅仅提供用户根据监测到的应用负载情况,手动更改应用实例数进行计算资源的水平伸缩能力处理。该平台提供的应用计算资源伸缩方式不能及时适应负载动态变化,其时效性不强,可能会造成应用一定时间内响应失效的情况;还可能因为用户手动设置数值不合理,造成平台资源浪费或不能满足应用需求;同时该方式对平台管理人员要求高,需要人工时刻关注各个应用负载状态,及时进行应用运行资源调整操作,这会耗费较多的人员精力,也增大管理难度。为了改进Cloud Foundry开源云平台的应用弹性计算局限,一些云服务提供商在原生Cloud Foundry平台基础上实现了一定程度上的应用实例自动伸缩控制。其实现方法是在平台资源调度层中增加了应用实例自动伸缩模块,同时在平台中为各个应用定义一个实例伸缩规则,如根据应用的HTTP访问量评估应用负载状态,然后基于应用负载进行实例数伸缩处理。例如,若监测应用每秒收到的HTTP访问请求数大于100时,则在当前运行应用中增加一个实例;当HTTP访问量大于150时,又增加一个实例,以次类推,应用最多可以有10个实例。若监测应用每秒收到的HTTP访问请求数少于50时,则减少I个实例,应用最少为2个实例。现有改进技术方案是通过上述简单的应用负载判断方式来决定CloudFoundry开源云平台的应用实例自动伸缩控制,从而实现云平台的基本弹性计算。虽然现有的Cloud Foundry云平台应用实例伸缩技术方案提供了基本的应用实例自动伸缩控制策略方法,实现一定的应用弹性计算能力。但它们在技术实现上,只是简单地根据应用的用户访问请求量,判断其访问量负载范围,当负载超过阈值范围之外时,就自动增减一个实例。此种策略方法虽然简单,也实现了一定的平台应用弹性计算,但其对于应用实例伸缩控制是被动的、滞后的。需要强调,应用的用户访问请求量并不一定能完全反映出应用实际负载状况。因此,仅仅将应用的用户访问请求量作为应用实例伸缩依据是不充分的,在特定情况下,该方法并不能有效实现负载均衡和提高资源利用率。此外,当应用的访问量变化频繁时,简单的依据当前访问请求量决定增减应用的实例数,容易造成“应用访问抖动”开销。所谓应用访问抖动是指应用在短时间内频繁增减实例,如云平台刚刚根据应用的访问请求量,减少了一个应用实例,但下一时刻应用的访问请求量又突发增加,导致平台又立刻增加应用实例,带来平台系统较大开销。这种状况我们定义为“先减后增抖动”,还有一种就是“先增后减抖动”。由于在云平台中增减应用实例是一种耗时耗资源的操作,频繁地增减应用实例既会造成云平台系统的额外开销,也会导致应用响应处理能力降低。因此,目前的Cloud Foundry云平台应用实例伸缩技术方案仍具有较大的局限性。
技术实现思路
本专利技术所要解决的问题,就是针对目前Cloud Foundry云平台存在的应用实例伸缩技术局限,提供一种能够负载自适应的云平台应用实例自动伸缩方法,实现云平台的应用弹性计算,并提高应用访问稳定性。本专利技术解决上述技术问题所采用的技术方案是:,其特征在于,包括以下步骤:a.通过实例负载监测代理组件实时采集云平台各应用实例的负载状态,并将当前时刻采集到的实例负载数据值与前一时刻记录的实例负载值进行对比得到该实例负载数据变化量,判断变化量是否超出预设的变化量阀值,若是,则将负载数据发送到应用负载分析组件并进入步骤b,若否,则重复步骤a ;b.应用负载分析组件接收实例负载监测组件发送的负载数据,将应用各实例负载数据汇总计算出该应用的运行负载,判断应用运行负载是否处于预设的负载上、下阀值之间,若是,表明应用负载正常,则不进行处理并回到步骤a,若否,则进一步判断应用运行负载数据是大于负载上阀值或是小于负载下阀值,若是大于负载上阀值,则标记该应用为重载状态,若是小于负载下阀值,则标记该应用为轻载状态;c.判断标记为重载状态/轻载状态的应用的变化趋势,具体为:判断标记为重载状态的应用运行负载是否保持重载,若是,则进入步骤d,若否,则回到步骤a;判断标记为轻载状态的应用负载是否保持轻载,若是,则进入步骤e,若否,则回到步骤a ;d.应用负载分析组件发送实例增加指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载分析组件指令,调用云平台应用实例伸缩API为当前应用增加实例,回到步骤a;e.应用负载分析组件发送实例减少指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载分析组件指令,调用云平台应用实例伸缩API为当前应用减少实例,回到步骤a。具体的,步骤a中通过应用实例负载监测代理组件实时采集云平台每个应用实例的负载状态的具体方法为:在每个应用实例运行节点中设置实例负载监测代理模块定时对该节点上所有负载数据进行采集,所述负载数据至少包括CPU负载、内存负载、磁盘负载和网络负载。具体的,步骤b还包括以下步骤:bl.应用负载分析组件接收到应用的实例负载数据后,对该应用的运行负载进行计算,具体方法为:假设应用的CPU负载为Lcpu、内存负载为Lmem、磁盘负载为Ldisk和网络负载为Lnet,计算公式分别为:CPU负载本文档来自技高网
...

【技术保护点】
一种基于负载自适应的云平台应用实例自动伸缩方法,其特征在于,包括以下步骤:a.通过实例负载监测代理组件实时采集云平台各应用实例的负载状态,并将当前时刻采集到的实例负载数据值与前一时刻记录的实例负载值进行对比得到该实例负载数据变化量,判断变化量是否超出预设的变化量阀值,若是,则将负载数据发送到应用负载分析组件并进入步骤b,若否,则重复步骤a;b.应用负载分析组件接收实例负载监测组件发送的负载数据,将应用各实例负载数据汇总计算出该应用的运行负载,判断应用运行负载是否处于预设的负载上、下阀值之间,若是,表明应用负载正常,则不进行处理并回到步骤a,若否,则进一步判断应用运行负载数据是大于负载上阀值或是小于负载下阀值,若是大于负载上阀值,则标记该应用为重载状态,若是小于负载下阀值,则标记该应用为轻载状态;c.判断标记为重载状态/轻载状态的应用的变化趋势,具体为:判断标记为重载状态的应用运行负载是否保持重载,若是,则进入步骤d,若否,则回到步骤a;判断标记为轻载状态的应用负载是否保持轻载,若是,则进入步骤e,若否,则回到步骤a;d.应用负载分析组件发送实例增加指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载分析组件指令,调用云平台应用实例伸缩API为当前应用增加实例,回到步骤a;e.应用负载分析组件发送实例减少指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载分析组件指令,调用云平台应用实例伸缩API为当前应用减少实例,回到步骤a。...

【技术特征摘要】
1.一种基于负载自适应的云平台应用实例自动伸缩方法,其特征在于,包括以下步骤: a.通过实例负载监测代理组件实时采集云平台各应用实例的负载状态,并将当前时刻采集到的实例负载数据值与前一时刻记录的实例负载值进行对比得到该实例负载数据变化量,判断变化量是否超出预设的变化量阀值,若是,则将负载数据发送到应用负载分析组件并进入步骤b,若否,则重复步骤a ; b.应用负载分析组件接收实例负载监测组件发送的负载数据,将应用各实例负载数据汇总计算出该应用的运行负载,判断应用运行负载是否处于预设的负载上、下阀值之间,若是,表明应用负载正常,则不进行处理并回到步骤a,若否,则进一步判断应用运行负载数据是大于负载上阀值或是小于负载下阀值,若是大于负载上阀值,则标记该应用为重载状态,若是小于负载下阀值,则标记该应用为轻载状态; c.判断标记为重载状态/轻载状态的应用的变化趋势,具体为:判断标记为重载状态的应用运行负载是否保持重载,若是,则进入步骤d,若否,则回到步骤a ;判断标记为轻载状态的应用负载是否保持轻载,若是,则进入步骤e,若否,则回到步骤a ; d.应用负载分析组件发送实例增加指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载分析组件指令,调用云平台应用实例伸缩API为当前应用增加实例,回到步骤a ; e.应用负载分析组件发送实例减少指令到应用实例伸缩控制组件,应用实例伸缩控制组件根据应用负载 分析组件指令,调用云平台应用实例伸缩API为当前应用减少实例,回到步骤a。2.根据权利要求1所述的一种基于负载自适应的云平台应用实例自动伸缩方法,其特征在于,步骤a中通过应用实例负载监测代理组件实时采集云平台每个应用实例的负载状态的具体方法为: 在每个应用实例...

【专利技术属性】
技术研发人员:陆鑫李涛
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1