基于动态资源调度算法的数据中心负载均衡方案研究
2021-09-11杜雅红李明杰
杜雅红,郭 刚,罗 兵,李明杰
(中铁信弘远(北京)软件科技有限责任公司,北京 100038)
随着互联网技术的高速发展,网络规模不断扩大,对计算机计算能力的要求越来越高,以数据中心为基础的云计算技术得到了高速发展[1]。在目前的数据中心建设和应用中,大多数采用静态调度算法对虚拟资源进行调度与分配。静态调度算法是指虚拟机在创建、迁移的调度过程中,按照虚拟机类型来筛选目标物理主机,未根据虚拟机和物理主机的实际冷热负载进行过滤。随着数据中心的长期运营和虚拟资源的不断分配,静态调度算法无法根据物理主机当前的负载情况而调度,逐渐暴露出CPU、内存、块存储等基础资源分配不均衡等问题,从而导致数据中心的负载不均衡[2]。
针对此问题,本文提出基于动态资源调度(DRS,Dynamic Resource Scheduler)算法的负载均衡解决方案,周期性获取物理主机和虚拟机的相关监控指标,根据物理主机和虚拟机的实际负载状态进行动态调整,尽量使物理主机资源使用率处于平均负载值附近,使各个物理主机的资源使用相对均衡。从而避免某些物理主机过载或过低载使用,实现数据中心的负载均衡。
1 关键技术
DRS的基本要求是在不中断业务和用户基本无感知的情况下,在数据中心内对资源进行再调度,主要依赖于虚拟机在线迁移技术和资源监控技术。
1.1 虚拟机在线迁移
运用DRS策略,保证虚拟机资源在不中断用户业务的情况下,在物理主机之间进行热迁移[3],为实现资源动态调整提供可能[4]。迁移的基础资源包括CPU、内存及块存储。迁移过程中可能会出现微秒级的业务中断,但对业务的影响微乎其微。
根据存储模式,分为基于共享存储模式迁移和非共享存储模式迁移。采用共享存储模式的虚拟机迁移,只需要对CPU状态复制、内存拷贝,无需进行块存储数据的迁移;采用非共享存储模式的虚拟机迁移,除了上述操作外,还需要对块存储数据进行迁移,数据量较大的块存储在迁移过程中会占用大量的网络带宽,因此,对块存储迁移时需谨慎,防止影响系统服务质量[5]。
1.2 资源监控
资源监控是利用计算机控制或通过代理软件模式,监控数据中心所有虚拟机和物理主机运行状态及负载情况,实现对数据中心资源状况实时采集、分析、处理和存储的一种技术[6]。本文在监控目标中安装代理软件,通过SNM、SSH、IPMI等协议,采集监控目标的基础资源指标,如CPU使用率,内存使用量,硬盘使用量等,通过网络传输给监控系统服务端,并对指标进行分析与处理后存储于数据库中。
2 DRS算法
2.1 算法流程
按照触发条件对物理主机进行分类,分为需要迁移的源物理主机和可以进行迁移的目标物理主机。源物理主机是指负载过高、导致无法保证其上运行的虚拟机的服务质量、进而影响用户对云计算平台应用体验的物理主机[7-8];目标物理主机用于将源物理主机上的虚拟机迁移到该主机上,在保证其上运行的虚拟机服务质量的同时,提高物理主机的资源使用率[9-10]。
(1)周期性地从监控系统里获取数据中心中物理主机和其上运行的虚拟机最近N个周期内的监控数据,计算出物理主机N个周期内平均负载值,将其作为该物理主机的负载值。
(2)对所有物理主机的负载值进行平均计算,得到平均负载值,将平均负载值乘以(1±ω)作为数据中心的负载阈值,这里,ω通常是某个具体项的资源平均值的百分比。将负载值高于负载阈值上限的物理主机作为需要调整的源物理主机,负载值低于负载阈值下限的物理主机作为虚拟机迁移的目标物理主机。
(3)根据源物理主机上运行的虚拟机已分配资源和实际负载值,计算每个虚拟机的得分,并结合源物理主机的负载值综合筛选出适合迁移的虚拟机。
(4)在目标物理主机中,根据可分配资源和实际负载情况综合计算,为需要迁移的虚拟机筛选合适的目标物理主机。如果有满足虚拟机迁移条件的目标物理主机,则生成虚拟机指定目标物理主机的热迁移任务;如果不满足,则放弃对该虚拟机的迁移,为下一个虚拟机寻找合适的目标物理主机。
(5)对生成虚拟机指定目标物理主机热迁移的任务进行模拟迁移操作,迁移后检查源物理主机的负载值是否在负载阈值内。如果高于负载阈值上限,判断源物理主机上是否为最后一台虚拟机,如果不是,对下一个虚拟机进行寻找合适目标物理主机操作,返回(4);如果是,则放弃对该源物理主机的操作,对下一个需要调整的源物理主机进行操作,返回(3)。如果不高于负载阈值上限,判断是否为最后一台源物理主机,如果不是,则对下一个需要调整的源物理主机进行操作,返回(3);如果是,则执行(6)。
(6)为了防止虚拟机二次或链式迁移操作,虚拟机热迁移之前,在迁移任务列表中执行消重或链式迁移任务消除操作,例如:虚拟机a从源物理主机A迁移到目标物理主机B,再从目标物理主机B迁移到目标物理主机C,进行消重操作,将虚拟机a直接从源物理主机A迁移到目标物理主机C并建立迁移任务依赖。
(7)模拟迁移结束后,执行虚拟机指定目标物理主机的热迁移任务,实现数据中心的负载均衡。
2.2 算法关键步骤
2.2.1 迁移触发条件
在数据中心应用环境下,通过监控系统监控并采集所有物理主机和虚拟机的CPU、内存、块存储等负载指标,设置平均负载的浮动值ω。
为了防止采集数据时由于网络抖动或其他不稳定因素导致数据不正常,需要周期性从监控系统中获取从t1~tN时间段中N个周期内M个物理主机的负载指标。
(1)计算数据中心里第i个物理主机N个周期内监控指标PMmetric(in)的平均值,将其作为负载值PMmetric(i)。
(2)对M个物理主机的监控指标负载值PMmetric(i)求平均,将其作为M个物理主机的平均负载值PMmetric_avg。
(3)将物理主机的负载值PMmetric(i)>PMmetric_avg·(1+ω) 的作为需要迁出虚拟机的源物理主机,PMmetric(i)<PMmetric_avg·(1-ω) 的作为需要迁入虚拟机的目标物理主机。
2.2.2 迁移虚拟机选择
从源物理主机上选择虚拟机进行热迁移,以降低源物理主机的负载,使源物理主机的负载值处于负载阈值内:主要是结合虚拟机的虚拟机类型和实际负载值,计算出每个虚拟机的最终得分。从虚拟机列表中选择在迁移时消耗代价最小的一个或多个进行迁移,迁移完成后,源物理主机的负载值处于负载阈值内即可。因此,迁移虚拟机的选择主要考虑以下因素。
(1)根据源物理主机上第j个虚拟机的类型,对其分配的基础属性项(K)的属性值进行归一化后,乘以相应属性的权重值wflavor,再求和,计算出该虚拟机的分配资源得分。例如,所选的虚拟机的K为3,分别为CPU、内存及块存储,其基础属性值为CPU、内存及块存储的分配值。
式(3)中,VM flavor表示根据虚拟机类型分配的基础属性值(CPU、内存、块存储等的分配值),设vms表示已分配在物理主机上的虚拟机个数。为vms个虚拟机中相应属性的最大属性值,为vms个虚拟机中相应属性的最小属性值;wflavor表示虚拟机类型的基础属性对应权重值,该值根据实际使用场景对CPU、内存、块存储等不同因素的需求设置相应权重值,权重范围值为0~1,增加对应属性的资源对整体优先级影响的比重。
(2)根据第j个虚拟机的实际负载值,对虚拟机监控的基础指标值进行归一化并乘以其相应的权重kmetric,再求和,计算出该虚拟机的实际负载得分。
式(4)中,VMmetric(j)表示该虚拟机的资源实际使用值,如虚拟机的CPU使用率、内存使用量、硬盘使用量。为vms个虚拟机中相应资源实际使用值的最大值,为vms个虚拟机中相应资源实际使用值的最小值;kmetric表示相应监控指标的权重值,可以根据实际使用场景,对CPU、内存、存储等不同因素设置对应的权重值,权重范围值为0~1,增加对应属性的资源对整体优先级影响的比重。
将虚拟机j的分配资源得分加上其实际负载得分,计算出该虚拟机的最终得分:
根据最终得分,从小到大依次选择虚拟机,为虚拟机选择合适的目标物理主机并进行模拟迁移,迁移后,如果该虚拟机所在的源物理主机负载值仍高于负载阈值的阈值上限,则选择下一个虚拟机进行模拟迁移。
2.2.3 目标物理主机选择
目标物理主机的选择对DRS算法至关重要,将直接关系到负载均衡的效果。假如选择的目标物理主机不理想并造成不必要的迁移,则可能造成二次迁移甚至链式迁移,增加其他物理主机的工作负担。选择物理主机的负载值低于负载阈值的阈值下限,且虚拟机迁移到该物理主机后,该物理主机的负载值不超过负载阈值的阈值上限,作为虚拟机迁移的目标物理主机。
在不影响数据中心采用静态调度算法对资源分配与运行的前提下,选择目标物理主机时需要考虑诸多因素。
(1)基于虚拟机类型进行过滤,筛选满足待迁移虚拟机类型的目标物理主机。
式(6)中,PM flavor(i)表示目标物理主机的实际物理资源,flavor表示CPU、内存、块存储等属性,PM flavor_ratio表示目标物理主机对应属性的超配比值,PMavail_flavor(i)表示该目标物理主机剩余可用资源,如果PMavail_flavor(i)的所有属性值都大于待迁移虚拟机的对应属性值,则该目标物理主机满足虚拟机迁移条件,将其列入目标物理主机列表。
(2)虚拟机迁移到目标物理主机后,可能会导致该目标物理主机的负载超出负载阈值的上限。为此,在通过虚拟机类型筛选出满足虚拟机资源分配的目标物理主机后,需在此基础上根据待迁移的虚拟机负载值筛选出最终合适的目标物理主机。一台虚拟机迁移到某个目标物理主机后,目标物理主机资源使用情况如式(7)。
(3)虚拟机迁移到目标物理主机后,目标物理主机的资源负载值若小于负载阈值的上限,即PM′metric(i)<PMmetric_avg·(1+ω),则该物理主机满足该虚拟机的迁移条件,将其加入目标物理主机列表,再寻找下一个目标物理主机;否则,直接寻找下一个目标物理主机;直到没有合适的目标物理主机为止。
根据式(8),对目标物理主机进行归一化计算,并计算各物理主机的得分。从其中选择得分最高的物理主机作为最终的目标物理主机。式(8)中,m为目标物理主机的数量。
(4)虚拟机迁移到目标物理主机后,该目标物理主机资源负载低于负载阈值的阈值上限,则将虚拟机添加到迁移列表,否则选择下一个目标物理主机进行模拟迁移,直到所有物理节点的负载相对均衡为止。
3 实验验证及分析
3.1 实验环境
在实验中,每个物理主机具有相同的配置,CPU为32核,内存为256 GB。CPU和内存超配比分别为4.0和1.5,后端对接Ceph分布式存储。每个物理主机的虚拟机在10~20台间随机分配,每个虚拟机的内存分配容量为2~128 GB,CPU在1~32核间随机分配。物理主机的数量随实验要求而变化,负载均衡浮动值ω为平均负载值乘以5%,阈值范围为平均负载值±ω,CPU和内存的权重值均为1.0。实验中,使用的是共享存储,因此没有把硬盘使用量加入算法中。DRS算法主要采用Python语言编程实现。
3.2 实验方法及分析
在虚拟机中模拟计算密集型、I/O密集型等任务,产生不同的虚拟资源利用率。数据中心负载均衡与否可由负载均衡度(LB)的大小来判断,LB越小,表示数据中心的负载越趋于均衡。LB可由式(9)计算。
式(9)中,M为物理主机数,CPUutil(i)表示第i个物理主机的CPU资源实际使用率,CPUavg表示数据中心中所有物理主机的CPU资源实际使用率的平均值,MEMusage(i)表示第i个物理主机的内存资源实际使用量,MEMavg表示数据中心中所有物理主机的内存资源实际使用量的平均值。
3.2.1 使用不同调度算法的负载均衡度
图1是在物理主机数量为100台,ω为平均负载值乘以5%的情况下,静态调度算法和DRS算法的LB值对比。由于每个源物理主机分配的虚拟机数量有所区别,虚拟机所需要的资源也不同,各个算法的调度机制不同,对每个算法中的资源项进行归一化处理。由图1可以看出,使用DRS算法进行调整后的LB值始终低于使用静态调度算法进行调整后的LB值。结果表明,DRS算法比静态调度算法更加有效。
图1 不同算法的负载均衡度对比
3.2.2 不同物理主机数量的负载均衡度
不同物理主机数量下,不同算法的负载均衡度比较如图2所示。在物理主机数量分别为50台、100台、150台、200台,ω 为平均负载值乘以5%的情况下,随着物理主机数量的变化,DRS算法能够使LB值依旧保持较快的速度下降,进行多次负载均衡后,LB值在一定范围内趋于稳定,说明DRS算法能够将高负载物理主机上的部分虚拟机迁移到低负载物理主机上,可以有效改善数据中心的负载均衡度。LB值的下降速度由待迁移虚拟机的数量、迁移后物理主机的负载值来决定,因此,不同物理主机数量下LB值的下降速度均不一样。由此可见,随着数据中心规模的增大,基于DRS算法实现负载均衡的优势更加明显。
图2 不同物理主机数下DRS算法的负载均衡度对比
3.2.3 使用DRS算法的物理主机资源使用状态
图3是物理主机数量为100台的情况下未使用DRS算法的物理主机资源使用状态图。可以看出,采用静态调度算法对虚拟机进行调度与分配,造成每个物理主机上负载差异很大,部分物理主机负载很高,可能导致虚拟机的工作质量得不到保障,部分物理主机上负载很低,造成数据中心资源使用率整体不高,从而导致数据中心负载不均衡。
图3 未使用DRS算法的物理主机资源使用状态
图4是物理主机数量为100台的情况下,使用DRS算法的物理主机资源使用状态图。采用DRS算法对虚拟机进行再调度与分配,每个物理主机的负载均处于负载浮动区间范围内,与采用静态调度算法相比,数据中心的负载更加趋于均衡,虚拟机的工作质量也可以得到有效保证。
图4 使用DRS算法的物理主机资源使用状态
4 结束语
本文基于DRS算法,使数据中心的负载均衡,并结合实际生产环境进行验证。实验结果表明,在相同物理主机数量情况下,采用DRS算法的负载均衡度始终低于静态调度算法的负载均衡度;在不同物理主机数量情况下,采用DRS算法,随着物理主机数量的增多,负载均衡度越低,数据中心的负载越趋于平衡。该算法具有有效性和稳定性,可以周期性地进行资源动态调度,实现数据中心的负载相对均衡。
由于数据中心不同,环境差异性较大,实际运行的业务系统类型也存在很大差异,因此,一些具体的监控指标需要根据实际环境进行调整。目前,该方案已在现场应用,取得了良好的应用效果。在今后的研究中,将进一步对各项指标的权值和影响因子进行研究与调整,结合人工智能等相应算法,通过对历史数据的不断学习,实现更高效的资源调度,进一步提升数据中心资源使用率和调度速度。