本发明涉及计算机技术,尤指一种分布式系统虚拟机调度方法、装置和可读存储介质。
背景技术:
在传统的分布式资源调度方法中,只有当集群内负载出现不均衡时才会触发虚拟机调度,但是这种方式存在的主要问题是处于高负载状态的虚拟机具有极高的内存读写或i/o频率,延长了虚拟机调度耗时甚至降低了调度的成功率。
技术实现要素:
为了解决上述技术问题,本发明提供了一种分布式系统虚拟机调度方法、装置和可读存储介质,能够根据预测系统内资源是否会不均衡,进行虚拟机调度,实现系统中主机的负载均衡。
为了达到本发明目的,本发明提供了一种分布式系统虚拟机调度方法,其特征在于,所述方法包括:
使用人工神经网络,预测虚拟机的资源使用率;
根据预测的所述虚拟机的资源使用率获取所述系统中宿主机的资源使用率;
根据所述宿主机的资源使用率,调度虚拟机。
进一步地,所述使用人工神经网络,预测虚拟机的资源使用率之前,还包括:
定时获取并保存所述虚拟机的资源使用率;
所述使用人工神经网络,预测虚拟机的资源使用率,包括:
使用预构建的训练模型,以当前时刻和历史时刻的资源使用率为输入,预测未来时刻虚拟机的资源使用率。
进一步地,所述根据所述宿主机的资源使用率,调度虚拟机包括:
根据所述宿主机的资源使用率判断系统中的宿主机是否需要调度虚拟机,如果需要,则调度虚拟机。
进一步地,所述方法还包括:预先设定宿主机的资源使用率上线和下线;
所述判断系统中的宿主机是否需要调度虚拟机,包括:
当所述宿主机的预测资源使用率大于所述上线时,确定所述宿主机需要迁出虚拟机;
当所述宿主机的预测资源使用率小于所述上线且大于所述下线时,确定所述宿主机不需要调度虚拟机;
当所述宿主机的预测资源使用率小于所述下线时,确定所述宿主机允许迁入虚拟机。
进一步地,所述根据所述宿主机的预测资源使用率,调度虚拟机,包括:
将所述需要迁出虚拟机的宿主机中的虚拟机以hash的方式分到允许迁入虚拟机的宿主机。
为了达到本发明目的,本发明还提供了一种分布式系统虚拟机调度装置,其特征在于,所述装置包括预测模块和调度模块,其中:
所述预测模块,用于使用人工神经网络,预测虚拟机的资源使用率;
所述调度模块,用于根据预测的所述虚拟机的资源使用率获取所述系统中宿主机的资源使用率,根据所述宿主机的资源使用率,调度虚拟机。
进一步地,所述预测模块使用人工神经网络,预测虚拟机的资源使用率之前,还包括:
所述预测模块定时获取并保存所述虚拟机的资源使用率;
所述预测模块使用人工神经网络,预测虚拟机的资源使用率,包括:
所述预测模块使用预构建的训练模型,以当前时刻和历史时刻的资源使用率为输入,预测未来时刻虚拟机的资源使用率。
进一步地,所述调度模块根据所述宿主机的资源使用率,调度虚拟机包括:
所述调度模块根据所述宿主机的资源使用率判断系统中的宿主机是否需要调度虚拟机,如果需要,则调度虚拟机。
进一步地,所述调度模块还用于:预先设定宿主机的资源使用率上线和下线;
所述调度模块判断系统中的宿主机是否需要调度虚拟机,包括:
当所述宿主机的预测资源使用率大于所述上线时,所述调度模块确定所述宿主机需要迁出虚拟机;
当所述宿主机的预测资源使用率小于所述上线且大于所述下线时,所述调度模块确定所述宿主机不需要调度虚拟机;
当所述宿主机的预测资源使用率小于所述下线时,所述调度模块确定所述宿主机允许迁入虚拟机。
为了达到本发明目的,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述方法的步骤。
与现有技术相比,本发明包括使用人工神经网络,预测虚拟机的资源使用率;根据预测的所述虚拟机的资源使用率获取所述系统中宿主机的资源使用率;根据所述宿主机的资源使用率,调度虚拟机。通过主动分布式资源调度策略,在虚拟机负载上升之前即触发迁移操作,从而以较低的代价实现了集群内的负载均衡。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例一的分布式系统虚拟机调度方法流程图;
图2为传统分布式系统虚拟机调度方法流程图和本发明实施例二分布式系统虚拟机调度方法流程图的对比图;
图3为本发明实施例二的分布式系统虚拟机调度方法的另一种流程图;
图4为本发明实施例二的分布式系统虚拟机调度方法中人工神经网络的示意图;
图5为本发明实施例二的分布式系统虚拟机调度方法中宿主机帅选标准示意图;
图6为本发明实施例三的分布式系统虚拟机调度的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
本实施例提供了一种分布式系统虚拟机调度方法,如图1所示,该方法包括s11-s12:
s11、使用人工神经网络,预测虚拟机的资源使用率;
s12、根据预测的虚拟机的资源使用率获取系统中宿主机的资源使用率;根据宿主机的资源使用率,调度虚拟机,以使各宿主机负载均衡。
本发明实施例中,通过预测虚拟机的资源使用率从而预测系统内主机是否存在负载不均衡。相比常规的只有当系统集群内负载出现不均衡时才会触发虚拟机迁移,能够根据预测系统内资源是否会不均衡,进行虚拟机调度,达到系统主机间负载均衡的目的。
可选地,资源使用率可以包括以下至少之一:cpu使用率、内存使用率、网络上行流率、网络下行流率、磁盘读速率和磁盘写速率。
分布式系统中,每个宿主机上可存在多个虚拟机,通过预测虚拟机资源使用率获取宿主机的资源使用率;
可选地,上述方法还包括,使用人工神经网络,预测虚拟机的资源使用率之前:定时获取并保存虚拟机的资源使用率;
使用人工神经网络,预测虚拟机的资源使用率,包括:
使用预构建的训练模型,以当前时刻和历史时刻的资源使用率为输入,预测未来时刻虚拟机的资源使用率。
构建训练模型,输入的节点个数为资源使用率个数与历史预测时间的个数之积,输出节点个数为资源使用率个数;
以固定时间为间隔,定时获取并保存虚拟机的资源使用率,预测未来时刻虚拟机的资源使用率,具体是指当前时刻起,经过获取资源使用率的固定时间后的虚拟机的资源使用率。
在一个可选实施例中,根据宿主机的资源使用率,调度虚拟机包括:
根据宿主机的资源使用率判断系统中的宿主机是否需要调度虚拟机,如果需要,则调度虚拟机。
可选地,上述方法还包括:预先设定宿主机的资源使用率上线和下线;
判断系统中的宿主机是否需要调度虚拟机,包括:
当宿主机的预测资源使用率大于上线时,确定宿主机需要迁出虚拟机;
当宿主机的预测资源使用率小于上线且大于下线时,确定宿主机不需要调度虚拟机;
当宿主机的预测资源使用率小于下线时,确定宿主机允许迁入虚拟机。
可选地,根据宿主机的预测资源使用率,调度虚拟机,包括:
将需要迁出虚拟机的宿主机中的虚拟机以hash的方式分到允许迁入虚拟机的宿主机。
本例中采用hash分布能够使虚拟机以尽可能均匀的方式迁入到不同的宿主机中。
本发明实施例中,使用人工神经网络,预测虚拟机的资源使用率;根据预测的所述虚拟机的资源使用率获取所述系统中宿主机的资源使用率;根据所述宿主机的资源使用率,调度虚拟机,相比常规的只有当系统集群内负载出现不均衡时才会触发虚拟机迁移,在虚拟机负载上升之前即触发迁移操作,从而以较低的代价实现了集群内的负载均衡。
实施例二
本实施例对上述实施例方法进行具体描述,上述方法可应用于包含资源使用率趋势分析装置、负载均衡判断装置和负载均衡调度算法装置的系统中;其中,资源使用率趋势分析装置用于分析每台虚拟机和主机在未来一段时间的资源使用率趋势;负载均衡判断装置基于不同主机间的负载现状及变化趋势判断系统整体是否达到了负载均衡;负载均衡调度算法装置基于负载现状及变化趋势,决策虚拟机迁移方案以实现负载重新平衡。
传统分布式系统虚拟机调度方法和本实施例分布式系统虚拟机调度方法对比如图2所示;其中,图2中的(a)为传统分布式资源调度的方法的流程图,在传统分布式资源调度方法中,系统周期性查询集群当前的状态,根据当前的状态判断是否要执行虚拟机迁移以达到负载均衡;
图2中的(b)为本申请主动的资源调度方法的流程图,在本案提出的主动分布式资源调度方法中,系统会周期性做趋势分析,并根据未来的状态判断是否要执行虚拟机迁移以避免负载不均。
如图3所示,主动分布式资源调度流程与资源使用率趋势分析装置、负载均衡判断装置和负载均衡调度算法装置的对应关系。
本实施例包括以下步骤:
(1)获取虚拟机资源使用率
周期性的对每台虚拟机和主机的资源使用趋势做分析,分析之前,需定时获取并保存每台虚拟机的资源使用率;
本例中,以30分钟为间隔,获取虚拟机当前资源使用率并进行保存,资源使用率包括:cpu使用率、内存使用率、网络上行流率、网络下行流率、磁盘读速率、磁盘写速率。
(2)根据保存的历史资源使用率,构建训练模型
以历史时刻的虚拟机资源使用率为输入,当前时刻资源使用率为输出,获取训练模型的系数矩阵,并用当前的资源使用率修正训练模型的系数矩阵;
使用此预先构建的训练模型,预测虚拟机的资源使用率。
使用人工神经网络作为虚拟机资源使用率趋势预测工具,本例中,如表1所示,选取了30分钟前、60分钟前、90分钟前、24小时前和48小时前共6个时刻30个资源使用率数据的作为输入层节点,当前时间的6个资源使用率数据为作为输出层节点,可以获取人工神经网训练模型的系数矩阵。
本例中,网络类型可使用适合于对时间序列预测的narx模型,具有外部输入的非线性自回归神经网络;
表1构建训练模型的资源使用率数据
本实施例以资源使用率包括cpu使用率、内存使用率、网络上行流率、网络下行流率、磁盘读速率和磁盘写速率共六个为例进行说明;本实施例的历史时刻为5个,资源使用率为6个,所以输入节点为30个;
对正常运行的虚拟机,每隔半小时作为表1中的“当前时间”,根据表1采集指定时间间隔的历史数据,形成训练集,通过人工神经网络,通过前向输出和逆向反馈机制,训练得到不同层之间的系数矩阵。其中,逆向反馈机制,指的是通过一次训练(即前向输出的过程)得到预测的结果,该预测的结果和已知的输出之间的差值,通过该差值进行“逆向反馈”,修正系数矩阵。如图4所示,本申请人工神经网络包含30个输入,内置两层隐藏层和6个输出。
(3)获取预测虚拟机的资源使用率
使用构建的训练模型,以当前和历史的虚拟机资源使用率为输入,预测虚拟机的资源使用率;
使用上述步骤(2)构建的训练模型,预测虚拟机未来时刻的资源使用率,包括:将当前时刻、30分钟前、60分钟前、90分钟前和24小时前的总共30个数据作为输入层节点,预测得到未来30分钟时刻的6个资源使用率;
对输入的某一时刻虚拟机的资源使用率,选择对应时间训练得到的系数矩阵,即可通过上述方法预测其未来30分钟后的资源使用率。
(4)获取宿主机的预测资源使用率
系统获得所有虚拟机在未来30分钟后的预测资源使用率,根据预测资源使用率获取宿主机的预测资源使用率;
例如,宿主机上包含虚拟机1和虚拟机2,宿主机的内存为5g;预测虚拟机1的内存为1g,内存使用率为20%,预测虚拟机2的内存为1g,内存使用率为30%;可以计算此宿主机内存使用率为:1g*20%+1g*30%,即0.5g;则此宿主机内存使用率为(0.5g/5g)*100%=10%;
同理,可以计算出预测宿主机cpu使用率、网络上行流率、网络下行流率、磁盘读速率和磁盘写速率。
(5)判断系统是否需要调度虚拟机
在判断之前需设定资源使用率上线和资源使用率下线;
将宿主机的上述六个维度的资源使用率归一化,根据归一化后的资源使用率判断此宿主机是否需要重新分配虚拟机;
若系统内存在宿主机资源使用率超过资源使用率上线,则认为系统存在负载不均衡的风险,继续执行步骤(6);
若系统内所有宿主机资源使用率未超过资源使用率上线,则认为系统不存在负载不均衡的风险。
(6)选择需要迁出虚拟机和允许入虚拟机的宿主机
在选择之前,根据预先设定的资源使用率上线和下线判断出需要迁出虚拟机的宿主机和需要迁入虚拟机的宿主机;
当需要迁出虚拟机资源使用率大于上线时,虚拟机所在的宿主机为需要迁出虚拟机的宿主机;当需要迁出虚拟机资源使用率小于下线时,虚拟机所在的宿主机为允许迁入虚拟机的宿主机;当需要迁出虚拟机资源使用率小于上线时并且大于下线时,则虚拟所在的宿主机是安全宿主机,不需要调度虚拟机;
如图5所示,宿主机1-2为需要迁出虚拟机的宿主机;宿主机3-7为不需要调度虚拟机;宿主机8-12为允许迁入虚拟机的宿主机。
(7)调度虚拟机
在需要迁出虚拟机的宿主机中,选择虚拟机使用率较低的虚拟机迁出;迁出时,以hash的方式平均分配到允许迁入虚拟机的宿主机中。
将宿主机的中虚拟机的资源使用率从高到低排序,顺次调度;每次宿主机的虚拟机调度之后,判断所述宿主机资源使用率是否小于资源使用率上线;如果小于则所述宿主机调度结束;如果判断结果为大于,则按照虚拟机的资源使用率从高到低继续调度,直至宿主机的资源使用率小于资源使用率上线。
当所有宿主机的资源使用率小于资源使用率上线,此次调度结束。
实施例三
本实施例提供了一种分布式系统虚拟机调度装置,上述方法实施例中描述也适用于本实施例中,如图6所示,该装置包括预测模块61和调度模块62,其中:
预测模块61,用于使用人工神经网络,预测虚拟机的资源使用率;
调度模块62,用于根据预测的虚拟机的资源使用率获取系统中宿主机的资源使用率,根据宿主机的资源使用率,调度虚拟机。
在一个可选实施例中,预测模块61使用人工神经网络,预测虚拟机的资源使用率之前,还包括:
预测模块61定时获取并保存虚拟机的资源使用率;
预测模块61使用人工神经网络,预测虚拟机的资源使用率,包括:
预测模块61使用预构建的训练模型,以当前时刻和历史时刻的资源使用率为输入,预测未来时刻虚拟机的资源使用率。
在一个可选实施例中,调度模块62根据宿主机的资源使用率,调度虚拟机包括:
调度模块62根据宿主机的资源使用率判断系统中的宿主机是否需要调度虚拟机,如果需要,则调度虚拟机。
可选地,调度模块62还用于:预先设定宿主机的资源使用率上线和下线;
调度模块62判断系统中的宿主机是否需要调度虚拟机,包括:
当宿主机的预测资源使用率大于上线时,调度模块62确定宿主机需要迁出虚拟机;
当宿主机的预测资源使用率小于上线且大于下线时,调度模块62确定宿主机不需要调度虚拟机;
当宿主机的预测资源使用率小于下线时,调度模块62确定宿主机允许迁入虚拟机。
本发明实施例还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够实现前述实施例提供的分布式系统虚拟机调度方法,例如,执行如图1所示方法。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。