结合负载调节及周期性调节的自动伸缩方法及系统与流程

文档序号:25543420发布日期:2021-06-18 20:40
结合负载调节及周期性调节的自动伸缩方法及系统与流程

本发明属于云计算和运维技术领域,尤其是涉及一种结合负载调节及周期性调节的自动伸缩方法及系统。



背景技术:

对负载的定义一般是系统中所有服务器节点某项测量指标(如cpu占用率)的均值。有两种方式触发伸缩动作,一种方式是:事先设定好阈值,在实际测试指标超过阈值后开始扩容,在低于阈值后,开始收缩;另一种方式是:根据业务需要设定好调整周期,进行伸缩。以华为云和阿里云为例,华为云的弹性伸缩策略中,采用多种策略配置(定时、周期、动态),自动增加和减少弹性云服务器,自动将新增加的弹性云服务器添加至负载均衡监听器中;阿里云中,通过提前设置触发弹性伸缩的条件,如触发弹性扩张的阈值为80%,触发弹性收缩的阈值为30%,来实现弹性伸缩效果。

但是,无论是华为云、阿里云还是其它现有的云服务系统中,均主要存在如下技术问题:

一、现有技术使用系统中所有服务器的指标的均值来定义系统的负载,无法很好的反映单台服务器负载过高的问题,若干台服务器负载过高可能导致系统可靠性显著降低;

二、有技术使用的阈值触发的方式和周期性触发的方式,不能很好的相互兼容,同时只能选择激活一个,二者冲突时只能选择其一执行。因此,现有技术配置比较麻烦,并且需要使用者充分考虑到各种情况,否则可能导致错误出现,例如:因为一个计划之外的业务繁忙,系统刚刚因为负载超过阈值触发并完成了扩容,紧接着系统触发了周期性资源收缩,导致服务资源不足。

因此,如何进一步提高服务器负载均衡的可靠性便成为了目前亟待解决的技术问题。



技术实现要素:

针对现有技术中存在的上述缺陷,本发明的目的是,提供一种结合负载调节及周期性调节的自动伸缩方法及系统,以解决原有的云服务系统中负载分配可靠性不高的问题。

本发明的第一方面,提供了一种结合负载调节及周期性调节的自动伸缩方法,该方法包括:

对系统中的全部服务器进行分组,并为每个分组及组内的各台服务器分别设置负载过载线;

遍历组内各服务器,计算每组的实时负载,其中,每组的实时负载由组内各服务器的指定指标值之和与最大指标值之和相除得出,所述的指定指标值根据组内各服务器的当前负载是否超过设置的过载线进行差异化赋值;

根据每组的负载计算结果判定是否需要对该分组进行服务器扩容。

进一步地,所述方法还包括:在每个业务周期结束时主动对该分组在本次及上一个业务周期的负载情况进行分析,根据预设的规则判断该分组是否需要进行服务器缩减,以及计算缩减的服务器数量,并选取下线的服务器。

进一步地,所述的差异化赋值包括:计算分组内的某服务器的当前负载并与设置的过载线进行比对,若组内某服务器的当前负载超过过载线,则赋予所述服务器的当前指标值与该服务器的最大指标值之间的较大者为所述指定指标值,若组内的某服务器的当前负载未超过过载线,则赋予所述服务器的当前指标值为所述指定指标值。

进一步地,判定是否需要进行服务器缩减的规则包括:

判断上一个业务周期内是否存在超过过载线的情况;

判断当前该组的负载是否已经超过过载线;

判断负载历史是否不足一个业务周期;

若判定其中任意一个条件为是,则不触发缩减。

进一步地,需要缩减的服务器数量的计算过程包括:根据各组需求设定各组服务器的下线率,结合上一业务周期内的分组的最大负载及当前组内的服务器数量,通过线性整流函数计算出该分组需要缩减的服务器数量。

进一步地,选取被下线的服务器包括如下过程:

对上一周期内分组中的每台服务器每天的峰值指标进行累加得到每台服务器各自的峰值之和;

将各服务器按照峰值之和降序排列;

下线峰值之和最小的服务器。

进一步地,触发扩容还包括:设置每组服务器的最低数量值,并在各组服务器数量低于设定的最低数量值时,触发扩容。

进一步地,需要缩减的服务器数量通过如下公式计算出:其中,n为需要缩减的服务器数量,max(0,x)为选取的线性整流函数,取0和x中较大者,γ为下线率,1≤γ≤10,x为分组上一业务周期内的历史最大负载。

本发明的另一方面,提供了一种结合负载调节及周期性调节的自动伸缩系统,该系统包括:

过载线设置模块,根据不同分组的服务器为每个分组及组内的各台服务器分别设置负载过载线;

负载计算模块,用于计算各组的实时负载,其中,每组的实时负载由组内各服务器的指定指标值之和与最大指标值之和相除得出,所述的指定指标值根据组内各服务器的当前负载是否超过设置的过载线进行差异化赋值;

扩容判断模块,根据每组的负载计算结果判定是否需要对该分组进行服务器扩容。

进一步地,所述系统还包括:服务器缩减模块,所述服务器缩减判断模块在每个业务周期结束时主动对该分组在本次及上一个业务周期的负载历史进行分析,并根据预设的规则判断该分组是否需要进行服务器缩减,以及计算缩减的服务器数量,并选取下线的服务器。

与现有技术相比,本发明所公开的一种结合负载调节及周期性调节的自动伸缩方法及系统,达到了如下技术效果:

1、本发明对负载的计算不使用均值,而是使用线性整流函数对单台服务器的指标进行变换后输出并求和,对比原有的均值计算方法,本发明考虑到为单台服务器保留一定的冗余资源,对整个系统来说更不容易出现资源分配不均衡的情况。

2、本发明通过设置在周期结束时进行负载分析后进行缩减的方法,合理的解决了现有技术中缩减时按负载和按周期两种方式难以配置和不兼容的问题,也不会导致服务资源不足的情况。

附图说明

图1是本发明实施例中的结合负载调节及周期性调节的自动伸缩方法的流程图。

图2是本发明实施例中的下线服务器数量比例与分组在上一个业务周期内历史最大负载的坐标图。

图3是本发明实施例中的下线服务器数量比例与分组在上一个业务周期内历史最大负载的另一坐标图。

图4是本发明实施例中的结合负载调节及周期性调节的自动伸缩系统的架构图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出。其中,下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

实施例一

参照图1所示,本发明实施例公开了一种结合负载调节及周期性调节的自动伸缩方法,该方法包括如下步骤:

步骤s1、对系统中的全部服务器进行分组,并为每个分组及组内的各台服务器分别设置负载过载线。

具体来说,根据服务器特征自动分组机制,如按照服务区域划分、按照服务对象划分等机制,将系统中的所有服务器设置分组,以组为单位进行负载分组管理,由于同一组具有相同或类似的属性,便于管理和后期计算的准确性。当然,本领域技术人员应当能够理解的是,此处的分组仅仅是优选的一种方案,亦可以将全部的服务器一一进行单独计算,或者部分以组为单位计算,部分单独计算。

在分组完成后,为每个分组设置分组负载过载线,以及为组内的各台服务器设置各自的负载过载线。其中,不同的分组可以设置不同的负载过载线,同一组内的不同的服务器亦可根据服务器提供的带宽大小设置相同或不同的负载过载线。

为了方便理解,下面来对本发明实施例中的负载和过载线分别进行说明。

假设指标当前值为cmv,也就是当前的服务器指标数据为cmv,指标最大值为mmv,也就是服务器能够承受的最大指标数据(比如最大带宽)为mmv。

则负载定义为cmv与mmv之商,也就是:

