CN110347503B - 资源重调度方法及装置 - Google Patents
资源重调度方法及装置 Download PDFInfo
- Publication number
- CN110347503B CN110347503B CN201910565109.2A CN201910565109A CN110347503B CN 110347503 B CN110347503 B CN 110347503B CN 201910565109 A CN201910565109 A CN 201910565109A CN 110347503 B CN110347503 B CN 110347503B
- Authority
- CN
- China
- Prior art keywords
- resource
- rescheduling
- candidate list
- application
- application instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种资源重调度方法及装置,其中方法包括:通过接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;若方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;确定第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对候选列表中的应用实例进行排序,从而得到第二候选列表;对第二候选列表中的应用实例进行重调度。由此,基于资源负载系数、驱逐权重对实现对节点的应用实例进行重调度,实现自动修正应用实例的分布,通过动态调整机制随时调整节点上应用实例的分布的均衡性,提高集群的可靠性。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种资源重调度方法及装置。
背景技术
资源调度能够保证应用实例在集群节点均衡分布。目前,应用启动、扩容、节点故障迁移时会触发应用实例的重调度,通过一系列的算法计算出应用实例的最佳运行节点。但随着系统运行时间的不断积累、若干集群节点的宕机故障,最终会导致节点上的应用实例分布不均匀。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种资源重调度方法。
本发明的第二个目的在于提出一种资源重调度装置。
本发明的第三个目的在于提出另一种资源重调度装置。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种资源重调度方法,包括:
接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;
若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;
确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;
对所述第二候选列表中的应用实例进行重调度。
在一种可能的实现方式中,所述根据集群上所有节点的资源负载系数的平均值确定第一候选列表,包括:
计算集群上所有节点的资源负载系数的平均值;
获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;
根据一个或多个所述候选节点确定所述第一候选列表。
在一种可能的实现方式中,所述对所述第二候选列表中的应用实例进行重调度,包括:
对所述第二候选列表中排在前面的N个应用实例进行重调度。
在一种可能的实现方式中,所述对所述第二候选列表中排在前面的N个应用实例进行重调度,包括:
对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
在一种可能的实现方式中,所述确定所述第一候选列表中每个应用实例的驱逐权重包括:
根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重。
在一种可能的实现方式中,所述预设的资源负载权重包括磁盘权重、CPU权重、内存权重,所述每个应用实例对应的节点的资源信息包括CPU数、总内存数、总数据盘大小,所述每个应用实例的资源使用值包括磁盘使用值、CPU使用值、内存使用值;
所述根据所述预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重,包括:
根据公式w=(s1/q1*w1+s2/q2*w2+s3/q3*w3)*k1*k2确定第一候选列表中每个应用实例的驱逐权重;
其中,w为每个应用实例的驱逐权重;w1为CPU权重;w2为内存权重;w3为磁盘权重;q1为每个应用实例对应的节点的总CPU数;q2为每个应用实例对应的节点的总内存数;q3为每个应用实例对应的节点的总数据盘大小;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;k1为可驱逐系数;k2为奖惩系数。
在一种可能的实现方式中,所述每个应用实例的奖惩系数的获取方式为:
根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数。
在一种可能的实现方式中,所述根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数,包括:
根据公式k2=s1/t1*w1+s2/t2*w2+s3/t3*w3获取每个应用实例的奖惩系数;
其中,w1为CPU权重;w2为内存权重;w3为磁盘权重;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;t1为每个应用实例的CPU请求值;t2为每个应用实例的内存请求值;t3为每个应用实例的磁盘请求值。
在一种可能的实现方式中,在确定所述第一候选列表中每个应用实例的驱逐权重之前,还包括:
判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例;
若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
在一种可能的实现方式中,在对所述第二候选列表中的应用实例进行重调度之后,还包括:
获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;
判断所述重调度后的方差是否满足所述第一预设条件;
若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
在一种可能的实现方式中,所述第一预设条件根据资源重调度情况设定。
在一种可能的实现方式中,所述接收资源重调度请求包括:
通过定时触发或事件触发的方式接收所述资源重调度请求。本发明实施例的资源重调度方法,通过接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;对所述第二候选列表中的应用实例进行重调度。由此,基于资源负载系数、驱逐权重对实现对节点的应用实例进行重调度,实现自动修正应用实例的分布,通过动态调整机制随时调整节点上应用实例的分布的均衡性,提高集群的可靠性。
为达上述目的,本发明第二方面实施例提出了一种资源重调度装置,包括:
触发模块,用于接收资源重调度请求;
获取模块,用于获取集群上所有节点的资源负载系数的方差;
第一确定模块,用于若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;
第二确定模块,用于确定所述第一候选列表中每个应用实例的驱逐权重;
排序模块,用于根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;
重调度模块,用于对所述第二候选列表中的应用实例进行重调度。
在一种可能的实现方式中,所述第一确定模块包括:
计算单元,用于计算集群上所有节点的资源负载系数的平均值;
获取单元,用于获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;
确定单元,用于根据一个或多个所述候选节点确定所述第一候选列表。
在一种可能的实现方式中,所述重调度模块具体用于:
对所述第二候选列表中排在前面的N个应用实例进行重调度。
在一种可能的实现方式中,所述重调度模块具体用于:对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
在一种可能的实现方式中,所述第二确定模块具体用于:
根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重。
在一种可能的实现方式中,所述预设的资源负载权重包括磁盘权重、CPU权重、内存权重,所述每个应用实例对应的节点的资源信息包括CPU数、总内存数、总数据盘大小,所述每个应用实例的资源使用值包括磁盘使用值、CPU使用值、内存使用值;
所述第二确定模块具体用于:根据公式w=(s1/q1*w1+s2/q2*w2+s3/q3*w3)*k1*k2确定第一候选列表中每个应用实例的驱逐权重;
其中,w为每个应用实例的驱逐权重;w1为CPU权重;w2为内存权重;w3为磁盘权重;q1为每个应用实例对应的节点的总CPU数;q2为每个应用实例对应的节点的总内存数;q3为每个应用实例对应的节点的总数据盘大小;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;k1为可驱逐系数;k2为奖惩系数。
在一种可能的实现方式中,所述第二确定模块还用于:
根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数。
在一种可能的实现方式中,所述第二确定模块还具体用于:
根据公式k2=s1/t1*w1+s2/t2*w2+s3/t3*w3获取每个应用实例的奖惩系数;
其中,w1为CPU权重;w2为内存权重;w3为磁盘权重;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;t1为每个应用实例的CPU请求值;t2为每个应用实例的内存请求值;t3为每个应用实例的磁盘请求值。
在一种可能的实现方式中,所述装置还包括:
判断模块,用于在确定所述第一候选列表中每个应用实例的驱逐权重之前,判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例;
筛除模块,用于若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
在一种可能的实现方式中,所述获取模块,还用于在对所述第二候选列表中的应用实例进行重调度之后,获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;
所述第一确定模块,还用于判断所述重调度后的方差是否满足所述第一预设条件,若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
在一种可能的实现方式中,所述第一预设条件根据资源重调度情况设定。
在一种可能的实现方式中,所述触发模块具体用于:通过定时触发或事件触发的方式接收所述资源重调度请求。
本发明实施例的资源重调度装置,通过接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;对所述第二候选列表中的应用实例进行重调度。由此,基于资源负载系数、驱逐权重对实现对节点的应用实例进行重调度,实现自动修正应用实例的分布,通过动态调整机制随时调整节点上应用实例的分布的均衡性,提高集群的可靠性。
为达上述目的,本发明第三方面实施例提出了另一种资源重调度装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的资源重调度方法。
为了实现上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的资源重调度方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例提供的一种资源重调度方法的流程示意图;
图2为本发明实施例提供的又一种资源重调度方法的流程示意图;
图3为本发明实施例提供的又一种资源重调度方法的流程示意图;
图4为本发明实施例提供的一种资源重调度装置的结构示意图;
图5为本发明实施例提供的又一种资源重调度装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
资源调度能够保证应用实例在集群节点上合理、均匀的分布,目前应用启动、扩容、节点故障迁移的时候会触发应用实例调度,通过一系列的算法计算出实例最佳运行位置。但随着系统运行时间的不断积累和若干集群节点的宕机故障,最后会导致应用实例的分布不均匀和不合理,主要有几个情况:
1)若干节点故障后,原运行在该节点的实例会触发故障迁移到其它节点,而这些故障节点恢复后,不会再触发调度,原有应用实例不会再运行回来,这些节点就存在资源闲置的情况;
2)一个应用多实例的情况下,希望这些实例分布到不同的节点上,但由于各种原因(常见的是资源不足),在应用启动调度的时候,这些实例可能会跑到同一个节点上,这种情况下,这个节点异常后,会导致整个应用异常(例如无可用实例)。
3)kubernetes的kubelet组件会不断检测节点资源状态(磁盘、内存、文件系统iNode数等),如果这些资源压力达到一定的阈值,则会触发压力迁移机制,会驱逐本节点的所有实例,在驱逐的时候,并不会考虑该应用实例是否适合直接驱逐,可能引发应用服务中断。其中,Kubernetes是谷歌开源一个全新的基于容器技术的分布式架构领先方案,目前已成为在私有云、公有云和混合云环境中大规模部署容器化应用的事实标准。
基于Kubernetes默认的调度及故障驱逐机制,在集群规模较小的情况下,应用实例很容易出现分布不均匀的情况,特别是应用更新不频繁的系统(应用更新会触发重调度),分布不均匀的情况更突出。Kubernetes在资源压力达到一定的阈值触发驱逐时,不考虑实例的特殊性,比如某个应用只有1个实例或者多个实例运行全部运行在本节点,这种情况触发迁移,会导致业务中断。
相关技术中,Kubernetes调度的资源管理采用预分配的方式,依据应用请求Request的资源值,判断节点剩余的资源是否足够,这种方式没有考虑异常应用的情况,因为应用实际使用的资源值可能超过请求Request的资源值或者没有正确配置请求Request的资源值,虽然可以通过Limit来限制内存、CPU的占用,但无法限制文件系统的存储大小的占用。此类应用的存在,将很容易导致本节点的资源故障驱逐,所以为保证节点均衡和业务稳定性,在触发资源压力故障时,需要重点识别此类应用实例,可以单独针对该实例进行重启或驱逐来释放资源。
下面参考附图描述本发明实施例的资源重调度方法及装置。
图1为本发明实施例提供的一种资源重调度方法的流程示意图。本发明实施例提供的资源重调度方法的执行主体为资源重调度装置,资源重调度装置具体可以为硬件设备,或者硬件设备中安装的软件。其中,硬件设备例如可以为终端设备、服务器等。
如图1所示,该资源重调度方法包括以下步骤:
S101、接收资源重调度请求,获取集群上所有节点的资源负载系数的方差。
具体的,事先配置重调度服务的配置信息,配置信息包括但不限于集群上所有节点的资源负载系数的方差阈值、重调度触发时间或频率、节点各类资源的负载权重、单次重调度最大迁移实例数。
其中,按照重调度触发时间或频率定时发起资源重调度请求以触发对集群上节点进行资源重调度。
其中,节点各类资源的负载权重包括但不限于磁盘权重、CPU(CentralProcessing Unit,中央处理器)权重、内存权重。
其中,单次重调度最大迁移实例数可以理解为单次重调度时重调度的应用实例的最多数量。单次重调度最大迁移实例数设置过大,会导致单次重调度的应用实例过多,引发系统震荡,故应根据实际集群规模来设置单次重调度最大迁移实例数。例如,单次重调度最大迁移实例数为10个,单次重调度最多重调度10个应用实例。
本实施例中,可以通过定时触发的方式接收资源重调度请求,例如,按照配置信息中重调度触发时间或频率定时触发接收资源重调度请求,但并不以此为限。也可以通过事件触发的方式接收资源重调度请求,例如,由系统监听到诸如节点加入或离线等节点事件时触发,但并不以此为限。
需要指出的是,在本次接收到资源重调度请求时,判断系统是否完成上次重调度,若没有,则暂停本次重调度,等到上次重调度完成后,再执行本次重调度。
本实施例中,为获取集群上所有节点的资源负载系数的方差,需要计算集群上每个节点的资源负载系数。为了计算每个节点的资源负载系数,先从重调度服务的配置信息中获取节点各类资源的资源负载权重,以及从获取监控到的每个节点的资源使用率,再根据配置信息中的资源负载权重和每个节点的资源使用率计算每个节点的资源负载系数。
需要指出的是,在系统运行时,实时监控各类监控指标,监控指标包括但不限于每个节点的诸如总CPU数、总内存数、总数据盘大小等资源信息、每个节点的诸如磁盘使用率、CPU使用率、内存使用率等资源使用率、每个应用实例的诸如磁盘使用值、CPU使用值、内存使用值等资源使用值。其中,资源使用率为资源使用值与资源总值的比值。
根据应用场景的不同,每个节点的资源负载系数的计算方式不同。作为一种示例,配置信息所配置的节点各类资源的资源负载权重包括但不限于磁盘权重、CPU权重、内存权重。获取监控到的每个节点的资源使用率包括但不限于每个节点的磁盘使用率、CPU使用率、内存使用率。则每个节点的资源负载系数的计算方式为:f=w1*l1+w2*l2+w3*l3。
其中,f为每个节点的资源负载系数,w1为CPU权重;w2为内存权重;w3为磁盘权重,l1为每个节点的CPU使用率,l2为每个节点的内存使用率,l3为每个节点的磁盘使用率,CPU权重、内存权重、磁盘权重相加100%。
S102、若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例。
其中,第一预设条件根据资源重调度情况设定。第一预设条件例如为集群上所有节点的资源负载系数的方差小于集群上所有节点的资源负载系数的方差阈值。集群上所有节点的资源负载系数的方差阈值根据资源重调度情况在配置重调度服务的配置信息时进行设定。
以第一预设条件为集群上所有节点的资源负载系数的方差小于集群上所有节点的资源负载系数的方差阈值为例,计算集群上各个节点的资源负载系数之后,获取集群上所有节点的资源负载系数的方差;判断集群上所有节点的资源负载系数的方差是否小于上述方差阈值,若是,说明应用实例在集群节点上均衡分布,不需要对应用实例进行重调度;若否,说明应用实例在集群节点上分布不均匀,需要进行重调度。
具体的,在集群上所有节点的资源负载系数的方差不满足第一预设条件时,根据集群上所有节点的资源负载系数的平均值对集群上节点进行筛选,根据筛选出的一个或多个候选节点生成第一候选列表,每个候选节点包括一个或多个应用实例。
作为一种可能的实现方式,“根据集群上所有节点的资源负载系数的平均值确定第一候选列表”的具体实现方式为:计算集群上所有节点的资源负载系数的平均值;获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;根据一个或多个所述候选节点确定所述第一候选列表。
其中,集群上所有节点的资源负载系数的平均值是对集群上所有节点的资源负载系数相加求平均得到的。
其中,第二预设条件根据实际情形进行设定。例如,第二预设条件为节点资源负载系数与所述平均值的差值小于设定数值,设定数值根据实际情形进行设定,设定数值例如为0.1。或者,节点资源负载系数与所述平均值的差值落在设定数据区间中,设定数据区间根据实际情形进行设定,设定数据区间例如为[0,0.1]。
可以理解的是,节点资源负载系数与平均值的差值不满足第二预设条件的节点的资源压力比较大,且节点上应用实例分布较为不均匀,需要对该节点资源负载系数不满足第二预设条件的节点的应用实例进行重调度。
可以理解的是,节点资源负载系数与平均值的差值满足第二预设条件的节点的资源压力比较小,且节点上应用实例分布较为均匀,无需对该节点资源负载系数满足第二预设条件的节点的应用实例进行重调度。
因此,基于节点资源负载系数与所述平均值的差值是否满足第二预设条件选择候选节点进行重调度,能够保证应用实例的分布的均衡性。
S103、确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表。
本实施例中,先确定第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表。
具体地,根据应用场景的不同,应用实例的驱逐权重的确定方式不同。
作为一种示例,为了更为科学地得到应用实例的驱逐权重,综合多个因素设置应用实例的驱逐权重,“确定所述第一候选列表中每个应用实例的驱逐权重”的方式为根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重。
其中,预设的资源负载权重从事先配置的重调度服务的配置信息中获取,例如,在配置信息所配置的节点各类资源的资源负载权重包括但不限于磁盘权重、CPU权重、内存权重。
其中,实时对节点、应用实例进行监控。监控到的与每个应用实例对应的节点的资源信息包括但不限于与每个应用实例对应的节点的总CPU数、总内存数、总数据盘大小。监控到的每个应用实例的资源使用值包括但不限于每个应用实例的磁盘使用值、CPU使用值、内存使用值。
作为一种示例,根据公式w=(s1/q1*w1+s2/q2*w2+s3/q3*w3)*k1*k2确定第一候选列表中每个应用实例的驱逐权重。
其中,w为每个应用实例的驱逐权重;w1为CPU权重;w2为内存权重;w3为磁盘权重;q1为每个应用实例对应的节点的总CPU数;q2为每个应用实例对应的节点的总内存数;q3为每个应用实例对应的节点的总数据盘大小;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;k1为可驱逐系数;k2为奖惩系数,CPU权重、内存权重、磁盘权重相加100%。
其中,可驱逐系数表征应用实例是否可驱逐。根据应用场景的不同,可驱逐系数的设置不同。作为一种示例,可驱逐系数的取值分别为1、0.5、0,可驱逐系数通过读取系统文件进行设置。
当应用实例的可驱逐系数的取值为1时,说明在系统文件中声明了该应用实例为明确说明可以随意驱逐的应用实例,配置了Readiness健康检查且有效实例数大于2。其中,Readiness健康检查可以更好的检测容器是否存活及能否对外提供服务。
当应用实例的可驱逐系数的取值为0.5时,说明在系统文件中声明了该应用实例挂载了emptyDir类型的存储卷、未配置了Readiness健康检查且有效实例数小于等于2。其中,emptyDir类型为用于管理云平台中多个主机上的容器化的应用kubernetes所支持的一种存储卷类型。
当应用实例的可驱逐系数的取值为0时,说明在系统文件中声明了该应用实例为daemonset类型的实例、挂了本地存储的实例、有效实例数为1的应用实例、明确声明不允许驱逐的实例。其中,daemonset类型为用于管理云平台中多个主机上的容器化的应用kubernetes中kind值。
其中,奖惩系数衡量是奖励应用实例还是惩罚应用实例的程度。当奖惩系数大于1时,说明应用实例的资源使用值大于资源请求值,该应用实例是资源超规格的应用实例,是导致节点故障的重要原因,对资源超规格的应用实例进行惩罚;当奖惩系数小于等于1时,说明应用实例的资源使用值小于等于资源请求值,对符合规格的应用实例进行奖励。在驱逐权重中结合奖惩系数实现对应用实例进行奖惩性驱逐。
作为一种可能的实现方式,“每个应用实例的奖惩系数的获取方式”为:根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数。
其中,预设的资源负载权重从事先配置的重调度服务的配置信息中获取,例如,在配置信息所配置的节点各类资源的资源负载权重包括但不限于磁盘权重、CPU权重、内存权重。
其中,对应用实施实时进行监控。监控到的每个应用实例的资源使用值包括但不限于每个应用实例的磁盘使用值、CPU使用值、内存使用值,监控到的每个应用实例的资源请求值包括但不限于每个应用实例的磁盘请求值、CPU请求值、内存请求值。
作为一种示例,根据公式k2=s1/t1*w1+s2/t2*w2+s3/t3*w3获取每个应用实例的奖惩系数;
其中,w1为CPU权重;w2为内存权重;w3为磁盘权重;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;t1为每个应用实例的CPU请求值;t2为每个应用实例的内存请求值;t3为每个应用实例的磁盘请求值,,CPU权重、内存权重、磁盘权重相加100%。
S104、对所述第二候选列表中的应用实例进行重调度。
具体的,驱逐权重越大的应用实例,消耗的节点资源越多,优选对驱逐权重大的应用实例进行诸如驱逐操作等重调度,实现有效且低风险的驱逐。
进一步地,在第二候选列表中排序靠前的应用实例消耗的节点资源较多,为了提高资源重调度的效率,可以选择第二候选列表中的部分候选节点进行重调度,步骤S104的具体为:对所述第二候选列表中排在前面的N个应用实例进行重调度。其中,N为正整数,根据实际情形进行设定。
为了进一地提高资源重调度的效率,对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
其中,每批重调度的应用实例的数量根据实际情形进行设定,若每批重调度的应用实例的数量设置过大,一次性调度的应用实例过多,容易引发系统震荡,若设置过小,影响重调度的效率。其中,M为正整数。可以从配置信息获取单次重调度最大迁移实例数,将单次重调度最大迁移实例数设定为M。
例如,N=99,M=5,每批重调度的应用实例的数量可以为1、2、3、4、5个。若设定各个批次重调度的应用实例的数量为5,则分20批进行重调度,每批重调度的应用实例为5个。其中,第1至19批的各批的重调度的应用实例的实际数量为5个,第20批的重调度的应用实例的实际数量为4个。
具体的,对第二候选列表中的应用实例分批进行重调度,每次对数量小于或等于M的应用实例进行重调度,本次重调度完成后,在对下一次数量为小于或等于M的应用实例进行重调度,直至第二候选列表中排在前面的N个的应用实例重调度完毕。
进一步地,在对所述第二候选列表中的应用实例进行重调度之后,所述方法还包括:
获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;判断所述重调度后的方差是否满足所述第一预设条件;若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
具体的,在对第二候选列表中的应用实例重调度完毕之后,对本次重调度进行资源分布均衡性评估,如果重调度的效果不好,则重新调整第一预设条件,重新执行步骤S101至S104直至重调度的效果达到期望的效果。
本发明实施例提供的资源重调度方法,通过接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;对所述第二候选列表中的应用实例进行重调度。由此,基于资源负载系数、驱逐权重对实现对节点的应用实例进行重调度,实现自动修正应用实例的分布,通过动态调整机制随时调整节点上应用实例的分布的均衡性,提高集群的可靠性。
在实际情形中,可能会存在禁止驱逐的应用实例,若对禁止驱逐的应用实例进行重调度,风险较大,会影响业务的稳定性。下面结合图2对该情形进行说明。
图2为本发明实施例提供的又一种资源重调度方法的流程示意图。结合参考图2,在图1所示的实施例的基础上,在步骤S103之前,该资源重调度方法还包括以下步骤:
S105、判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例。
S106、若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
本实施例中,为了降低驱逐风险,保证业务的稳定性,在确定第一候选列表中每个应用实例的驱逐权重之前,筛除第一候选列表具有表征禁止驱逐的可驱逐系数的应用实例。
具体地,参见图1所示的实施例对可驱逐系数的介绍,不同的可驱逐系数的意义不同。
以可驱逐系数的取值分别为1、0.5、0为例:当应用实例中的可驱逐系数为0,该应用实例为禁止驱逐的实例,驱逐该应用实例存在高风险,影响业务的稳定性。当应用实例中的可驱逐系数为1、0.5,该应用实例为可以驱逐的实例,驱逐该应用实例风险较低,对业务的稳定性较小。
本发明实施例提供的资源重调度方法,在确定第一候选列表中每个应用实例的驱逐权重之前,筛除第一候选列表具有表征禁止驱逐的可驱逐系数的应用实例,尽可能地避免无差别的应用实例驱逐,降低驱逐风险,尽量避免粗暴驱逐导致的业务中断,保证业务的稳定性。
图3为本发明实施例提供的又一种资源重调度方法的流程示意图。为了更好地理解本发明的资源重调度方法,结合图3对本发明提供的资源重调度方法进行说明。
需要指出的是,事先在kubernetes集群上通过deployment的方式部署重调度服务,并给与pods/nodes的get/watch/lists权限,同时给与pods资源post/delete的权限。
如图3所示,该资源重调度方法主要包括以下步骤:
第一步、配置重调度参数,主要包括:重调度触发时间或频率、节点各类资源的负载权重、节点资源负载系数方差阈值、单次重调度最大迁移实例数等;
第二步、配置设置定时触发、监听节点事件。其中,事先配置需监听的节点事件,节点事件例如节点加入、离线等事件。
第三步、等待重调度触发。具体的,等待定时任务触发或节点事件触发重调度。
第四步、是否需要重调度。如果上次重调度未完成,则忽略本次重调度,返回执行第三步。如果上次重调度完成,执行第五步。
第五步、计算集群内各Ready状态节点的资源负载系数及方差。
第六步、方差超过方差阈值。如果方差大于设定的方差阈值,则说明当前实例分布情况较不均匀,需要真正地触发重调度,执行步骤第七步;否则说明当前实例分布情况比较均匀,不需要进行重调度,返回执行第三步。
第七步、计算需要参与本次重调度的节点列表。
具体的,通过节点的资源负载系数平均值对集群中的节点进行筛选,得到参与本次重调度的节点列表。
第八步、计算各节点上运行实例的驱逐权重。
第九步、剔除不适合驱逐的实例。
第十步、对超规格实例进行惩罚,调整驱逐权重。
具体的,在第十步之前,通过监控系统实时记录各实例的资源使用情况,记录资源超过配额的实例。
第十一步、对所有节点实例的重调度权重(即驱逐权重)排序。
第十二步、按设定参数筛选出TOPN的实例参与本次重调度。
具体的,TOPN可以理解为排序靠前的若干个。从排序后的节点列表中选出若干个实例参与本次重调度。
第十三步、按设定的并发数进行实例的逐批驱逐。
具体的,并发数例如为10个,TOPN例如为100个,对100个实例逐批驱逐,每批驱逐10个。
第十四步、是否完成迁移,若是,执行第十五步、若否,返回执行第十三步。
具体的,完成迁移可以理解为对TOPN的实例全部完成重调度。
第十五步、记录本次重调度的详细过程用于审计。
具体的,记录重调度前后的各节点参数,用于效果评估,如果重调度效果不佳,可以通过调整第一步中配置信息的各个参数来达到期望的效果。
图4为本发明实施例提供的一种资源重调度装置的结构示意图。如图4所示,该资源重调度装置包括:触发模块10、获取模块11、第一确定模块12、第二确定模块13、重调度模块14。
触发模块10,用于接收资源重调度请求;
获取模块11,用于获取集群上所有节点的资源负载系数的方差;
第一确定模12块,用于若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;
第二确定模块13,用于确定所述第一候选列表中每个应用实例的驱逐权重;
排序模块,用于根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;
重调度模块14,用于对所述第二候选列表中的应用实例进行重调度。
在一种可能的实现方式中,所述第一确定模块11包括:
计算单元,用于计算集群上所有节点的资源负载系数的平均值;
获取单元,用于获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;
确定单元,用于根据一个或多个所述候选节点确定所述第一候选列表。
在一种可能的实现方式中,所述重调度模块14具体用于:
对所述第二候选列表中排在前面的N个应用实例进行重调度。
在一种可能的实现方式中,所述重调度模块14具体用于:对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
在一种可能的实现方式中,所述第二确定模块具体用于:
根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重。
在一种可能的实现方式中,所述预设的资源负载权重包括磁盘权重、CPU权重、内存权重,所述每个应用实例对应的节点的资源信息包括CPU数、总内存数、总数据盘大小,所述每个应用实例的资源使用值包括磁盘使用值、CPU使用值、内存使用值;
所述第二确定模块13具体用于:根据公式w=(s1/q1*w1+s2/q2*w2+s3/q3*w3)*k1*k2确定第一候选列表中每个应用实例的驱逐权重;
其中,w为每个应用实例的驱逐权重;w1为CPU权重;w2为内存权重;w3为磁盘权重;q1为每个应用实例对应的节点的总CPU数;q2为每个应用实例对应的节点的总内存数;q3为每个应用实例对应的节点的总数据盘大小;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;k1为可驱逐系数;k2为奖惩系数。
在一种可能的实现方式中,所述第二确定模块13还用于:
根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数。
在一种可能的实现方式中,所述第二确定模块13还具体用于:
根据公式k2=s1/t1*w1+s2/t2*w2+s3/t3*w3获取每个应用实例的奖惩系数;
其中,w1为CPU权重;w2为内存权重;w3为磁盘权重;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;t1为每个应用实例的CPU请求值;t2为每个应用实例的内存请求值;t3为每个应用实例的磁盘请求值。
在一种可能的实现方式中,所述装置还包括:
判断模块,用于在确定所述第一候选列表中每个应用实例的驱逐权重之前,判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例;
筛除模块,用于若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
在一种可能的实现方式中,所述获取模块11,还用于在对所述第二候选列表中的应用实例进行重调度之后,获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;
所述第一确定模块12,还用于判断所述重调度后的方差是否满足所述第一预设条件,若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
在一种可能的实现方式中,所述第一预设条件根据资源重调度情况设定。
在一种可能的实现方式中,所述触发模块10具体用于:通过定时触发或事件触发的方式接收所述资源重调度请求。
需要说明的是,前述对资源重调度方法实施例的解释说明也适用于该实施例的资源重调度装置,此处不再赘述。
本发明实施例的资源重调度装置,通过接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;对所述第二候选列表中的应用实例进行重调度。由此,基于资源负载系数、驱逐权重对实现对节点的应用实例进行重调度,实现自动修正应用实例的分布,通过动态调整机制随时调整节点上应用实例的分布的均衡性,提高集群的可靠性。
图5为本发明实施例提供的另一种资源重调度装置的结构示意图。该资源重调度装置包括:
存储器1001、处理器1002及存储在存储器1001上并可在处理器1002上运行的计算机程序。
处理器1002执行所述程序时实现上述实施例中提供的资源重调度方法。
进一步地,资源重调度装置还包括:
通信接口1003,用于存储器1001和处理器1002之间的通信。
存储器1001,用于存放可在处理器1002上运行的计算机程序。
存储器1001可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
处理器1002,用于执行所述程序时实现上述实施例所述的资源重调度方法。
如果存储器1001、处理器1002和通信接口1003独立实现,则通信接口1003、存储器1001和处理器1002可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandardArchitecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1001、处理器1002及通信接口1003,集成在一块芯片上实现,则存储器1001、处理器1002及通信接口1003可以通过内部接口完成相互间的通信。
处理器1002可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
本发明还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的资源重调度方法。
本发明还提供一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现如上所述的资源重调度方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (19)
1.一种资源重调度方法,其特征在于,包括:
接收资源重调度请求,获取集群上所有节点的资源负载系数的方差;
若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;
确定所述第一候选列表中每个应用实例的驱逐权重,并根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表,其中,所述确定所述第一候选列表中每个应用实例的驱逐权重包括:根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重,所述每个应用实例的奖惩系数的获取方式为:根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数;
对所述第二候选列表中的应用实例进行重调度。
2.根据权利要求1所述的方法,其特征在于,所述根据集群上所有节点的资源负载系数的平均值确定第一候选列表,包括:
计算集群上所有节点的资源负载系数的平均值;
获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;
根据一个或多个所述候选节点确定所述第一候选列表。
3.根据权利要求1所述的方法,其特征在于,所述对所述第二候选列表中的应用实例进行重调度,包括:
对所述第二候选列表中排在前面的N个应用实例进行重调度。
4.根据权利要求3所述的方法,其特征在于,所述对所述第二候选列表中排在前面的N个应用实例进行重调度,包括:
对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
5.根据权利要求1所述的方法,其特征在于,所述预设的资源负载权重包括磁盘权重、CPU权重、内存权重,所述每个应用实例对应的节点的资源信息包括CPU数、总内存数、总数据盘大小,所述每个应用实例的资源使用值包括磁盘使用值、CPU使用值、内存使用值;
所述根据所述预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重,包括:
根据公式w=(s1/q1*w1+s2/q2*w2+s3/q3*w3)*k1*k2确定第一候选列表中每个应用实例的驱逐权重;
其中,w为每个应用实例的驱逐权重;w1为CPU权重;w2为内存权重;w3为磁盘权重;q1为每个应用实例对应的节点的总CPU数;q2为每个应用实例对应的节点的总内存数;q3为每个应用实例对应的节点的总数据盘大小;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;k1为可驱逐系数;k2为奖惩系数。
6.根据权利要求1所述的方法,其特征在于,所述根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数,包括:
根据公式k2=s1/t1*w1+s2/t2*w2+s3/t3*w3获取每个应用实例的奖惩系数;
其中,w1为CPU权重;w2为内存权重;w3为磁盘权重;s1为每个应用实例的CPU使用值;s2为每个应用实例的内存使用值;s3为每个应用实例的磁盘使用值;t1为每个应用实例的CPU请求值;t2为每个应用实例的内存请求值;t3为每个应用实例的磁盘请求值。
7.根据权利要求1所述的方法,其特征在于,在确定所述第一候选列表中每个应用实例的驱逐权重之前,还包括:
判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例;
若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
8.根据权利要求1所述的方法,其特征在于,在对所述第二候选列表中的应用实例进行重调度之后,还包括:
获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;
判断所述重调度后的方差是否满足所述第一预设条件;
若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
9.根据权利要求1所述的方法,其特征在于,所述第一预设条件根据资源重调度情况设定。
10.根据权利要求1所述的方法,其特征在于,所述接收资源重调度请求包括:
通过定时触发或事件触发的方式接收所述资源重调度请求。
11.一种资源重调度装置,其特征在于,包括:
触发模块,用于接收资源重调度请求,
获取模块,用于获取集群上所有节点的资源负载系数的方差;
第一确定模块,用于若所述方差不满足第一预设条件,则根据集群上所有节点的资源负载系数的平均值确定第一候选列表,所述第一候选列表中包括一个或多个候选节点,每个候选节点包括一个或多个应用实例;
第二确定模块,用于确定所述第一候选列表中每个应用实例的驱逐权重,所述第二确定模块具体用于:根据预设的资源负载权重、每个应用实例对应的节点的资源信息、每个应用实例的资源使用值、可驱逐系数和奖惩系数,确定所述第一候选列表中每个应用实例的驱逐权重,所述第二确定模块还用于:根据预设的资源负载权重、每个应用实例的资源使用值和资源请求值获取每个应用实例的奖惩系数;
排序模块,用于根据驱逐权重从大到小的顺序对所述候选列表中的应用实例进行排序,从而得到第二候选列表;
重调度模块,用于对所述第二候选列表中的应用实例进行重调度。
12.根据权利要求11所述的装置,其特征在于,所述第一确定模块包括:
计算单元,用于计算集群上所有节点的资源负载系数的平均值;
获取单元,用于获取节点资源负载系数与所述平均值的差值不满足第二预设条件的一个或多个候选节点;
确定单元,用于根据一个或多个所述候选节点确定所述第一候选列表。
13.根据权利要求11所述的装置,其特征在于,所述重调度模块具体用于:
对所述第二候选列表中排在前面的N个应用实例进行重调度。
14.根据权利要求13所述的装置,其特征在于,所述重调度模块具体用于:
对所述第二候选列表中排在前面的N个应用实例进行分批重调度,每批重调度的应用实例的数量小于或等于M个。
15.根据权利要求11所述的装置,其特征在于,所述装置还包括:
判断模块,用于在确定所述第一候选列表中每个应用实例的驱逐权重之前,判断所述第一候选列表中是否存在具有表征禁止驱逐的可驱逐系数的应用实例;
筛除模块,用于若存在,则从所述第一候选列表中筛除具有表征禁止驱逐的可驱逐系数的应用实例。
16.根据权利要求11所述的装置,其特征在于,
所述获取模块,还用于在对所述第二候选列表中的应用实例进行重调度之后,获取重调度后的集群上所有节点的资源负载系数的重调度后的方差;
所述第一确定模块,还用于判断所述重调度后的方差是否满足所述第一预设条件,若否,则重复执行上述步骤,直至重调度后的方差满足所述第一预设条件。
17.根据权利要求11所述的装置,其特征在于,所述触发模块具体用于:通过定时触发或事件触发的方式接收所述资源重调度请求。
18.一种资源重调度装置,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-10中任一所述的资源重调度方法。
19.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一所述的资源重调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910565109.2A CN110347503B (zh) | 2019-06-27 | 2019-06-27 | 资源重调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910565109.2A CN110347503B (zh) | 2019-06-27 | 2019-06-27 | 资源重调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347503A CN110347503A (zh) | 2019-10-18 |
CN110347503B true CN110347503B (zh) | 2021-07-30 |
Family
ID=68183350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910565109.2A Active CN110347503B (zh) | 2019-06-27 | 2019-06-27 | 资源重调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347503B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112468590B (zh) * | 2020-11-27 | 2023-02-07 | 杭州海康威视系统技术有限公司 | 一种存储资源挂载方法和装置 |
CN113568746B (zh) * | 2021-07-27 | 2024-01-02 | 北京达佳互联信息技术有限公司 | 负载均衡方法、装置、电子设备及存储介质 |
CN113709241B (zh) * | 2021-08-26 | 2024-01-23 | 上海德拓信息技术股份有限公司 | 一种云场景下物理资源的调度分配组合方法与系统 |
CN113835840A (zh) * | 2021-09-28 | 2021-12-24 | 广东浪潮智慧计算技术有限公司 | 一种集群资源管理方法、装置、设备及可读存储介质 |
CN114546610B (zh) * | 2022-01-17 | 2022-11-18 | 山西省信息通信网络技术保障中心 | 一种海量数据分布式脱敏装置 |
CN116028208B (zh) * | 2022-05-16 | 2023-10-20 | 荣耀终端有限公司 | 系统负载确定方法、装置、设备和存储介质 |
CN115145695B (zh) * | 2022-08-30 | 2022-12-06 | 浙江大华技术股份有限公司 | 资源调度方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185779A (zh) * | 2011-05-11 | 2011-09-14 | 田文洪 | 与综合配置能力成比例的数据中心资源负载均衡的方法及装置 |
CN103428102A (zh) * | 2013-08-06 | 2013-12-04 | 北京智谷睿拓技术服务有限公司 | 在分布式网络中实现动态负载平衡的方法和系统 |
CN108009016A (zh) * | 2016-10-31 | 2018-05-08 | 华为技术有限公司 | 一种资源负载均衡控制方法及集群调度器 |
US10255124B1 (en) * | 2013-06-21 | 2019-04-09 | Amazon Technologies, Inc. | Determining abnormal conditions of host state from log files through Markov modeling |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2665234B1 (en) * | 2011-06-15 | 2017-04-26 | Huawei Technologies Co., Ltd. | Method and device for scheduling service processing resource |
-
2019
- 2019-06-27 CN CN201910565109.2A patent/CN110347503B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185779A (zh) * | 2011-05-11 | 2011-09-14 | 田文洪 | 与综合配置能力成比例的数据中心资源负载均衡的方法及装置 |
US10255124B1 (en) * | 2013-06-21 | 2019-04-09 | Amazon Technologies, Inc. | Determining abnormal conditions of host state from log files through Markov modeling |
CN103428102A (zh) * | 2013-08-06 | 2013-12-04 | 北京智谷睿拓技术服务有限公司 | 在分布式网络中实现动态负载平衡的方法和系统 |
CN108009016A (zh) * | 2016-10-31 | 2018-05-08 | 华为技术有限公司 | 一种资源负载均衡控制方法及集群调度器 |
Non-Patent Citations (2)
Title |
---|
Application Research on the Simulated Annealing in Balance Optimization of Multi-Resource Network Planning;Nansheng Pang等;《2008 Second International Symposium on Intelligent Information Technology Application》;20081222;第113-117页 * |
一种兼顾负载均衡的Hadoop集群动态节能方法;田文洪等;《清华大学学报(自然科学版)》;20161115;第56卷(第11期);第1226-1231页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110347503A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347503B (zh) | 资源重调度方法及装置 | |
US7882230B2 (en) | Method and system for dynamically allocating servers to compute-resources using capacity thresholds | |
CN109586952B (zh) | 服务器扩容方法、装置 | |
CN102281329B (zh) | 一种PaaS云平台的资源调度方法和系统 | |
CN111694515B (zh) | 一种基于ZNS固态硬盘的zone写分发方法及系统 | |
US7428210B2 (en) | Fail over method and a computing system having fail over function | |
CN107453929B (zh) | 集群系统自构建方法、装置及集群系统 | |
CN106789308B (zh) | 一种微服务架构可自动伸缩的gis服务装置及其控制方法 | |
CN113835865B (zh) | 一种任务部署方法和装置、电子设备和存储介质 | |
CN105138371B (zh) | 软件升级方法及装置 | |
CN109739527B (zh) | 一种客户端灰度发布的方法、装置、服务器和存储介质 | |
CN113867959A (zh) | 一种训练任务资源调度方法、装置、设备及介质 | |
CN114356558A (zh) | 一种基于集群的缩容处理方法及装置 | |
CN112068935B (zh) | kubernetes程序部署监控方法、装置以及设备 | |
CN106789193A (zh) | 一种集群投票仲裁方法及系统 | |
CN115242598A (zh) | 一种云操作系统部署方法及装置 | |
CN109726124A (zh) | 测试系统、测试方法、管理装置、测试装置及计算设备 | |
CN113485933A (zh) | 自动化测试方法和分布式系统 | |
CN113703975A (zh) | 模型分配方法、装置、电子设备及计算机可读存储介质 | |
CN110516121A (zh) | 数据读取方法及装置 | |
CN116126937A (zh) | 作业调度方法、装置、电子设备及存储介质 | |
CN109729136A (zh) | 代理服务器发布方法和发布服务器 | |
CN112199247B (zh) | 一种无业务状态下Docker容器进程活性的检查方法及装置 | |
CN110851286A (zh) | 线程管理方法、装置、电子设备及存储介质 | |
CN106686082A (zh) | 存储资源调整方法及管理节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |