掌桥专利:专业的专利平台
掌桥专利
首页

服务器及容器云集群资源自动伸缩的方法

文献发布时间:2023-06-19 12:02:28


服务器及容器云集群资源自动伸缩的方法

技术领域

本申请涉及计算机技术领域,尤其涉及一种服务器及容器云集群资源自动伸缩的方法。

背景技术

随着虚拟化云和容器技术的发展,以传统虚拟化为中心的架构逐渐向以容器云集群为中心的云原生架构过渡。在容器云集群中通过部署大量的微服务以实现服务的运行,每个微服务可以有多个相同规格和配置的实例。容器云集群可以自动地将各个实例调度到适用的自建机房服务器或是租赁的公有云虚拟机等环境上运行,操作人员使用容器云集群可以配置实例数的增加和减少。

为保证在容器云集群中有足够的实例来提供满足性能要求的服务,操作人员可以按照负载最高值配置实例数,但当负载维持在较低的水平时,往往会因实例数的闲置造成容器云集群的资源浪费。操作人员还可以按照负载的平均水平配置资源,但当负载突增时,会导致因资源短缺而服务无法进行的问题。因此,由于无法及时调整容器云集群的实例数,造成资源浪费或者服务服务无法进行的问题。

发明内容

本申请提供了一种服务器及容器云集群资源自动伸缩的方法,以解决现有技术中由于无法及时调整容器云集群的实例数,造成资源浪费或者服务服务无法进行的技术问题。

第一方面,本申请提供了一种服务器,所述服务器被配置为:

获取并处理服务所需实例的预估值,得到第一类指标值;

获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值;

比较所述第一类指标值和所述第二类指标值,将数值最大的指标值作为目标实例数;

将所述服务中当前实例数调整为目标实例数。

在一些实施例中,所述获取并处理服务所需实例的预估值,得到第一类指标值,包括:

基于所述服务运行的历史数据,设置未来所述服务所需实例的预估值;

通过所述预估值与预估期望值的比值得到第一类指标值,其中,所述预估期望值为将所述预估值平均到当前全部实例数后的值。

在一些实施例中,所述获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值,包括:

计算所述指标使用率与期望使用率的比值并乘以当前实例数,得到近似指标值;

将所述近似指标值取整,得到所述第二类指标值。

在一些实施例中,为所述目标实例数分别设置上限实例数和下限实例数,所述服务器还被配置为:

在所述目标实例数大于所述上限实例数时,将所述服务中当前实例数调整为所述上限实例数;在所述目标实例数小于所述下限实例数时,将所述服务中当前实例数调整为所述下限实例数。

在一些实施例中,所述将所述服务中当前实例数调整为目标实例数,包括:

在所述当前实例数大于所述目标实例数时,将所述当前实例数减少至所述目标实例数以使所述服务所需实例数进行缩容;在所述当前实例数小于所述目标实例数时,将所述当前实例数扩大至所述目标实例数以使所述服务所需实例数进行扩容。

第二方面,本申请提供了一种容器云集群资源自动伸缩的方法,所述方法包括:

获取并处理服务所需实例的预估值,得到第一类指标值;

获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值;

比较所述第一类指标值和所述第二类指标值,将数值最大的指标值作为目标实例数;

将所述服务中当前实例数调整为目标实例数。

与现有技术相比,本申请的有益效果为:

本申请提供了一种服务器及容器云集群资源自动伸缩的方法,通过获取服务所需实例的预估值得到第一类指标值,该第一类指标值可以有计划地提前为服务中常规的高峰期或规划的活动等预留足够的实例。本申请再结合服务中当前实例数及实例的指标使用率获取第二类指标值,其中,第二类指标值的数量与该服务所配置指标的数量相同,可以为多个,通过第二类指标值可以根据资源使用情况灵活扩容缩容。本申请通过比较第一类指标值和第二类指标值,并获取最大的指标值作为目标实例数,不仅能够应对突发流量保证服务稳定运行,还能够及时缩容以释放资源,节约成本,避免浪费。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1中示例性示出了根据一些实施例的容器云集群资源自动伸缩方法的流程图示意图;

图2中示例性示出了根据一些实施例的计算第一类指标值的流程示意图;

图3中示例性示出了根据一些实施例的计算第二类指标值的流程示意图;