过载线,也即负载超过某个值则认为该分组或该服务器过载,本发明为每个分组和单台服务器均设定对应的过载线,即考虑到了整体的性能也考虑到了每台服务器各自的性能。

步骤s2、遍历组内各服务器,计算每组的实时负载,其中,每组的实时负载由组内各服务器的指定指标值之和与最大指标值之和相除得出,所述的指定指标值根据组内各服务器的当前负载是否超过设置的过载线进行差异化赋值。

通过差异化赋值,克服了原有的组内负载直接采用均值的办法,针对不同的服务器的不同情况,进行不同的赋值,更能反映每一个服务器的具体指标。

本实施例中,指定指标值的赋值为如下判断原则:先将分组内的某服务器的当前负载并与设置的过载线进行计算和比对,若组内某服务器的当前负载超过过载线,则赋予所述服务器的当前指标值与该服务器的最大指标值之间的较大者为所述指定指标值,若组内的某服务器的当前负载未超过过载线,则赋予所述服务器的当前指标值为所述指定指标值。根据上述原则,对分组服务器的指定指标值进行累加,最后计算出各组内的负载。本发明对组内的负载不使用传统的均值,而是根据每个服务器设置单独的负载线,然后将当前负载与预设的负载线进行比对变换,最后求和输出,相比传统的均值计算模式,本发明考虑到为单台服务器保留一定的冗余资源,对整个系统来说更不容易出现资源分配不均衡的情况。

当然,本领域技术人员应当能够理解的是,上述的赋值方式仅仅是本申请一个优选的方式,亦可以根据需求进行其他差异化的赋值方式。

假设分组指标最大值为mmvg,组内有n台服务器,第i台(1≤i≤n)服务器指标最大值为mmvsi,组内服务器数量为c,该分组指标的最大值为累加分组内所有服务器的指标最大值,即:

假设组内第i台服务器指标当前值为cmvsi,且设定分组指标当前值为cmvg,

如果该服务器当前负载超过对该服务器预设的过载线,则取最大带宽值为服务器当前指定的指标值,然后将本台的指标值与之前计算出的每一个服务器的被赋予指定的指标值进行累加,即:

cmvg=max(cmvsi,mmvsi)

如果该服务器当前负载没有超过过载线,则取当前实际的带宽值为服务器指定的指标值,然后和之前计算的每一个服务器被赋予指定的指标值累加,即:cmvg+=cmvsi;

则,分组负载的计算方式为:

步骤s3、根据每个分组的负载计算结果,与分组过载线比对,判断是否需要对该分组进行服务器扩容。

由于事先设定有各分组的过载线,当计算的结果是某分组的负载超过过载线时,按照分组特征对该分组进行扩容,直到重新计算得到的该分组的过载低于设定的过载线为止。

同时,为了保证每个分组有一定量的服务器提供足够的服务资源,本发明还对每组服务器设置了最低数量值,并在各组服务器数量低于设定的最低数量值时,触发扩容,直到服务器数量大于最低要求。

本发明通过过载线机制和最低数量机制两种机制的配合,可同时生效并工作,如此能极大提高服务器扩容的有效性。

目前,现有的缩减机制大多是被动触发模式,也即监测服务器的运行状态,在服务器运行状态异常时触发缩减,或者服务器即将过期时触发缩减,这种被动触发方式不能够及时发现服务器的当前运行状态,如果闲置,则造成资源的浪费,而主动触发的模式则能够快速的协调资源,对未冗余的服务器进行下线或者调至其它分组。

本发明在每个业务周期结束时,如每天的04:00、每周日的24:00,或者每个月最后一天的24:00等(时间可以根据实际情况做调整),主动对该分组在上一个业务周期的负载历史进行分析,并根据预设的规则判断该分组是否需要进行服务器缩减,以及计算缩减的服务器数量、选择被下线的服务器。

具体来说,本实施例中,判定是否需要进行服务器缩减的规则包括:

判断上一个业务周期内是否存在超过过载线的情况;

