一种混合式云资源自动扩容方法

文档序号:10654326阅读:212来源:国知局
一种混合式云资源自动扩容方法
【专利摘要】一种混合式云资源自动扩容方法,属于云计算领域,面向云环境中的应用程序,解决现有扩容方法的扩容时机和扩容量不准,扩容响应慢的问题。本发明包括统计步骤、性能检测步骤、资源扩充步骤和资源收缩步骤。本发明周期性地监控应用程序的请求响应时间和进入应用程序的请求量,以请求响应时间作为应用程序的性能是否发生衰退的直接依据,在每个检测周期中,当超时率超过扩充比例阈值时,则对该应用程序的资源分配量进行扩容;当满足率超过收缩比例阈值时,则对应用程序所占有的资源进行收缩;在进行扩容操作时,优先采用纵向扩容,可以及时响应突发的工作负载,纵向扩容不能满足需求时再进行开销比较大的横向扩容,具有很高的灵活性和可扩展性。
【专利说明】
一种混合式云资源自动扩容方法
技术领域
[0001]本发明属于云计算领域,具体涉及一种混合式云资源自动扩容方法,面向云环境中的应用程序。
【背景技术】
[0002]云计算提供了一种弹性的资源供应模式,用户通过按需请求分配的方式获取到资源的使用权限,从而为自己的应用提供服务。为了满足动态变化的应用需求,用户通常需要一种自动扩容方法来动态地调整资源分配量。
[0003]设应用程序所使用的虚拟机的配置序列Vs=[V1J2^sVn],其中,V」既表示序号为j的虚拟机,也表示其资源量,j = l、2、…、n,n为虚拟机配置序列中虚拟机的台数;设虚拟机初始资源量为Vo(资源为CPU数量、内存大小等,一般情况下只考虑一种资源,如CPU密集型的应用就可以只用CPU数量来描述Vo),初始状态下未进行任何扩容操作,则V1 = V2 = Vn = V0,表明所使用的虚拟机的配置都是一样的;
[0004]现有扩容方法是使用低级的资源使用率作为指标,由用户手动指定资源使用率的上限阈值和下限阈值,并且定义阈值触发时要采取的操作,向应用资源池中添加或移除固定数量的虚拟机。这种方法需要用户对于自身应用在云环境中的表现能够有很深入的了解,确定准确的阈值和资源增量是一件非常困难的事情,在面临波动的、突发的负载量时,这种改变虚拟机数量的现有扩容方法缺乏灵活性,不能快速响应需求;扩容响应慢和扩容量低于需求量时,会导致应用的性能出现严重的衰退和间接的收益损失;当应用的资源供应充足而访问量一直不高则会造成大量计算资源的浪费,从而带来成本的上升。因此,如何准确、及时的扩充和收缩资源,从而匹配应用的动态变化的需求,是云资源自动扩容技术应该解决的问题。
[0005]为便于理解本发明,以下对有关术语加以解释:
[0006]扩容:包括扩充和收缩,扩充是资源量增加的过程,收缩是资源量减少的过程。
[0007]自动扩容:在云环境中,不需要用户手动进行资源量调整的动态的资源供应方式,能够根据条件向应用所使用的资源池中添加或移除资源。
[0008]横向扩容:以改变虚拟机数量的资源供应方式扩容,特点是响应速度慢,具有不可忽略的延迟,但可扩展性高。
[0009]纵向扩容:以改变单个虚拟机资源配置量的资源供应方式扩容,在虚拟机运行时扩容而不是停机扩容,特点是响应速度快,分配粒度细,但可扩展性低。
[0010]请求率:在单位时间内的请求量,单位时间通常是一个统计周期,在本发明的实施例中请求率为每分钟的请求量。
[0011 ]性能违反率:在单位时间内,响应时间超过用户指定的期望响应时间值的请求的比率,单位时间通常是一个统计周期。
[0012]资源压力数据:在一定的资源分配量下,以保证性能违反率低于目标为前提,应用可以承受的最大请求率。

【发明内容】

[0013]本发明提供一种混合式云资源自动扩容方法,解决现有扩容方法的扩容时机和扩容量不准,扩容响应慢的问题。
[0014]本发明所提供的一种混合式云资源自动扩容方法,包括统计步骤、性能检测步骤、资源扩充步骤和资源收缩步骤,其特征在于:
[0015](I)统计步骤,包括下述子步骤:
[0016](1.1)变量重置:周期T开始,置超时数量Un = 0,置请求率Rn = 0,其中,超时数量Un为应用程序请求响应时间超过期望响应时间D的数量;
[0017]其中,期望响应时间D = 0.1秒?I秒;
[0018](1.2)数据累加:当有应用程序请求被接收时,累加应用程序请求的数量并赋予Rn,累计应用程序请求响应时间超过期望响应时间D的数量并赋予Un;
[0019](1.3)数据存档:当周期T届满时,将Un、lU$周期序号存储到持久化存储器中;转子步骤(1.1);
[0020](2)性能检测步骤,包括下述子步骤:
[0021](2.1)计算超时率、满足率:周期T开始,从持久化存储器中提取上个周期的Un、Rn,计算超时率Up = Un/Rn,满足率Lp = 1-Up;其中,超时率Up为请求响应时间超过期望响应时间D的比率,为统计周期T内响应时间超过期望响应时间D的请求数量占该周期内总请求数量的比例;满足率Lp为请求响应时间不超过期望响应时间D的比率,为一个统计周期T内响应时间不超过期望响应时间D的请求数量占该周期内总请求数量的比例;
[0022](2.2)检测扩充条件:判断是否UP>DU,是则达到进行资源扩充的条件,进行子步骤(2.3),否则进行子步骤(2.5);其中,扩充比例阈值Du = 5%?10% ;
[0023](2.3)更新资源压力值Pr:计算资源压力值Pr:Pr= (1-Up) XRn/n,将其存储到持久化存储器中并更新,Pr为单个虚拟机可承受的请求率,η为应用程序所使用的虚拟机的数量;
[0024](2.4)计算扩充量:扩充量VMi=[上个周期Rn+(上个周期1^-上上个周期Rn)_PrXη ] /Pr X Vo,转资源扩充步骤(3);其中,上上个周期Rn从持久化存储器中获取,Vo为虚拟机初始规格;
[0025](2.5)检测收缩条件:判断是gLADi,是则表明资源分配量超过需求量,达到进行资源收缩的条件,进行子步骤(2.6),否则转子步骤(2.7);其中,收缩比例阈值01 = 98%?100% ;
[0026](2.6)计算收缩量:收缩量VMd= [PrXn-上个周期Rn+(上上个周期Rn-上个周期Rn) ] /Pr X Vo,转资源收缩步骤(4 );
[0027](2.7)休眠:休眠T时间,然后转子步骤(2.1);
[0028](3)资源扩充步骤,包括下述子步骤:
[0029](3.1)纵向扩充:对应用程序所使用的虚拟机序列Vs = [ V1,V2,…,Vn],遍历其中的每台虚拟机Vj,并对其进行纵向扩充;遍历完毕,进行子步骤(3.2);
[0030](3.2)检测横向扩充条件:判断是否VMOO,是则进行子步骤(3.3),否则进行子步骤(3.4);
[0031](3.3)横向扩充:直接创建K台新虚拟机,K = VMiZV0,K为非整数则向上取整,将K台新虚拟机添加到虚拟机序列Vs的尾部,进行子步骤(3.4);其中,Vo为虚拟机初始规格;
[0032](3.4)休眠:休眠T时间,然后转步骤(2);
[0033](4)资源收缩步骤,包括下述子步骤:
[0034](4.1)纵向收缩:对应用程序所使用的虚拟机序列Vs = [ V1,V2,…,Vn],遍历其中的每台虚拟机%,并对其进行纵向收缩;遍历完毕,进行子步骤(4.2);
[0035](4.2)检测横向收缩条件:判断是否VMd>0,是则进行子步骤(4.3),否则进行子步骤(4.4);
[0036](4.3)横向收缩:在所述虚拟机序列Vs中,从前至后直接停止并删除Q台虚拟机,Q=VMd/Vo,Q为非整数则向下取整,进行子步骤(4.4);
[0037](4.4)休眠:休眠T时间,然后转步骤(2)。
[0038]所述资源扩充步骤的纵向扩充子步骤(3.1)和纵向收缩子步骤(4.1)中,对虚拟机进行运行时的资源纵向扩充和收缩也称为资源热插拔,无需重启虚拟机,但是需要底层虚拟化和管理工具的支持,特别是对CHJ的热插拔,本发明支持Xen半虚拟化的虚拟机、KVM(QEMU-1.5.0版本以上)配合QEMU-Guest-Agent的虚拟机,使用的虚拟机管理工具是libvirt(版本为1.1.0以上)。在配有负载均衡的情况下,对后端虚拟机进行纵向扩容后会改变虚拟机的容量,导致其处理能力发生变化,如果负载均衡器是基于手动配置权重进行请求分发,则还需要进行负载均衡器的权重修改。
[0039]所述资源扩充步骤中,所述子步骤(3.1),包括下述过程:
[0040]A.置顺序量j = l;
[0041]B.判断是否VM1X),是则进行过程C,否则进行子步骤(3.4):
[0042]C.对虚拟机Vj,计算其扩充量Vj, i = min {Hj,VMi},Hj为虚拟机Vj所在的宿主机剩余资源量;
[0043]D.判断是否U0,是则进行过程E,否则进行过程F;
[0044]E.将虚拟机Vj资源纵向扩充为Vj+Vj, i,再放入原虚拟机序列Vs,替换掉原来的Vj,将VM1-Vj, i的值赋予VMi,进行过程F;
[0045]F.将j+Ι的值赋予j,判断是否衫n,是则进行过程B,否则进行子步骤(3.2) ;n为虚拟机序列Vs = [ V1,V2,…,Vn]中虚拟机的台数。
[0046]所述资源扩充步骤的子步骤(3.1)的过程C中,虚拟机Vj所在的宿主机剩余资源量Hj,通过虚拟机管理工具Iibviri^ARvirsh nodeinfo和virsh dominfo命令获取,其中,virsh nodeinfo命令获取宿主机的资源总量,而virsh dominfo命令获取该宿主机上每台虚拟机的资源量,宿主机的资源总量减去宿主机上每台虚拟机的资源量,即为宿主机剩余资源量Hj。
[0047]Iibvirt是一款遵循较宽松公共许可证(GNU Lesser General Public License)的免费开源软件,主要由美国红帽(Red Hat)公司负责开发,其中,virsh nodeinfo命令获取宿主机的资源总量,该命令会输出类似于“CPU(s): 16,Memory size:65949776KiB”信息,即宿主机资源总量为16个CPU和65949776KB内存,virsh dominfo命令获取该宿主机上每台虚拟机的资源量,该命令会输出类似于“CPU(S)4,Used memory: 4194304KiB”的信息,即虚拟机的资源量为4个CPU和4194304KB内存。
[0048]所述资源收缩步骤中,所述子步骤(4.1),包括下述过程:
[0049]A.置顺序量j = l;
[0050]B.判断是否VMd>0,是则进行过程C,否则进行子步骤(4.4):
[0051 ] C.对虚拟机Vj,计算其收缩量Vj,d=min{VMd,Vj-Vo};
[0052]D.判断是否Vid>0,是则进行过程E,否则转过程F;
[0053]E.将虚拟机Vj资源纵向收缩为Vj-Vj,d,再放入原虚拟机序列Vs,替换掉原来的Vj,将VMd-Vj, d的值赋予VMd,进行过程F;
[0054]F.将j+Ι的值赋予j,判断是否衫n,是则进行过程B,否则进行子步骤(4.2) ;n为虚拟机序列Vs = [ V1,V2,…,Vn]中虚拟机的台数。
[0055]本发明使用了应用程序的请求响应时间作为扩容的指标,通过请求到达率在相邻周期的改变速率和资源压力值来推算扩容量,当需要进行资源量的调整时,采用混合扩容方式,优先使用纵向扩容,只有当纵向扩容不能解决问题时才进行开销比较大的横向扩容。
[0056]本发明周期性地监控应用程序的请求响应时间和进入应用程序的请求量,以请求响应时间作为应用程序的性能是否发生衰退的直接依据,用户只需要指定容易感知的期望响应时间。在每个检测周期中,当超时率超过扩充比例阈值时,则对该应用程序的资源分配量进行扩容;当满足率超过收缩比例阈值时,则对应用程序所占有的资源进行收缩。对于应该调整的资源量,本发明通过请求率在相邻周期的改变率来估算当前周期的请求率,并且根据资源压力值计算当前资源量可承受的请求率,进而推算出需要改变的资源量,而不需要用户指定一个常量。在进行扩容操作时,本发明优先采用纵向扩容,纵向扩容热添加资源可以及时地响应突发的工作负载,当纵向扩容不能满足需求时,再进行开销比较大的横向扩容来改变虚拟机的数量。这种混合粒度的扩容方法,具有很高的灵活性和可扩展性。
【附图说明】
[0057]图1为本发明的步骤不意图;
[0058]图2为统计步骤的流程示意图;
[0059]图3为性能检测步骤的流程示意图;
[0060]图4为资源扩充步骤的流程示意图;
[0061 ]图5为资源收缩步骤的流程示意图。
【具体实施方式】
[0062]以下结合附图对本发明进一步说明。
[0063]如图1所示,本发明包括统计步骤、性能检测步骤、资源扩充步骤和资源收缩步骤。
[0064]如图2所示,统计步骤,包括变量重置、数据累加、数据存档子步骤。
[0065]如图3所示,性能检测步骤,包括计算超时率和满足率、检测扩充条件、更新资源压力值、计算扩充量、检测收缩条件、计算收缩量、休眠子步骤。
[0066]如图4所示,资源扩充步骤,包括纵向扩充、检测横向扩充条件、横向扩充、休眠子步骤。
[0067]如图5所示,资源收缩步骤,包括纵向收缩、检测横向收缩条件、横向收缩、休眠子步骤。
【主权项】
1.一种面向云环境应用的混合式自动扩容方法,包括统计步骤、性能检测步骤、资源扩 充步骤和资源收缩步骤,其特征在于:(1)统计步骤,包括下述子步骤:(1.1)变量重置:周期T开始,置超时数量Un = 0,置请求率1 = 0,其中,超时数量Un为应 用程序请求响应时间超过期望响应时间D的数量;其中,期望响应时间D = 0.1秒?1秒;(1.2)数据累加:当有应用程序请求被接收时,累加应用程序请求的数量并赋予Rn,累计 应用程序请求响应时间超过期望响应时间D的数量并赋予Un;(1.3)数据存档:当周期T届满时,将Un、心按周期序号存储到持久化存储器中;转子步骤(1.1);(2)性能检测步骤,包括下述子步骤:(2.1)计算超时率、满足率:周期T开始,从持久化存储器中提取上个周期的1]?、1,计算 超时率UP = Un/Rn,满足率LP = 1-UP;其中,超时率UP为请求响应时间超过期望响应时间D的比 率,为统计周期T内响应时间超过期望响应时间D的请求数量占该周期内总请求数量的比 例;满足率LP为请求响应时间不超过期望响应时间D的比率,为一个统计周期T内响应时间 不超过期望响应时间D的请求数量占该周期内总请求数量的比例;(2.2)检测扩充条件:判断是否UP>DU,是则达到进行资源扩充的条件,进行子步骤(2.3),否则进行子步骤(2.5);其中,扩充比例阈值Du = 5%?10% ;(2.3)更新资源压力值?^计算资源压力值?^?1=(1-1]1〇\1/11,将其存储到持久化存 储器中并更新,Pr为单个虚拟机可承受的请求率,n为应用程序所使用的虚拟机的数量;(2.4)计算扩充量:扩充量¥111 =[上个周期1+(上个周期1-上上个周期1)-?1\11]斤1 X Vo,转资源扩充步骤(3);其中,上上个周期RJ人持久化存储器中获取,Vo为虚拟机初始规 格;(2.5)检测收缩条件:判断是SLADi,是则表明资源分配量超过需求量,达到进行资源 收缩的条件,进行子步骤(2.6),否则转子步骤(2.7);其中,收缩比例阈值01 = 98%? 100% ;(2.6)计算收缩量:收缩量¥11<1=出\11-上个周期1?11+(上上个周期1^-上个周期1〇]/^ XVo,转资源收缩步骤(4);(2.7)休眠:休眠T时间,然后转子步骤(2.1);(3)资源扩充步骤,包括下述子步骤:(3.1)纵向扩充:对应用程序所使用的虚拟机序列1 = [Vi,V2,…,Vn],遍历其中的每台 虚拟机L,并对其进行纵向扩充;遍历完毕,进行子步骤(3.2);(3.2)检测横向扩充条件:判断是否VMA0,是则进行子步骤(3.3),否则进行子步骤(3.4);(3.3)横向扩充:直接创建K台新虚拟机,K = VMi/Vo,K为非整数则向上取整,将K台新虚 拟机添加到虚拟机序列1的尾部,进行子步骤(3.4);其中,Vo为虚拟机初始规格;(3.4)休眠:休眠T时间,然后转步骤(2);(4)资源收缩步骤,包括下述子步骤:(4.1)纵向收缩:对应用程序所使用的虚拟机序列Vs = [Vi,V2,H_,Vn],遍历其中的每台虚拟机L,并对其进行纵向收缩;遍历完毕,进行子步骤(4.2);(4.2)检测横向收缩条件:判断是否VMd>0,是则进行子步骤(4.3),否则进行子步骤 (4.4);(4.3)横向收缩:在所述虚拟机序列Vs中,从前至后直接停止并删除Q台虚拟机,Q = VMd/ Vo,Q为非整数则向下取整,进行子步骤(4.4);(4.4)休眠:休眠T时间,然后转步骤(2)。2.如权利要求1所述的混合式自动扩容方法,其特征在于:所述资源扩充步骤中,所述子步骤(3.1),包括下述过程:A.置顺序量j = l;B.判断是否VMOO,是则进行过程C,否则进行子步骤(3.4):C.对虚拟机V」,计算其扩充量%4=1^11{出,¥1^},出为虚拟机¥」所在的宿主机剩余资源 量;D.判断是否VwX),是则进行过程E,否则进行过程F;E.将虚拟机Vj资源纵向扩充为Vj+Vj, i,再放入原虚拟机序列Vs,替换掉原来的Vj,将VM1-Vj, i的值赋予VMi,进行过程F;F.将j+1的值赋予j,判断是否j<n,是则进行过程B,否则进行子步骤(3.2);n为虚拟机 序列Vs = [ W,V2,…,Vn]中虚拟机的台数。3.如权利要求2所述的混合式自动扩容方法,其特征在于:所述资源扩充步骤的子步骤(3.1)的过程C中,虚拟机%所在的宿主机剩余资源量比,通 过虚拟机管理工具libvirt执行virsh nodeinfo和virsh dominfo命令获取,其中,virsh 110(16;[11;1;'〇命令获取宿主机的资源总量,而¥;^811(1〇1]1;[11;1;'〇命令获取该宿主机上每台虚拟机 的资源量,宿主机的资源总量减去宿主机上每台虚拟机的资源量,即为宿主机剩余资源量 Hj〇4.如权利要求1、2或3所述的混合式自动扩容方法,其特征在于:所述资源收缩步骤中,所述子步骤(4.1 ),包括下述过程:A.置顺序量j = l;B.判断是否VMd>0,是则进行过程C,否则进行子步骤(4.4):?.对虚拟机^^计算其收缩量^^二!]!;^^^!^-^^};D.判断是否%, d>0,是则进行过程E,否则转过程F;E.将虚拟机Vj资源纵向收缩为Vj-Vj, d,再放入原虚拟机序列Vs,替换掉原来的Vj,将VMd-Vj, d的值赋予VMd,进行过程F;F.将j+1的值赋予j,判断是否j<n,是则进行过程B,否则进行子步骤(4.2);n为虚拟机 序列Vs = [ W,V2,…,Vn]中虚拟机的台数。
【文档编号】G06F9/50GK106020967SQ201610287377
【公开日】2016年10月12日
【申请日】2016年5月3日
【发明人】吴松, 李斌吉, 金海
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1