图4中示例性示出了根据一些实施例的服务中实例数的变化示意图;

图5中示例性示出了根据一些实施例的容器云集群资源自动伸缩方法的时序图。

具体实施方式

为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。

需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。

本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。

术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。

在云平台集群环境,例如基于Kubernetes的容器云集群下,部署有大量的自建机房服务器或是租赁的公有云虚拟机,在容器云集群中运行不同的业务软件程序,即,运行着不同的服务,容器云集群通过大量的微服务以实现服务的运行,每个微服务又可以有多个相同规格和配置的实例。举例来说,某服务器上运行有多套程序以实现购物平台的运行,其中A程序用于查询功能,B程序用于添加购物车功能,C程序用于支付功能,D程序用于数据存储功能,每一种程序即可视为一个实例。当然,就查询功能来说,通过部署在不同服务器上的多套程序来共同实现查询功能,那每一套程序即可视为一个实例。

对于容器云集群中所运行的服务来说,平台操作人员可以向容器云集群下达指令进行实例数的增加或减少。目前,由于无法及时调整容器云集群的实例数,造成资源浪费或者服务服务无法进行的问题,为了能够合理化应用容器云集群中的实例,本申请实施例提供了一种服务器,所述服务器被配置为执行容器云集群资源自动伸缩的过程。

下面结合附图对容器云集群资源自动伸缩的过程进行说明。

图1中示例性示出了根据一些实施例的容器云集群资源自动伸缩方法的流程图示意图。

结合图1所示,所述容器云集群资源自动伸缩的过程如下:

S100:获取并处理服务所需实例的预估值,得到第一类指标值。

在一些实施例中,可以通过服务以往在每一时段的实例数需求,预估在某个时间段内稳定提供服务所需要的实例数量,进而可以设置定时任务,在指定的时间段自动向容器云集群下达指令调整实例数。

在一些实施例中,将定时调整的实例数y转化为与当前时间t相关的函数y=f(t),并进一步表达为第一类指标值,将其作为一个输入指标提供给容器云集群。

参见图2,为示例性示出了根据一些实施例的计算第一类指标值的流程示意图。由图2所示,第一类指标值的计算过程如下:

S101:基于所述服务运行的历史数据,设置未来所述服务所需实例的预估值。

在一些实施例中,获取服务以往在每一时段的实例数需求可以基于所述服务运行的历史数据,即在每天的各个时间段内服务在保证正常运行时所需的实例数,当然,也可通过用户反馈的服务在每一时段的流量需求所需的实例数。通过收集时间段及相应的所需实例数,设置未来所述服务所需实例的预估值。例如,通过用户在UI界面中的表格所反馈的在每天的t

基于上述公式,设置未来所述服务在t

S102:通过所述预估值与预估期望值的比值得到第一类指标值。

在一些实施例中,通过上述函数输出的预估值与预估期望值相比,得到第一类指标值。上述函数所输出的y为相应时间段内各个实例的合计值,为了使得通过上述函数输出的预估值即为第一类指标值,可通过设置预估期望值的具体数值进行调整,所述预估期望值为将所述预估值平均到当前全部实例数后的值。将预估期望值的数值置为1,例如,如果有x个实例,那么期望y/x等于1,这样,根据这个自定义指标计算出相应时刻的期望实例数,也就是第一类指标值为

本申请中的第一类指标值根据服务以往正常运行过程中各个时刻所需的实例数,凭借操作人员的经验,可以有计划地提前为服务中常规的高峰期或规划的活动等预留足够的实例,提前调整好充足的实例以保障服务稳定运行,而不必等资源实际已不足的情况反映到监控系统采集的指标中后才触发扩缩容。

S200:获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值。

在一些实施例中,服务配置有多种指标,例如,CPU、内存、硬盘及性能等,可以基于实例平均或合计的指标使用率进行实例数的调整。指标使用率可以为CPU使用率、内存使用率、硬盘使用率或者每个实例每秒的请求量等。在所述服务配置多种指标时,分别获取实例的多个指标使用率,并得到多个第二类指标值。

图3中示例性示出了根据一些实施例的计算第二类指标值的流程示意图。由图3所示,第二类指标值的计算过程如下:

S201:计算所述指标使用率与期望使用率的比值并乘以当前实例数,得到近似指标值。