判断当前该组的负载是否已经超过过载线;

判断负载历史是否不足一个业务周期;

若判定其中任意一个条件为是,也就是当上一个周期内曾经超过过载线,或者当前负载已经超过过载线,或者负载历史不足一个周期,只要满足任意一个,则不触发缩减。触发缩减的条件则是,三个条件均判断为否,也就是上一个周期内未超过过载线,且当前负载未超过过载线,且负载历史超过一个周期,如均判断为否,则说明服务器存在冗余,可以触发缩减。

需要缩减的服务器数量的计算过程包括:根据各组需求设定各组服务器的下线率,结合上一业务周期内的分组的最大负载及当前组内的服务器数量,通过线性整流函数计算出该分组需要缩减的服务器数量。

具体来说,假设上一个周期内分组的最大负载为x,分组内服务器数量为c,下线率为γ,其中,下线率代表下线的激进程度,相同负载下,更高的下线率会下线更多服务器,取值范围:1≤γ≤10;

max(0,x)为线性整流函数,取0和x中较大者;

则该分组需要缩减的服务器数量n为:

在计算出结果后,对结果取整数即需要缩减的服务器数量。更具体地,对计算结果小数点之后可以按照四舍五入规则进行取整。

在计算出缩减的数量之后,再选取需要下线的服务器,被下线的服务器的选取包括如下过程:

对上一周期内分组中的每台服务器每天的峰值指标进行累加得到每台服务器各自的峰值之和;

将各服务器按照峰值之和降序排列,峰值高的靠前,峰值低的靠后;

下线峰值之和最小的服务器,峰值最小,说明其被利用的次数不多。最后,完成整个缩减过程。

参照图2、图3所示,图2、图3示出了不同的γ对下线服务器数量比例的影响。y(纵轴)表示:下线服务器数量比例,x(横轴)表示:分组上一个业务周期内历史最大实时负载,γ表示:下线率,相同负载下,更高的下线率会下线更多服务器,取值范围:1≤γ≤10。

从图2看出,γ=10时,分组上一个业务周期内历史最大实时负载需要≥0.998才不会触发缩减服务器数量机制(下线服务器数量比例为0);从图3看出,γ=5时,相比γ=10时,分组上一个业务周期内历史最大实时负载只要≥0.767就不会触发缩减服务器数量机制(下线服务器数量比例为0)。

本发明在周期结束时进行负载分析后进行缩减的方法,合理的解决了现有技术中缩减时按负载和按周期两种方式难以配置和不兼容的问题,且通过计算获取了需要缩减的服务器数量并确定具体的下线服务器,整体提高了系统的均衡性。

另外,本领域普通技术人员应当理解的是,上述实施例的各种方法中的全部或者部分步骤是可以通过程序指令相关的硬件来完成,该程序可以存储于一判断机存储介质中,存储介质可以包括:只读存储器rom、随机存取存储器ram、磁盘或光盘等。

下面以要对一个视频流cdn服务集群应用在本发明实施例场景进行具体说明。

负载指标为实时流量带宽,当前如果有越多的用户请求观看视频,则cdn服务器集群的带宽越高,负载越高。不同地区的用户就近请求最近的服务器。

假设集群中存在10台云服务器,其中6台为厂商甲提供,位于德国法兰克福,每台服务器的最大带宽为:500mbps;另外4台为厂商乙提供,位于日本东京,每台服务器的最大带宽为200mbps。

系统提取服务器的厂商和地理位置标签,自动形成2个分组,组名分别是:“甲-法兰克福”,“乙-东京”,分别记作a组,b组。

a组的指标最大值为:mmvga=6×500=3000(mbps);

b组的指标最大值为:mmvgb=4×200=800(mbps);

设置分组过载线为0.9,单台服务器的过载线为0.9。

假设当前a组中有3台服务器实时带宽为350mbps,有2台服务器实时带宽为475mbps;因为350/500=0.7<0.9并且475/500=0.95>0.9,所以3台服务器未超过单台服务器过载线按照实时带宽计算,2台服务器超过单台服务器过载线按照最大带宽计算。那么a组的分组指标当前值为:cmvga=3×350+2×500=2050(mbps);

故,a组的实时负载为:

假设当前b组中有3台服务器实时带宽为120mbps,有1台服务器实时带宽为185mbps,超过单台服务器过载线按照最大带宽计算。那么b组的分组指标当前值为:cmvgb=3×120+1×200=560(mbps);

同理计算b组实时负载为:

此时a、b两组的实时负载都低于分组过载线0.9,不会触发扩容。

经过一段时间后,b组其中一台1台服务器实时带宽变为155mbps,另外3台服务器185mbps,则此时b组服务器实时负载为:

由于b组负载大于设定的过载线0.9,触发扩容,将会增加一台服务器,增加一台新服务器后的b组实时负载为:

增加一台后,低于设定的过载线0.9,扩容停止,如果增加一台后仍然大于设定的过载线,则继续增加至低于设定的过载线。

假设本视频流cdn服务的业务周期为一周,即用户的活跃情况每周大致相似,工作日活跃中等,周末活跃较高。

则可以设置:缩减机制每周一零时运行,下线率γ=9。

加入分组a上一个业务周期内历史最大负载为0.5,则a组需要缩减下线服务器数量为1台,计算过程如下:

其中,选取下线的服务器过程如下:

1、对上一周期内分组a中的每台服务器每天的峰值指标进行累加得到每台服务器各自的峰值之和;

2、将服务器按照峰值之和降序排列;

3、缩减下线峰值之和最小的1台服务器,峰值之和最小,说明该服务器被利用的效率较低,故优先下线;

4、缩减完成。

实施例二

本发明的另一实施例提供了一种结合负载调节及周期性调节的自动伸缩系统,该系统包括:过载线设置模块101、负载计算模块102和扩容判断模块103,其中,

过载线设置模块101,其用于根据不同分组的服务器为每个分组及组内的各台服务器分别设置负载过载线。

负载计算模块102,其用于计算各组的实时负载,其中,每组的实时负载由组内各服务器的指定指标值之和与最大指标值之和相除得出,所述的指定指标值根据组内各服务器的当前负载是否超过设置的过载线进行差异化赋值。本发明对组内的负载不使用传统的均值,而是根据每个服务器设置单独的负载线,然后将当前负载与预设的负载线进行比对变换,最后求和输出,相比传统的均值计算模式,本发明考虑到为单台服务器保留一定的冗余资源,对整个系统来说更不容易出现资源分配不均衡的情况。

扩容判断模块103,其根据每组的负载计算结果判定是否需要对该分组进行服务器扩容,如超过设定的过载线,则启动扩容操作。

在通过扩容机制实现自动扩容以后,本发明还采用了主动缩减机制,通过设置服务器缩减模块104,在每个业务周期结束时主动对该分组在本次及上一个业务周期的负载历史进行分析,并根据预设的规则判断该分组是否需要进行服务器缩减,以及计算缩减的服务器数量,并选取下线的服务器。

在一个业务周期结束时主动对负载分析并确定是否缩减,合理的解决了现有技术中缩减时按负载和按周期两种方式难以配置和不兼容的问题。

本发明实施例中的系统用以执行前述实施例中的方法,未详尽之处,请参照前一实施例中的方法,在此不再赘述。

本发明实施例所公开的一种结合负载调节及周期性调节的自动伸缩系统,在闲时,使用的资源成本和现有的均值负载调节的方式一样,但在请求量增加时,本发明的方案能够更快的触发扩容,应对请求峰值,并能更早的保护已经接近过载的单台服务器。此外,本发明结合了按周期调整和按负载调整两种方式来进行缩减,管理员仅需一次配置,即可让系统自动调节,提高了系统的整体运行效率。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

再多了解一些
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1