CN114090235A - 一种云平台动态负载均衡方法 - Google Patents
一种云平台动态负载均衡方法 Download PDFInfo
- Publication number
- CN114090235A CN114090235A CN202111243655.8A CN202111243655A CN114090235A CN 114090235 A CN114090235 A CN 114090235A CN 202111243655 A CN202111243655 A CN 202111243655A CN 114090235 A CN114090235 A CN 114090235A
- Authority
- CN
- China
- Prior art keywords
- load
- node
- average
- resource
- score
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 230000005540 biological transmission Effects 0.000 claims description 54
- 239000002131 composite material Substances 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 2
- 238000003780 insertion Methods 0.000 description 13
- 230000037431 insertion Effects 0.000 description 13
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 230000002085 persistent effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供的一种云平台动态负载均衡方法,所述均衡方法包括:设置资源规格系数、需求权值因子、监控周期阈值;根据所述监控周期阈值和所述资源规格系数收集负载信息;根据所述负载信息和所述需求权值因子计算各资源负载均值;根据所述各资源负载均值计算各资源得分;根据所述各资源得分计算各节点的综合得分;判断所述综合得分是否大于零,如果是,建立低负载队列;否则,建立高负载队列,获得建立队列信息;根据所述建立队列信息对动态负载进行均衡控制,获得均衡控制结果;根据所述均衡控制结果进行资源调度和配置。能够动态调整宿主机资源状况,提高集群的负载均衡程度,并尽量较少调度算法的时间复杂度。
Description
技术领域
本发明涉及容器云平台领域,尤其涉及一种云平台动态负载均衡方法。
背景技术
本研究基于Kubernetes云平台特点并动态负载均衡关键技术和相关算法展开深入研究,设计一种适合Kubernetes的动态负载均衡方法。
动态负载均衡是指周期性检测工作节点和集群的负载状况,根据收集的负载信息来决定调度策略,使集群中各工作节点的负载更加均衡。
在动态负载均衡算法中,主要关注四方面内容。
(1)负载分析,根据各节点的己分配资源和剩余资源状况分析集群的平均负载状况,再根据集群的负载均值来衡量各宿主机的负载程度,因此必须要有一个准确的负载衡量标准才能正确的对集群内各工作节点做出评价。
(2)信息收集,算法中不仅需要指定一个合适的周期来收集负载信息,还需要考虑收集哪些资源信息,如何收集这些信息,以及怎么管理收集的负载信息,这都是信息收集关注的。
(3)触发方式,即何时触发动态负载均衡调度,触发的方式可以采用外部事件驱动的方式,也可以采用阈值的方式。
(4)调度策略,这是动态负载均衡最重要的部分,主要是考虑哪些节点负载过重需要进行重调度,将该节点的哪些任务迁移到负载较轻的节点上,以及如何进行迁移。
动态负载均衡算法,除了传统的动态负载均衡算法,最小链接法、加权最小链接法、启发式算法等,国内外有大量改进的动态负载均衡算法,如:负载最轻综合负载算法、综合利用率乘积法、预先设定加权系数、综合负载基准对比法、动态反馈综合负载均衡法等。
加权最小链接算法,最小链接算法是将用户作业分配到节点链接数最小的节点上,这种算法虽然实现简单,但是在面对各工作节点规格不一、性能各异的场景下算法效果并不理想。为了弥补这个缺陷,出现了加权最小链接算法,该算法根据各节点的规格情况设置 WEIGHT,工作节点的负载程度P用节点的连接率与WEIGHT的比值作为衡量标准,P值越大负载程度越高,但是遗憾的是加权最小链接算法在面对资源需求不一的任务时仍然问题明显。
启发式调度算法,云计算的资源调度是一个NP-hard问题,需要从最短运行时间、最少迁移次数、最小成本等多方面考虑,而启发式算法的优点就是进行多目标优化和求解多解问题。常见的启发式算法有遗传算法、粒子群算法、蚁群算法、神经网络算法等,现在有很多研究人员使用遗传算法和粒子群算法来优化资源调度问题,但是启发式算法在面对云平台资源调度这种复杂问题时,计算量较大,响应时间较长,而且算法的实现过于复杂。
现有技术中的资源调度算法都存在局限性,现在有大量的动态负载均衡的改进算法。例如:预先设定加权系数,该算法通过实时采集节点负载信息对工作节点进行加权动态平衡调度,但是这种预先设置权值的方法无法准确反映多个因素造成的不均衡情况。
上述的算法大多在应对任务资源需求不一和节点性能差异的场景下很难实现负载均衡,有些算法可以实现较好的负载均衡效果,但是算法太过复杂,调度时间较长,实现不易。
发明内容
鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种云平台动态负载均衡方法。
根据本发明的一个方面,提供了一种云平台动态负载均衡方法,所述均衡方法包括:
设置资源规格系数、需求权值因子、监控周期阈值;
根据所述监控周期阈值和所述资源规格系数收集负载信息;
根据所述负载信息和所述需求权值因子计算各资源负载均值;
根据所述各资源负载均值计算各资源得分;
根据所述各资源得分计算各节点的综合得分;
判断所述综合得分是否大于零,如果是,建立低负载队列;否则,建立高负载队列,获得建立队列信息;
根据所述建立队列信息对动态负载进行均衡控制,获得均衡控制结果;
根据所述均衡控制结果进行资源调度和配置。
可选的,所述根据所述负载信息和所述需求权值因子计算各资源负载均值具体包括:
一个工作节点的CPU的使用率cpuUse,为对应节点的CPU在一个采集周期的平均利用率;一个集群CPU的负载均值averageCpuUse 是指在一段时间内整个集群CPU平均使用率的加权平均值;
集群CPU负载均值averageCpuUse由节点的CPU规格系数加权平均表示为:
其中αi是第i个节点的CPU规格系数,i∈{1,2,...,i,...,n};
一个工作节点的内存的使用率memory Use;为对应节点的内存在一个采集周期内的平均利用率;一个集群内存的负载均 averageMemory Use是指在一段时间内整个集群内存平均使用率的加权平均值;
集群内存负载均值averageMemory Us由指该节点的内存规格系数加权平均表示为:
其中imageNetRatei是第i个节点的内存规格系数,
i∈{1,2,...,n};
一个集群镜像网络的传输均值averagelmageNetRate是指在一个采集周期,各节点与镜像存储系统的平均传输速度imageNetRatei的算术平均值,averagelmageNetRate表示为:
其中imageNetRatei是第i个节点的内存规格系数,
i∈{1,2,...,n};
一个集群数据网络的传输均值averageDataNetRate是指在一个采集周期各节点与数据存储系统的平均传输速度dataNetRate;的算术平均值,averageDataNetRate表示为:
其中dateNetRatei是第i个节点与数据存储系统的平均传输速度, i∈{1,2,...,n}。
可选的,所述根据所述各资源负载均值计算各资源得分具体包括:
第i个节点的CPU得分cpuScore,等于对应宿主机的CPU利用率与集群的CPU负载均值之比,表示为
第i个节点的内存得分memoryScore,等于这台宿主机的内存利用率与集群的内存负载均值之比,表示为
第i个节点的镜像传输速度得分imageNetScore,等于这台宿主机的镜像平均传输速度与集群的镜像网络负载均值之比,表示为
第i个节点的数据传输速度得分dataNetScore,等于这台宿主机的数据平均传输速度与集群的数据网络负载均值之比,表示为
各资源的得分取值区间是[0,∞],用cpuScorei来举例说明资源得分的具体含义,其它资源的得分含义类似,cpuScorei的分值大于1 表示该节点的CPU负载情况优于集群的CPU平均负载程度,小于1 则情况反之,资源得分越高,资源情况越好。
可选的,所述根据所述各资源得分计算各节点的综合得分具体包括:
对于CPU敏感型应用,在计算节点的综合得分的时候,应适度调高CPU的权值因子;权值因子向量表示为:
Δ=(λcpu,λmemory,λimageNet,λdataNet)
其中
λcpu+λmemory+λimageNet+λdataNet=1
该向量的各元素表示相对应的资源对节点综合得分的贡献度;
节点的综合得分scorei计算公式如下:
scorei=10×[λcpu(ln couScorei)+λmemory(ln memoryScorei)
+λimageNet(ln imageNetScorei)
+λdataNet(ln dataNetScorei)]
对于CPU和内存来说,公式中对应的项的值大于0为该类资源的负载小于集群的负载均值,小于0表示负载程度劣于集群平均状况;对于镜像网络传输速度和数据网络传输速度来说,大于0为网络传输的平均速度快于集群的平均网络传输速度,反之则相反;
当scorei大于0时表示该节点的综合负载情况优于集群的综合负载平均状况,将该节点作为任务迁入对象;当scorei小于0时表示该节点的综合负载相对于集群的综合负载均值状况较差,将该节点作为任务迁出对象,选择一部分Pod进行重新调度。
本发明提供的一种云平台动态负载均衡方法,所述均衡方法包括:设置资源规格系数、需求权值因子、监控周期阈值;根据所述监控周期阈值和所述资源规格系数收集负载信息;根据所述负载信息和所述需求权值因子计算各资源负载均值;根据所述各资源负载均值计算各资源得分;根据所述各资源得分计算各节点的综合得分;判断所述综合得分是否大于零,如果是,建立低负载队列;否则,建立高负载队列,获得建立队列信息;根据所述建立队列信息对动态负载进行均衡控制,获得均衡控制结果;根据所述均衡控制结果进行资源调度和配置。能够动态调整宿主机资源状况,提高集群的负载均衡程度,并尽量较少调度算法的时间复杂度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种云平台动态负载均衡方法的流程图;
图2为本发明实施例提供的负载队列示例图;
图3为本发明实施例提供的动态调度触发条件。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,一种云平台动态负载均衡方法,所述均衡方法包括:
设置资源规格系数、需求权值因子、监控周期阈值。
根据所述监控周期阈值和所述资源规格系数收集负载信息。
根据所述负载信息和所述需求权值因子计算各资源负载均值。
根据所述各资源负载均值计算各资源得分。
根据所述各资源得分计算各节点的综合得分。
判断所述综合得分是否大于零,如果是,建立低负载队列;否则,建立高负载队列,获得建立队列信息。
根据所述建立队列信息对动态负载进行均衡控制,获得均衡控制结果。
根据所述均衡控制结果进行资源调度和配置。
一、优选策略设计
Kubernetes现有的优选策略中无论是LeastRequestedPriority策略还是BalancedResourcAllocation策略都是静态调度的优选策略,并不适合衡量系统的负载均衡程度,而且没有考虑在实际应用场景,Pod 在调度运行后需要与持久化存储系统进行数据传输和从镜像存储系统下载镜像。本节综合考虑CPU、内存、镜像网络下载速度、持久化存储网络传输速度四方面因素设计了一种更能准确衡量集群系统的资源状况的优选策略ImprovedLoadB alancePriority。
(1)节点资源的数学表示
为了量化评价各节点资源状况的优劣,根据评价标准进行资源调度,需要将节点的资源状况用数学表示式来表达。本设计为了简化模型,研究对象为一个具有n台物理机或虚拟机的集群,由于容器云平台的底层既可以是物理机也可以是虚拟机,所以这里不加区分,统称为宿主机或工作节点,本设计主要考虑CPU、内存、网络对调度策略的影响。
1.CPU和内存的数学表示
集群内的n个工作节点表示为
N={N1,N2,N3,...,Nn}i∈{1,2,3,...,i,...n},各工作节点的资源规格表示为:
P={p(1),p(2),p(3),…,p(n)}
集群内标号为i的工作节点资源规格表示为:
其中ci,mi分别表示第i个节点的CPU配额、内存配额。
假设各节点的规格系数向量为:
Λ={λ(1),λ(2),λ(3),…,λ(n)}
其中:
αi,βi分别表示编号为i的工作节点的CPU和内存的规格系数。
第i个节点的资源规格可表示为
其中是一个对角矩阵,CPU,MEM是常量系数。衡量节点的资源优劣是通过规格系数λ(i),性能越好的节点规格系数越高。例如对于一台双核2G内存的节点和一台4核8G内存的节点,可将二者的规格系数分别设置为:
因此集群内各节点的资源规格可以表示为:
P={Qλ(1),Qλ(2),Qλ(3),…,Qλ(n)}=QΛ
各节点的资源规格系数可以由系统管理员根据集群内各服务器的具体性能和物理配置情况进行设置。因为不同节点存在性能差异,通过这种设置规格系数的方式可以geshi将不同规格的工作节点区别对待。
2.网络资源的数学表示
Kubernetes调度器现有的资源调度策略是:将“待调度Pod需要的 CPU和内存加上候选节点上所有正在运行的Pod请求的CPU和内存”与“候选节点的CPU和内存总量”的比值作为衡量其节点资源状况的标准,比值最小的是得分最高的节点,也是调度的目的地。该调度策略只将CPU和内存视为资源调度的影响因素,
但是在实际应用中,网络传输速度的影响同样很大。调度器在创建Pod以后,要想Pod能够正常运行还需要两个基本步骤:
①工作节点需要根据Pod的资源描述文件指定的地址去下载Pod 中所有容器所需的镜像文件,而镜像下载速度直接影响了Pod的正常运行和业务的启动快慢。
②由于Pod的数据是临时的,Pod在被销毁时,其存储的数据也会消失,因此在Pod成功运行之后,需要为Pod中所有容器挂载持久化存储系统来进行数据的持久化存储,持久化存储与宿主机之间的网络传输速度,直接影响到Pod中运行的容器化应用的读写速度。
因此在本设计中将综合考虑CPU、内存、镜像网络下载速度、持久化存储网络传输速度四方面因素来决定Pod的调度目的地。
因为在实际应用中,网络传输速度一般都低于网络带宽,不同于一般动态负载反馈算法,本设计考虑网络平均传输速度,具体如下:
①各工作节点与镜像存储系统之间的镜像平均传输速度 imageNetRate;
②各工作节点与持久化存储系统之间的数据平均传输速度 dataNetRate。
通过日志系统分别采集集群中所有可用节点与存储系统的平均传输速度,并将结果以时间戳和数据组合的方式记录在系统日志中。
(2)ImprovedLoadB alancePriority策略的设计
ImprovedLoadBalancePriority策略通过系统中各资源的负载均值与节点的负载比值作为该节点的各资源得分,并据此计算综合得分,根据综合得分评判节点的资源状况。
1负载均值
一个工作节点的CPU的使用率cpuUse;是指该节点的CPU在一定时间内(通常为一个采集周期)的平均利用率;一个集群CPU的负载均值averageCpuUse是指在一段时间内整个集群CPU平均使用率的加权平均值。
集群CPU负载均值averageCpuUse由节点的CPU规格系数加权平均表示为:
其中αi是第i个节点的CPU规格系数,i∈{1,2,...,i,...,n}。
一个工作节点的内存的使用率memoryUse;是指该节点的内存在一定时间内的平均利用率;一个集群内存的负载均averageMemory Use是指在一段时间内整个集群内存平均使用率的加权平均值。
集群内存负载均值averageMemory Us由指该节点的内存规格系数加权平均表示为:
其中imageNetRatei是第i个节点的内存规格系数,
i∈{1,2,...,n}。
一个集群镜像网络的传输均值averagelmageNetRate是指在一段时间内(通常为一个采集周期)各节点与镜像存储系统的平均传输速度imageNetRatei的算术平均值,averagelmageNetRate可表示为:
其中imageNetRatei是第i个节点与镜像存储系统的平均传输速度,
i∈{1,2,...,n}。
一个集群数据网络的传输均值averageDataNetRate是指在一段时间内(通常为一个采集周期)各节点与数据存储系统的平均传输速度 dataNetRate;的算术平均值,averageDataNetRate可表示为:
其中dateNetRatei是第i个节点与数据存储系统的平均传输速度, i∈{1,2,...,n}。
相比于使用算术平均的方式,本设计使用加权平均的方式计算 CPU和内存的负载均值,考虑了不同节点的性能差别。而网络负载均值考虑到了两个方面,并且在计算网络负载均值使用的是平均传输速度的算术平均值,而不是网络带宽,更看重的是实际场景中的传输速度。
2.节点各资源得分
Kubernetes调度器default算法在计算节点资源得分时采用的方式是待调度Pod申请的资源与宿主机实际资源状态的对比作为评价标准,但是在实际环境中,大多数Pod实际的资源使用情况是远低于其在创建之时所申请的资源,这就会导致集群资源的浪费。之所以会发生这种情况,是因为用户在创建Pod之时无法准确的估计该应用需要多少资源,用户为了自己的应用有足够的资源一般都会为Pod尽可能多申请一点资源。
为了更准确的评价节点的资源状况,本设计将节点实际的资源情况和集群的负载均值作为各资源得分的依据。
第i个节点的CPU得分cpuScore,等于这台宿主机的CPU利用率与集群的CPU负载均值之比,表示为
第i个节点的内存得分memoryScore,等于这台宿主机的内存利用率与集群的内存负载均值之比,表示为
第i个节点的镜像传输速度得分imageNetScore,等于这台宿主机的镜像平均传输速度与集群的镜像网络负载均值之比,表示为
第i个节点的数据传输速度得分dataNetScore,等于这台宿主机的数据平均传输速度与集群的数据网络负载均值之比,表示为
各资源的得分取值区间是[0,∞],用cpuScorei来举例说明资源得分的具体含义,其它资源的得分含义类似,cpuScorei的分值大于1 表示该节点的CPU负载情况优于集群的CPU平均负载程度,小于1 则情况反之。资源得分越高,资源情况越好,通过这种方式可以判断节点相对于集群整体的相对负载程度。
3节点综合得分
在Kubernetes中,default算法的优选策略将各资源得分的算术平均值作为节点的综合得分。但是在集群环境中,不同类型的资源使用情况对宿主机的性能影响不同,不同种类的应用对资源的需求也不同,有些是高CPU消耗型,有些是高内存消耗型,甚至还有些是不需要与镜像存储系统和持久化数据存储系统进行数据交互的。因此这里引入了权值因子来表示节点的总得分受各资源的影响程度,某一资源对 Pod运行影响越大则该资源的权值因子越大。例如:对于CPU敏感型应用,在计算节点的综合得分的时候,应适度调高CPU的权值因子。权值因子向量表示为:
Δ=(λcpu,λmemory,λimageNet,λdataNet)
其中
λcpu+λmemory+λimageNet+λdataNet=1
该向量的各元素表示相对应的资源对节点综合得分的贡献度。
节点的综合得分scorei计算公式如下:
scorei=10×[λcpu(ln couScorei)+λmemory(ln memoryScorei)
+λimageNet(ln imageNetScorei)
+λdataNet(ln dataNetScorei)]
对于CPU和内存来说,公式中对应的项的值大于0表示该类资源的负载小于集群的负载均值,小于0表示负载程度劣于集群平均状况;对于镜像网络传输速度和数据网络传输速度来说,大于0表示网络传输的平均速度快于集群的平均网络传输速度,反之则相反。
当scorei大于0时表示该节点的综合负载情况优于集群的综合负载平均状况,可以将该节点作为任务迁入对象;当scorei小于0时表示该节点的综合负载相对于集群的综合负载均值状况较差,可以将该节点作为任务迁出对象,选择一部分Pod进行重新调度。
二、负载队列的实现
本文实现动态负载均衡的思路是:在调度器中建立两个负载队列:
高负载队列和低负载队列,将集群的所有节点按
ImprovedLoadBalancePriority计算的综合得分分为两个队列,得分3大于0的表示综合负载相对于集群较空闲,存储在低负载队列,小于0表示综合负载相对于集群较重,存储在高负载队列。通过周期检测集群的负载情况,将负载较高的节点的一些Pod迁移到负载较低的节点上,以保证集群的负载均衡。
在负载队列中,首先需要依次计算各节点的得分,向队列中插入节点,然后查找得分最高(或最低)的节点,最后删除该节点。因此我们采用优先队列来实现负载队列,优先队列和普通队列不同,普通队列是先进先出的,而优先队列中每次的插入和删除操作都会动态调整队列中各元素的位置,每次删除操作都会去除队列中权值最高(或最低)的节点。
对应在负载队列的三个基本操作,在优先队列中需要进行插入、删除、查找。共有三种方式实现优先队列:有序表、无序表和二叉堆。有序表插入的时间复杂度为O(n),删除的时间复杂度为O(1),这种方式适合插入操作多于删除操作的队列;无序表的插入和删除的时间复杂度与有序表相反,适合删除操作主导的队列。在负载队列中,插入和删除操作都较频繁,因此本设计采用第三种方式。
二叉堆来实现优先队列,二叉堆实现的优先队列插入和删除的时间复杂度都是O(log2 n),二叉堆实现的负载队列可以均衡算法的复杂度。
高负载队列和低负载队列都需要进行插入、查找、删除操作,高负载队列是将综合得分小于0的节点升序存储在队列中,而低负载队列是将综合得分大于0的节点降序存储,建立的负载队列示例如图2 所示。
这两个队列的基本操作类似,下面以高负载队列为例介绍该队列的基本操作,高负载队列是根据各节点的最终得分升序建立的最小堆。具体步骤如下:
根据节点和集群的负载信息计算该节点的最终得分;
若分值小于0,则将存储该节点相关信息的元素插入到二叉堆的末尾;
比较插入节点与父节点的得分大小,若父节点得分小于子节点的值,则交互二者的位置;
对于上述队列继续比较插入节点与父节点的分值情况,如果子节点分值更小则交换两者的位置,重复这一步操作直至没有父节点的分值小于该子节点,该节点插入完毕。
插入其它分值小于0的节点,重复上述操作,直至将所有节点遍历完毕,高负载队列构建完成。
用这种最小堆的方式建立的二叉堆,堆顶的节点就是负载最重的节点,获取该节点后,将此节点的部分Pod迁移到其它节点上。迁移之后该节点的得分己经发生变化,将该节点从高负载队列移除,在下一周期重新计算分值并插入相关队列。此时删除的节点是根节点,删除后会产生子堆,这时候就需要将子堆整合成新的二叉堆。
找出分值最小的节点容易,难的是删除了分值最小的节点后破坏了二叉堆的结构性,这就需要对二叉堆进行动态调整,具体步骤如下:
移除堆顶节点后,将末尾节点移到堆顶上;
比较该节点与其子节点的分值,若该节点的分值大于其子节点则交换二者的位置,对此节点重复这一步骤,直至该节点是叶子节点或者其分值小于它所有的子节点的分值,反之则调整直接结束。
这两个队列的基本操作类似,下面以高负载队列为例介绍该队列的基本操作,高负载队列是根据各节点的最终得分升序建立的最小堆。具体步骤如下:
根据节点和集群的负载信息计算该节点的最终得分;
若分值小于0,则将存储该节点相关信息的元素插入到二叉堆的末尾;
比较插入节点与父节点的得分大小,若父节点得分小于子节点的值,则交互二者的位置;
对于上述队列继续比较插入节点与父节点的分值情况,如果子节点分值更小则交换两者的位置,重复这一步操作直至没有父节点的分值小于该子节点,该节点插入完毕。
插入其它分值小于0的节点,重复上述操作,直至将所有节点遍历完毕,高负载队列构建完成。
用这种最小堆的方式建立的二叉堆,堆顶的节点就是负载最重的节点,获取该节点后,将此节点的部分Pod迁移到其它节点上。迁移之后该节点的得分己经发生变化,将该节点从高负载队列移除,在下一周期重新计算分值并插入相关队列。此时删除的节点是根节点,删除后会产生子堆,这时候就需要将子堆整合成新的二叉堆。
找出分值最小的节点容易,难的是删除了分值最小的节点后破坏了二叉堆的结构性,这就需要对二叉堆进行动态调整,具体步骤如下:
移除堆顶节点后,将末尾节点移到堆顶上;
比较该节点与其子节点的分值,若该节点的分值大于其子节点则交换二者的位置,对此节点重复这一步骤,直至该节点是叶子节点或者其分值小于它所有的子节点的分值,反之则调整直接结束。
如图3所示,为了让集群的负载更加均衡,需要将负载较重的节点一部分Pod迁移到负载较轻的节点上,尽量需要使集群内所有节点的资源利用率保持在一定的阂值范围[min,max],低于min的节点表示资源利用率较低,优先在该节点调度任务,高于max表示节点资源利用率过高,负载程度过重,需要进行动态调度;
将一些任务迁移到其它节点上,实践证明较好的阂值范围是min∈ [10%,20%],max∈[80%,90%]。
Kublet周期检测集群内各Node和Pod的运行情况,并将相关信息传入控制节点,控制节点根据负载情况计算各工作节点的综合得分,根据综合得分建立两个队列:高负载队列和低负载队列,并将高负载队列中综合得分低于下阂值的工作节点的一些Pod迁移到低负载队列中负载较低的工作节点上。
如图1所示,动态控制的具体执行步骤如下:
系统初始化,设置系统资源规格系数、需求权值因子、动态调度阂值、负载信息收集周期等参数;
监控器按设置的周期定时获取各工作节点的负载信息,周期一般设置为8-60秒,将收集到的负载信息存入数据库;
控制节点读取数据库的负载信息,计算负载均值,各资源得分,各工作节点的综合得分;
控制节点的调度器根据综合得分,采用二叉堆的方式建立高负载队列和低负载队列;
由调度器完成资源调度,将综合得分低于下阂值的节点上部分载较低的节点上。
动态调度除了上述的定时器触发,还可以通过外部事件触发, Node异常,集群扩容缩容、外部控制命令。
有益效果:负载均衡程度高;调度算法时间复杂度低。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种云平台动态负载均衡方法,其特征在于,所述均衡方法包括:
设置资源规格系数、需求权值因子、监控周期阈值;
根据所述监控周期阈值和所述资源规格系数收集负载信息;
根据所述负载信息和所述需求权值因子计算各资源负载均值;
根据所述各资源负载均值计算各资源得分;
根据所述各资源得分计算各节点的综合得分;
判断所述综合得分是否大于零,如果是,建立低负载队列;否则,建立高负载队列,获得建立队列信息;
根据所述建立队列信息对动态负载进行均衡控制,获得均衡控制结果;
根据所述均衡控制结果进行资源调度和配置。
2.根据权利要求1所述的一种云平台动态负载均衡方法,其特征在于,所述根据所述负载信息和所述需求权值因子计算各资源负载均值具体包括:
一个工作节点的CPU的使用率cpuUse,为对应节点的CPU在一个采集周期的平均利用率;一个集群CPU的负载均值averageCpuUse是指在一段时间内整个集群CPU平均使用率的加权平均值;
集群CPU负载均值averageCpuUse由节点的CPU规格系数加权平均表示为:
其中αi是第i个节点的CPU规格系数,i∈{1,2,...,i,...,n};
一个工作节点的内存的使用率memory Use;为对应节点的内存在一个采集周期内的平均利用率;一个集群内存的负载均averageMemoryUse是指在一段时间内整个集群内存平均使用率的加权平均值;
集群内存负载均值averageMemory Us由指该节点的内存规格系数加权平均表示为:
其中imageNetRatei是第i个节点的内存规格系数,i∈{1,2,...,n};
一个集群镜像网络的传输均值averagelmageNetRate是指在一个采集周期,各节点与镜像存储系统的平均传输速度imageNetRatei的算术平均值,averagelmageNetRate表示为:
其中imageNetRatei是第i个节点与镜像存储系统的平均传输速度,
i∈{1,2,...,n};
一个集群数据网络的传输均值averageDataNetRate是指在一个采集周期各节点与数据存储系统的平均传输速度dataNetRate的算术平均值,averageDataNetRate表示为:
其中dateNetRatei是第i个节点与数据存储系统的平均传输速度,i∈{1,2,...,n}。
3.根据权利要求1所述的一种云平台动态负载均衡方法,其特征在于,所述根据所述各资源负载均值计算各资源得分具体包括:
第i个节点的CPU得分cpuScore,等于对应宿主机的CPU利用率与集群的CPU负载均值之比,表示为
第i个节点的内存得分memoryScore,等于这台宿主机的内存利用率与集群的内存负载均值之比,表示为
第i个节点的镜像传输速度得分imageNetScore,等于这台宿主机的镜像平均传输速度与集群的镜像网络负载均值之比,表示为
第i个节点的数据传输速度得分dataNetScore,等于这台宿主机的数据平均传输速度与集群的数据网络负载均值之比,表示为
各资源的得分取值区间是[0,∞],用cpuScorei来举例说明资源得分的具体含义,其它资源的得分含义类似,cpuScorei的分值大于1表示该节点的CPU负载情况优于集群的CPU平均负载程度,小于1则情况反之,资源得分越高,资源情况越好。
4.根据权利要求1所述的一种云平台动态负载均衡方法,其特征在于,所述根据所述各资源得分计算各节点的综合得分具体包括:
对于CPU敏感型应用,在计算节点的综合得分的时候,应适度调高CPU的权值因子;权值因子向量表示为:
Δ=(λcpu,λmemory,λimageNet,λdataNet)
其中
λcpu+λmemory+λimageNet+λdataNet=1
该向量的各元素表示相对应的资源对节点综合得分的贡献度;
节点的综合得分scorei计算公式如下:
scorei=10×[λcpu(ln couScorei)+λmemory(ln memoryScorei)+λimageNet(lnimageNetScorei)+λdataNet(ln dataNetScorei)]
对于CPU和内存来说,公式中对应的项的值大于0为该类资源的负载小于集群的负载均值,小于0表示负载程度劣于集群平均状况;对于镜像网络传输速度和数据网络传输速度来说,大于0为网络传输的平均速度快于集群的平均网络传输速度,反之则相反;
当scorei大于0时表示该节点的综合负载情况优于集群的综合负载平均状况,将该节点作为任务迁入对象;当scorei小于0时表示该节点的综合负载相对于集群的综合负载均值状况较差,将该节点作为任务迁出对象,选择一部分Pod进行重新调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111243655.8A CN114090235A (zh) | 2021-10-25 | 2021-10-25 | 一种云平台动态负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111243655.8A CN114090235A (zh) | 2021-10-25 | 2021-10-25 | 一种云平台动态负载均衡方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090235A true CN114090235A (zh) | 2022-02-25 |
Family
ID=80297615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111243655.8A Pending CN114090235A (zh) | 2021-10-25 | 2021-10-25 | 一种云平台动态负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090235A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598652A (zh) * | 2022-03-04 | 2022-06-07 | 中信银行股份有限公司 | 一种流量调控方法、装置、设备及可读存储介质 |
CN115373862A (zh) * | 2022-10-26 | 2022-11-22 | 安超云软件有限公司 | 基于数据中心的动态资源调度方法、系统及存储介质 |
CN115580620A (zh) * | 2022-08-31 | 2023-01-06 | 航天科工网络信息发展有限公司 | 基于间歇网络环境的容器云调度系统及方法 |
CN117424900A (zh) * | 2023-10-17 | 2024-01-19 | 国电南瑞科技股份有限公司 | 电力物联网长连接集群管理方法、系统、设备和存储介质 |
CN118552012A (zh) * | 2024-07-29 | 2024-08-27 | 山东舜林建设有限公司 | 一种用于市政施工的资源管理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
WO2021073083A1 (zh) * | 2019-10-15 | 2021-04-22 | 南京莱斯网信技术研究院有限公司 | 一种基于节点负载的数据动态分区系统 |
-
2021
- 2021-10-25 CN CN202111243655.8A patent/CN114090235A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
WO2021073083A1 (zh) * | 2019-10-15 | 2021-04-22 | 南京莱斯网信技术研究院有限公司 | 一种基于节点负载的数据动态分区系统 |
Non-Patent Citations (2)
Title |
---|
唐瑞: "基于 Kubernetes 的容器云平台资源调度策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 February 2018 (2018-02-15), pages 139 - 233 * |
平凡;陈莉君;: "基于Kubernetes的动态负载均衡机制研究与设计", 计算机与数字工程, no. 01, 20 January 2020 (2020-01-20) * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598652A (zh) * | 2022-03-04 | 2022-06-07 | 中信银行股份有限公司 | 一种流量调控方法、装置、设备及可读存储介质 |
CN114598652B (zh) * | 2022-03-04 | 2024-01-30 | 中信银行股份有限公司 | 一种流量调控方法、装置、设备及可读存储介质 |
CN115580620A (zh) * | 2022-08-31 | 2023-01-06 | 航天科工网络信息发展有限公司 | 基于间歇网络环境的容器云调度系统及方法 |
CN115373862A (zh) * | 2022-10-26 | 2022-11-22 | 安超云软件有限公司 | 基于数据中心的动态资源调度方法、系统及存储介质 |
CN117424900A (zh) * | 2023-10-17 | 2024-01-19 | 国电南瑞科技股份有限公司 | 电力物联网长连接集群管理方法、系统、设备和存储介质 |
CN118552012A (zh) * | 2024-07-29 | 2024-08-27 | 山东舜林建设有限公司 | 一种用于市政施工的资源管理系统及方法 |
CN118552012B (zh) * | 2024-07-29 | 2024-10-15 | 山东舜林建设有限公司 | 一种用于市政施工的资源管理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114090235A (zh) | 一种云平台动态负载均衡方法 | |
WO2021208546A1 (zh) | Kubernetes集群架构系统下多维资源调度方法 | |
CN109918198B (zh) | 一种基于用户特征预测的仿真云平台负载调度系统及方法 | |
CN110780998A (zh) | 基于Kubernetes的动态负载均衡资源调度方法 | |
CN112835698B (zh) | 一种基于异构集群的请求分类处理的动态负载均衡方法 | |
CN110413389B (zh) | 一种资源不均衡Spark环境下的任务调度优化方法 | |
CN113391913B (zh) | 一种基于预测的分布式调度方法和装置 | |
US5675739A (en) | Apparatus and method for managing a distributed data processing system workload according to a plurality of distinct processing goal types | |
US6324620B1 (en) | Dynamic DASD data management and partitioning based on access frequency utilization and capacity | |
CN110149395A (zh) | 一种基于海量小文件高并发情况下动态负载均衡方法 | |
KR20090018905A (ko) | 작업 부하 특징화에 기초한 호스트에의 가상 머신 전개를 위한 방법 | |
US20100100604A1 (en) | Cache configuration system, management server and cache configuration management method | |
CN107426332B (zh) | 一种web服务器集群的负载均衡方法及系统 | |
WO2011110026A1 (zh) | 一种实现数据中心资源负载均衡的方法及装置 | |
JP5938968B2 (ja) | 情報処理装置、情報処理プログラム及び情報処理方法 | |
CN101989999A (zh) | 一种分布式环境中的分级存储系统 | |
CN117573373B (zh) | 一种基于云计算的cpu虚拟化调度方法及系统 | |
US6907607B1 (en) | System and method for analyzing capacity in a plurality of processing systems | |
CN116954905A (zh) | 一种面向Flink大数据的任务编排与迁移方法 | |
CN119557067B (zh) | 多云场景下算力资源协同调度方法、装置及存储介质 | |
WO2023039711A1 (en) | Efficiency engine in a cloud computing architecture | |
CN119862037A (zh) | 一种面向容器计算的动态调度系统及方法 | |
CN118567911A (zh) | 一种固态硬盘的数据实时备份与恢复方法 | |
CN114020218B (zh) | 混合重复数据删除调度方法及系统 | |
CN106888237B (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 |