在一些实施例中,操作人员根据服务器运行的最佳性能,可以预先配置出期望使用率,也就是说,实例在占用期望使用率时可以保证服务器的运行状态最佳。另外,单个实例的指标使用率将随实例数增加而逐渐降低。服务器将当前查询到的指标使用率与操作人员预先配置的期望使用率进行对比,并基于比对值与当前实例数调整最终的实例数,以此期望最终实例对指标的使用率尽可能的接近期望使用率。

S202:将所述近似指标值取整,得到所述第二类指标值。

在一些实施例中,当计算出的近似指标值含有小数时,需要对近似指标值进行取整计算,以保证服务器中的服务能够正常运行。

举例来说,操作人员为保证服务器的最佳运行性能配置平均每个实例对CPU指标的期望使用率为a%,服务器查询当前实例数为x个,x个实例平均CPU使用率为b%,并预期单个实例的CPU使用率将随实例数增加而逐渐降低。基于上述预设,第二类指标值可计算为y=[(b/a)x]。通过第二类指标值调整后的实例数以期望平均每个实例的CPU使用率为a%。需要说明的是,服务器会实时监控当前CPU使用率并计算第二类指标值,以使平均每个实例CPU使用率尽量保持在a%附近。

又如,操作人员为保证服务器的最佳运行性能配置平均每个实例对CPU指标的期望使用率为a%,服务器查询当前实例数为x个,并且采集到当前x个实例CPU使用率之和为c%。基于上述预设,可预先计算出当前平均每个实例CPU使用率为(c/x)%,并进一步可以计算第二类指标值为

本申请结合服务中当前实例数及实例的指标使用率获取第二类指标值,通过第二类指标值可以根据资源使用情况灵活增加或者减少实例数。

需要说明的是,以上第一类指标值和第二类指标值的先后计算过程仅为示例,也就是S100和S200的先后顺序可以根据操作人员的配置而有所不同,这不影响最终计算结果。

S300:比较所述第一类指标值和所述第二类指标值,将数值最大的指标值作为目标实例数。

在一些实施例中,服务器分别获取第一类指标值和第二类指标值,其中,第二类指标值的个数可以为多个。服务器需要将最大的指标值作为目标实例数,以保证服务的正常运行。

图4中示例性示出了根据一些实施例的服务中实例数的变化示意图。结合图4,在t1时刻,第一类指标值为5,第二类指标值为2,则服务器将第一类指标值作为目标实例数。在t3时刻,第一类指标值为7,第二类指标值为5,则服务器将第一类指标值作为目标实例数。在t4时刻,第一类指标值为5,第二类指标值为3,则服务器将第一类指标值作为目标实例数。在t2时刻,第一类指标值为2,第二类指标值为3,则服务器将第二类指标值作为目标实例数。

S400:将所述服务中当前实例数调整为目标实例数。

在一些实施例中,在所述当前实例数大于所述目标实例数时,将所述当前实例数减少至所述目标实例数以使所述服务所需实例数进行缩容。在所述当前实例数小于所述目标实例数时,将所述当前实例数扩大至所述目标实例数以使所述服务所需实例数进行扩容。

在一些实施例中,操作人员还可以为自动伸缩配置一个上下限,在所述目标实例数大于所述上限实例数时,将所述服务中当前实例数调整为所述上限实例数。在所述目标实例数小于所述下限实例数时,将所述服务中当前实例数调整为所述下限实例数。例如,为服务设置的上限实例数为10个,下限实例数为2个,使得服务所需实例数在2到10个范围内。在当前服务流量需求不高时,服务器经过比较第一指标值和第二指标值,得到目标实例数为1,为了保证服务中部分的功能实现,以应对突发状况,最少保留实例数为2个。在出现流量突增的情况,例如获取到所需的目标实例数为100个,为了防止该服务占满整个服务器,也需要将目标实例数设置为最大值10个。

在一些实施例中,服务器还被配置为实时更新所述服务中的当前实例数,以实现及时调整容器云集群中的资源,避免资源不足造成服务无法正常运行,或者资源冗余造成浪费。另外,服务器自动地、定时地(例如每10秒一轮)查询有服务器中哪些服务配置了自动伸缩功能,并为每个服务检查是否需要执行自动伸缩。

本申请通过联合第一类指标值和第二指标值,实现有计划地提前为服务中常规的高峰期或规划的活动等预留足够的实例,并可以根据资源使用情况灵活扩容缩容,不仅能够应对突发流量保证服务稳定运行,还能够在确实不需要太多实例时,及时缩容以释放资源,节约成本,避免浪费。

图5中示例性示出了根据一些实施例的容器云集群资源自动伸缩方法的时序图。下面结合图5进一步说明本申请中容器云集群自动伸缩的过程。

在一些实施例中,服务器中设置有自动伸缩控制器、实例部署控制器,以及部署有第一查询服务、第二查询服务和实例部署服务,服务器通过上述控制器和各种服务为服务A配置自动伸缩规则。需要说明的是,在实际实施中,每个控制器或者每个服务可能部署在一个硬件设备上,也可能部署在多个硬件设备,也可能均部署在一个硬件设备上,只要各个控制器或服务之间能够相互访问即可,本申请实施例对此不做具体限定。

图5中,实例部署控制器可以实时监控实例数的变化,并将监控到的实例数反馈至实例部署服务中,并且还可以根据接收到的指令启动或停止实例。服务器中的自动伸缩控制器通过第一查询服务查询服务A所需实例的预估值,该预估值通过函数输出,在查询成功后,通过预估值与预估期望值的比值计算第一指标值。自动伸缩控制器通过第二查询服务查询服务A的当前实例数及实例的指标使用率,如CPU使用率,在查询成功后,通过预先配置出期望使用率和当前实例数计算出第二指标值。进一步,当服务还配置有其他指标时,如内存使用率、硬盘使用率,自动伸缩控制器通过第二查询服务依次查询出实例的各个指标使用率,并计算出多个第二指标值。自动伸缩控制器通过比较第一类指标值和第二类指标值,获取最大的指标值作为目标实例数。在此,自动伸缩控制器也可先调用第二查询服务,进而先计算第二指标值。在目标实例数与服务A当前实例数不一致时,自动伸缩控制器通过实例部署服务设置服务A的实例数为目标实例数。实例部署控制器在监控实例数变化时,若发现服务当前实例数与目标实例数不一致,则自动对相应服务的实例进行启动或停止,以实现扩容或缩容操作,使上述自动伸缩生效。

以上,对一个服务的一次检查结束,当然,如果还有其他服务配置了自动伸缩规则,自动伸缩控制器将继续检查和调整其他服务。当所有服务完成一次检查后,本轮检查结束。下轮检查开始后,会重新采集数据并计算指标值,并根据最新的指标值调整服务的目标实例数。

与上述方法相对应的,本申请实施例还提供了一种容器云集群资源自动伸缩的方法,所述方法包括:获取并处理服务所需实例的预估值,得到第一类指标值。获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值。比较所述第一类指标值和所述第二类指标值,将数值最大的指标值作为目标实例数。将所述服务中当前实例数调整为目标实例数。

在一些实施例中,所述获取并处理服务所需实例的预估值,得到第一类指标值,包括:基于所述服务运行的历史数据,设置未来所述服务所需实例的预估值。通过所述预估值与预估期望值的比值得到第一类指标值,其中,所述预估期望值为将所述预估值平均到当前全部实例数后的值。

在一些实施例中,所述获取并处理所述服务中当前实例数及实例的指标使用率,得到第二类指标值,包括:计算所述指标使用率与期望使用率的比值并乘以当前实例数,得到近似指标值。将所述近似指标值取整,得到所述第二类指标值。

由于以上实施方式均是在其他方式之上引用结合进行说明,不同实施例之间均具有相同的部分,本说明书中各个实施例之间相同、相似的部分互相参见即可。在此不再详细阐述。

需要说明的是,在本说明书中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或暗示这些实体或操作之间存在任何这种实际的关系或顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的电路结构、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种电路结构、物品或者设备所固有的要素。在没有更多限制的情况下,有语句“包括一个……”限定的要素,并不排除在包括要素的电路结构、物品或者设备中还存在另外的相同要素。

本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本申请的其他实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求的内容指出。

以上的本申请实施方式并不构成对本申请保护范围的限定。

相关技术
  • 服务器及容器云集群资源自动伸缩的方法
  • 一种服务器集群间信息资源自动化部署方法
技术分类

06120113148828