一种虚拟机簇动态部署方法转让专利

申请号 : CN201910543167.5

文献号 : CN110275759A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周舟李方敏

申请人 : 长沙学院

摘要 :

本发明涉及云计算领域,公开了一种虚拟机簇动态部署方法,以将缩短部署时间、提高资源利用率、优化数据中心能效和降低系统总带宽作为部署目标,实现虚拟机簇的动态部署;本发明方法包括:获取主机的负载情况,将主机按照负载情况进行降序排列,并对主机进行聚类得到若干个主机簇;为每个主机簇分配一个参数列表,参数列表包括该主机簇中的资源信息;获取待部署的虚拟机集合,将待部署的虚拟机集合中的各虚拟机按照设定要求聚类为若干个虚拟机簇;将虚拟机簇所需的资源与主机簇的资源信息进行匹配,若主机簇的资源大于虚拟机簇所需的资源,则将该虚拟机簇部署在该主机簇中。

权利要求 :

1.一种虚拟机簇动态部署方法,其特征在于,包括以下步骤:

S1:获取主机的负载情况,将主机按照所述负载情况进行降序排列,并对主机进行聚类得到若干个主机簇;

S2:为每个所述主机簇分配一个参数列表,所述参数列表包括该主机簇中的资源信息;

S3:获取待部署的虚拟机集合,将所述待部署的虚拟机集合中的各虚拟机按照设定要求聚类为若干个虚拟机簇;

S4:将虚拟机簇所需的资源与所述主机簇的资源信息进行匹配,若主机簇的资源大于虚拟机簇所需的资源,则将该虚拟机簇部署在该主机簇中。

2.根据权利要求1所述的虚拟机簇动态部署方法,其特征在于,S1中,所述主机簇为三类,分别为高负载主机簇、中负载主机簇、以及低负载主机簇。

3.根据权利要求2所述的虚拟机簇动态部署方法,其特征在于,S4中,所述将虚拟机簇所需的资源与所述主机簇的资源信息进行匹配时,匹配顺序为先高负载主机簇,其次为中负载主机簇,最后为低负载主机簇。

4.根据权利要求1所述的虚拟机簇动态部署方法,其特征在于,所述S3中,所述设定要求为:将存在通信量的虚拟机聚类为一个虚拟机簇,且满足各虚拟机簇之间的通信量尽可能小。

5.根据权利要求1所述的虚拟机簇动态部署方法,其特征在于,所述资源信息包括主机的CPU、内存、以及网络带宽信息中的一种或者任意几种的组合。

6.根据权利要求1所述的虚拟机簇动态部署方法,其特征在于,每个虚拟机簇的内部通信量为该虚拟机簇中所有成员之间的总通信带宽,每个虚拟机簇的外部通信量为该虚拟机簇中所有成员与所有非内部成员之间的总通信带宽。

7.根据权利要求4所述的虚拟机簇动态部署方法,其特征在于,所述步骤S3完成之后,还包括步骤:采用决策函数优化每个虚拟机簇。

8.根据权利要求7所述的虚拟机簇动态部署方法,其特征在于,所述决策函数的计算公式为:式中,λ表示簇Ck的构建进展,

其中,sk表示虚拟机簇Ck中已有虚拟机的数量,Restk表示Ck的候选虚拟机集合,λ=0表示vmi是第一个要加入该簇的虚拟机,λ=1表示vmi是最后一个要加入簇中的虚拟机,其中,当虚拟机簇为空时,选择OutTi最大的虚拟机作为簇的初始点。

说明书 :

一种虚拟机簇动态部署方法

技术领域

[0001] 本发明涉及云计算领域,尤其涉及一种虚拟机簇动态部署方法。

背景技术

[0002] 云计算是一种基于互联网的按需付费模式,用户只需通过互联网便可随时随地获得所需资源和服务,具有价格低廉、高可靠性、高可扩展性等优点。基础设施即服务(Infrastruction as a Service,IaaS)是云计算的主要服务形式,尤其依赖虚拟化技术,虚拟化技术将底层的CPU、内存、硬盘等资源抽象为资源池,并打破了上层系统和软件与底层硬件的耦合,把上层服务封装到虚拟机(Virtual Machine,VM)中,使得用户对资源的需求被定义为对虚拟机的资源配置需求,然后以虚拟机的部署形式实现对资源的管理,使管理更加方便灵活。在云计算环境中,虚拟机部署策略是影响数据中心能效的重要因素之一,其主要的技术难点是资源的不平衡,以及由来自许多不同用户的虚拟机请求而导致的不必要的物理服务器的激活,致使云环境中的资源利用率偏低。
[0003] 目前很多研究者针对虚拟机的部署提出了不同的部署算法,都取得了较好的成果。基于部署算法的种类,可以将这些虚拟机部署方案分成传统方法、启发式方法、基于预测的方法和基于聚类的方法。其中传统部署方法包括轮询法、加权轮询法、贪心法等。随着云数据中心规模的不断扩大,传统的部署方法已经不能很好地满足供应商的要求。一些研究者把虚拟机部署问题看作装箱问题,这是一个NP-难问题,很难在合理的时间内找到最优解,主要通过启发式算法来解决,由于启发式方法要求虚拟机的数量是固定的,这显然违反了云计算的弹性特征,而物理节点工作负载的波动也暴露了装箱方法的缺陷。一些学者提出了基于预测的方法,通过预测物理节点的利用率等信息,使云系统做出更好的部署决策,以减轻负载变化的负面影响,虽然这些工作已经取得很大的进步,但是部署效率依旧不高。
[0004] 为了提高部署效率,最近的研究热点已经从单个虚拟机的部署转变为包含多个虚拟机的虚拟机簇的部署,考虑了同一物理主机上不同虚拟机之间资源竞争的复杂关系,以及应用程序系统不同组件之间的性能依赖关系,但是没有考虑虚拟机之间的通信带宽。
[0005] 因此,如何将缩短部署时间、提高资源利用率、优化数据中心能效和降低系统总带宽作为部署目标,实现虚拟机簇的动态部署成为一个急需解决的问题。

发明内容

[0006] 本发明目的在于提供一种虚拟机簇动态部署方法,以将缩短部署时间、提高资源利用率、优化数据中心能效和降低系统总带宽作为部署目标,实现虚拟机簇的动态部署。
[0007] 为实现上述目的,本发明提供了一种虚拟机簇动态部署方法,包括以下步骤:
[0008] S1:获取主机的负载情况,将主机按照所述负载情况进行降序排列,并对主机进行聚类得到若干个主机簇;
[0009] S2:为每个所述主机簇分配一个参数列表,所述参数列表包括该主机簇中的资源信息;
[0010] S3:获取待部署的虚拟机集合,将所述待部署的虚拟机集合中的各虚拟机按照设定要求聚类为若干个虚拟机簇;
[0011] S4:将虚拟机簇所需的资源与所述主机簇的资源信息进行匹配,若主机簇的资源大于虚拟机簇所需的资源,则将该虚拟机簇部署在该主机簇中。
[0012] 优选地,S1中,所述主机簇为三类,分别为高负载主机簇、中负载主机簇、以及低负载主机簇。
[0013] 优选地,S4中,所述将虚拟机簇所需的资源与所述主机簇的资源信息进行匹配时,匹配顺序为先高负载主机簇,其次为中负载主机簇,最后为低负载主机簇。
[0014] 优选地,所述S3中,所述设定要求为:将存在通信量的虚拟机聚类为一个虚拟机簇,且满足各虚拟机簇之间的通信量尽可能小。
[0015] 优选地,所述资源信息包括主机的CPU、内存以及网络带宽信息中的一种或者任意几种的组合。
[0016] 优选地,每个虚拟机簇的内部通信量为该虚拟机簇中所有成员之间的总通信带宽,每个虚拟机簇的外部通信量为该虚拟机簇中所有成员与所有非内部成员之间的总通信带宽。
[0017] 优选地,所述步骤S3完成之后,还包括步骤:采用决策函数优化每个虚拟机簇。
[0018] 优选地,所述决策函数的计算公式为:
[0019]
[0020] 式中,λ表示簇Ck的构建进展,其中,sk表示虚拟机簇Ck中已有虚拟机的数量,Restk表示Ck的候选虚拟机集合,λ=0表示vmi是第一个要加入该簇的虚拟机,λ=1表示vmi是最后一个要加入簇中的虚拟机,其中,当虚拟机簇为空时,选择OutTi最大的虚拟机作为簇的初始点。
[0021] 本发明具有以下有益效果:
[0022] 本发明提供一种虚拟机簇动态部署方法,通过实时监控数据中心物理主机的负载情况,对主机进行聚类,并基于主机资源限制和通信带宽限制对虚拟机进行聚类,部署时优先选择负载较高的主机进行部署,提高部署时间和资源利用率,降低系统通信带宽。
[0023] 下面将参照附图,对本发明作进一步详细的说明。

附图说明

[0024] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0025] 图1是本发明优选实施例的虚拟机簇动态部署方法流程图;
[0026] 图2是本发明优选实施例的虚拟机簇构建过程示意图;
[0027] 图3是本发明优选实施例的三种算法在部署时间上的对比图;
[0028] 图4是本发明优选实施例的三种算法在总通信带宽上的对比图;
[0029] 图5是本发明优选实施例的三种算法在活跃节点数上的对比图。

具体实施方式

[0030] 以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
[0031] 实施例1
[0032] 如图1所示,本实施例提供一种虚拟机簇动态部署方法,包括以下步骤:
[0033] S1:获取主机的负载情况,将主机按照负载情况进行降序排列,并对主机进行聚类得到若干个主机簇;
[0034] S2:为每个主机簇分配一个参数列表,参数列表包括该主机簇中的资源信息;
[0035] S3:获取待部署的虚拟机集合,将待部署的虚拟机集合中的各虚拟机按照设定要求聚类为若干个虚拟机簇;
[0036] S4:将虚拟机簇所需的资源与主机簇的资源信息进行匹配,若主机簇的资源大于虚拟机簇所需的资源,则将该虚拟机簇部署在该主机簇中。
[0037] 上述的虚拟机簇动态部署方法,通过实时监控数据中心物理主机的负载情况,对主机进行聚类,并基于主机资源限制和通信带宽限制对虚拟机进行聚类,部署时优先选择负载较高的主机进行部署,提高部署时间和资源利用率,降低系统通信带宽。
[0038] 本实施例中,主机簇为三类,分别为高负载主机簇、中负载主机簇、以及低负载主机簇。本实施例中,为每个所述主机簇分配一个参数列表,该参数列表包括该主机簇中的资源信息,通过分配参数表,在部署虚拟机时,只需要对照主机簇的参数列表来检查簇中主机的CPU、空闲内存等信息,而不必逐一搜索每一台主机,从而减少了虚拟机部署时的主机搜索空间,有效缩短了部署时间,提高了用户的服务质量。
[0039] 作为本实施例中优选的实施方式,S4中,将虚拟机簇所需的资源与主机簇的资源信息进行匹配时,匹配顺序为先高负载主机簇,其次为中负载主机簇,最后为低负载主机簇。本实施例中,优先选择负载较高的主机,并以虚拟机簇的形式进行部署,确保具有较高通信带宽的虚拟机对被部署在同一台物理主机上,降低了系统总带宽。
[0040] 具体地,首先,定义第i个物理主机hi的负载量为Li,计算公式为:
[0041]
[0042] 式中, 表示物理主机hi的CPU利用率, 表示物理主机hi的内存利用率,k1、k2都为系数,可在实验中设定。
[0043] 然后将所有主机按负载情况降序排列,定义两个阈值将主机划分为三类。其主机聚类的详细过程包括以下步骤。
[0044] 在该步骤中,H为物理主机列表,Hi为资源配置向量。CHlow为主机簇列表,CHmid为主机簇列表,CHhigh为资源利用率参数列表。
[0045] 步骤一、根据资源配置向量Hi计算每台物理主机的负载量Li。
[0046] 步骤二、将主机的负载量Li降序排列,得到最大值Lmax、最小值Lmin,令中间值Lmid=(Lmax+Lmin)/2。
[0047] 步骤三、令上阈值Lupper=(Lmax+Lmid)/2,下阈值Llower=(Lmin+Lmid)/2。
[0048] 步骤四、获取主机列表H中的第一台主机hi,与两个阈值进行比较。若Li>Lupper,则将物理主机划分到高负载主机簇.insertto CHhigh;若Llowerto CHmid;若Lito CHlow。
[0049] 步骤五、更新物理主机列表H、每台主机的资源配置向量Hi和负载量Li。
[0050] 步骤六、判断主机列表H是否为空,若H不为空,则进入步骤一;若为空,则完成聚类过程。
[0051] 需要说明的是,在云计算环境中,虚拟机之间存在着相互依赖或相互竞争关系,需要进行通信交互,因此虚拟机之间的通信带宽问题很重要。虚拟机簇是与某个应用程序相关的具有通信需求的多个虚拟机的集合,而将具有通信交互的虚拟机聚类形成多个簇,再以簇的形式进行部署,可以有效降低云数据中心的总通信带宽,改善网络性能。
[0052] 首先,把用户提交的多个虚拟机抽象成带权无向图G(V,E)如图2所示,V表示待部署的虚拟机集合,E为表示虚拟机之间通信关系的边集,边的权值表示虚拟机之间的通信带宽需求量。虚拟机聚类就是将图G表示的具有通信交互的虚拟机集合聚成多个簇C1、C2、…、Ck,并满足通信带宽约束条件,即属于不同簇的虚拟机间的带宽需求量达到最小。
[0053] 为了揭示一个虚拟机簇内部与外部的虚拟机之间的通信量关系,本实施例中引入内部通信量InnTi和外部通信量OutTi。对于一个正在构建的虚拟机簇 它的候选成员vmi的内部通信量为该虚拟机与簇Ck中已有成员之间的总通信带宽,记为:
[0054]
[0055] 对于一个正在构建的虚拟机簇 它的候选成员vmi的外部通信量为该虚拟机与所有非Ck内部成员之间的总通信带宽,记为:
[0056]
[0057] 如图2所示,在虚拟机簇的构建过程中,成员是一个一个找到的。理想情况下,簇中的每个虚拟机都有最大的内部通信量InnTi和最小的外部通信量OutTi,但是由于先加入簇中的虚拟机的外部通信量会限制后来添加成员的通信量,所以需要保证当前添加的虚拟机的OutTi适当小以便能够在构建簇的过程中选择InnTi足够大的虚拟机,从而尽可能地把通信量较大的虚拟机放在同一个簇中,而簇与簇之间的通信量越小越好。
[0058] 为了做出更好的决策,对于候选vmi是否应该加入到VM簇中,定义决策函数的计算公式为:
[0059]
[0060] 式中,λ表示簇Ck的构建进展,其中,sk表示虚拟机簇Ck中已有虚拟机的数量,Restk表示Ck的候选虚拟机集合,例如Rest1是所有虚拟机集合,Rest2是除C1外的所有虚拟机集合,λ=0表示vmi是第一个要加入该簇的虚拟机,λ=1表示vmi是最后一个要加入簇中的虚拟机,其中,当虚拟机簇为空时,选择OutTi最大的虚拟机作为簇的初始点。这样做可以保证后续加入簇中的虚拟机和该虚拟机之间的通信量尽可能大,避免了该虚拟机作为其他簇成员时增大簇间的通信量。对于每个虚拟机簇Ck,按照上式计算每个候选虚拟机的Chancei值,然后从候选集中选择Chancei值最大的虚拟机加入,保证了选择的虚拟机具有最大的内部通信量和适当小的外部通信量。决策函数通过对内部通信量和外部通信量的加权处理,充分考虑了虚拟机的总体通信量来做出决策,而不是只考虑所选虚拟机与簇内虚拟机之间的通信量,从而达到更好的效果。
[0061] 需要说明的是,由于虚拟机聚类中Chancei的计算会随着部署过程的进行而受到影响,因此二者是同步的。目标主机选择过程就是为虚拟机过程生成的虚拟机簇选择合适的物理主机完成部署。本实施例中,以先高负载主机簇,再中负载主机簇,最后低负载主机簇的顺序,依次判断当前簇中主机的剩余资源是否能满足相应虚拟机簇的资源需求,如果满足,完成部署,否则考虑下一个主机簇中的主机。
[0062] 具体地,基于聚类的虚拟机簇部署算法CVMD的具体实现步骤如下。
[0063] 首先,将虚拟机簇Ci中各虚拟机的资源需求之和不能超过物理主机hi的资源配置量的计算公式定义为:
[0064]
[0065] 该步骤中,H为物理主机列表,Hi为资源配置向量,V为虚拟机请求列表,VMj为资源需求向量,T为虚拟机间的通信带宽矩阵。
[0066] 步骤一、首先初始化主机簇CHlow,CHmid,CHhigh,初始化虚拟机簇为空集,初始化虚拟机和主机映射对为空集。
[0067] 步骤二、基于资源需求向量VMj和通信带宽矩阵T对虚拟机请求进行建模,得到带权无向图G。
[0068] 步骤三、构建虚拟机簇Ci。
[0069] ①计算每个虚拟机的Chancei值,选择值最大的虚拟机加入簇中。
[0070] ②检查主机簇参数列表,按照先CHhigh,再CHmid,最后CHlow的原则,从相应主机簇中随机选取一台主机hi。
[0071] ③根据上述资源配置量的计算公式判断主机hi剩余资源是否大于当前虚拟机簇的资源需求,若大于,执行第①③步;否则,该虚拟机簇构建完毕,继续执行步骤四。
[0072] 步骤四、将主机簇Ci中各虚拟机与主机hi的映射对加入结果集中,即主机簇Ci完成部署.
[0073] 步骤五、更新物理主机的资源利用率参数列表和虚拟机需求向量VMj,删除图G中相应的节点和边。
[0074] 步骤六、判断图G是否为空集,若不为空,回到步骤三;否则部署完成,输出所有虚拟机和主机映射对。
[0075] 实施例2
[0076] 实验验证。本实施例通过实验进一步对实施例提供的方法进行验证与阐述。
[0077] 该实施例以某网格实验室和Gridbus项目提出的云仿真平台CloudSim的3.0版本作为实验仿真工具,该平台可以在云基础设施上对部署策略的性能进行评估比较。为了验证本实施例1提出的虚拟机簇动态部署方法(CVMD算法)的有效性,将其与该平台默认的部署方法贪婪算法及蚁群算法进行对比,从部署时间、系统总通信带宽和活跃物理节点数目等三个方面进行验证。
[0078] 其中,主机参数表如下表1所示:
[0079] 表1主机参数表
[0080]
[0081] 虚拟机参数表如下表2所示:
[0082] 表2虚拟机参数表
[0083]
[0084] 建立一个数据中心,包含100台主机,通过CPU、内存和网络带宽来描述,具体参数如表1所示。然后提交300个虚拟机请求的虚拟机部署列表,为了避免结果的偶然性,使各虚拟机的参数在一定范围内随机生成,如表2所示,CPU、内存、带宽范围分别设置为(100~300)、(1~5)、以及(30~100)。对于虚拟机之间的通信需求,随机生成通信需求量矩阵T。
[0085] 由于CPU利用率达到70%时,物理节点的能耗最小,且系统性能稳定。因此,本实施例将70%设置为CPU利用率上限,当高负载主机簇CHhigh中主机的CPU资源利用率达到70%时将主机设置为满载状态,部署时不再考虑该主机。为了验证基于聚类的部署算法的重要性,首先随机部署表2中的虚拟机实例使整个系统的负载达到40%,然后分别在虚拟机请求规模为50,100,150,200,250和300个时进行仿真实验,比较不同虚拟机请求数对实验结果的影响。
[0086] 在部署时间方面,云平台的用户与云服务提供商之间达成的服务等级协议(Service Level Agreement,SLA)中提供了对服务质量(Quality of Service,QoS)的详细说明,而部署时间是影响用户QoS的重要因素,因此,一个好的部署算法应当保证部署时间在合理的范围内。其中,本实施例中的几种算法在部署时间上的对比结果如图3所示。
[0087] 从图3可以,当虚拟机请求较少时,三种部署方法的部署时间相差不大,但随着虚拟机请求的不断增多,当请求数大于150时,贪婪算法的性能明显处于劣势,蚁群算法次之,本发明方法的增长幅度最平缓。而实际上云环境中的虚拟机请求数远大于300个,因此本发明提出的CVMD算法在减少部署时间方面呈现出一定的优势。这是因为本发明方法以虚拟机簇为部署单位进行部署,且在选择目标主机时,只需检查相应主机簇的参数列表,而无需逐一检查每个主机的资源使用情况,这两方面的策略均极大地缩短了部署时间。
[0088] 在系统总通信带宽方面,首先,定义系统总通信带宽为:
[0089] NT=∑0
[0090] 式中,Tij表示vmi和vmj之间的通信带宽,S表示通信环境,其计算公式为。
[0091]
[0092] 若vmi和vmj被部署到同一台物理主机上,则S=0;若它们被部署到不同主机上,则S=1。这是因为在同一个主机内部通信不占用网络带宽,对整个系统的通信不会造成很大影响。具体地,上述三种算法在系统总通信带宽方面的对比如图4所示。
[0093] 从图4可知,随着虚拟机请求的逐步增加,本发明方法始终优于其他两种方法,而由于贪婪算法没有考虑虚拟机之间的交互,其带宽需求量增长迅速,蚁群算法相较于贪婪算法有较好的网络性能,但仍次于本发明方法,因为本发明方法将相互之间存在通信带宽的虚拟机聚成一个簇进行整体部署,使得通信带宽较大的虚拟机对尽可能地被部署到同一台物理主机上,从而提高了系统的网络性能。
[0094] 在活跃主机数目方面,上述三种算法在活跃节点数方面的实验结果如图5所示。
[0095] 从图5可以看出,随着虚拟机请求数量的不断增加,三种部署算法激活的服务器数量均呈现上升趋势,其中贪婪算法的活跃主机最多,其次是蚁群算法,本发明方法最少。由于本发明方法在选择目标主机时优先考虑负载较高的主机,在不过载的前提下有效地提高了数据中心的资源利用率,且尽可能少地激活物理节点,减少了活跃节点数,使空闲物理节点处于休眠状态,从而降低了数据中心的能耗。
[0096] 上述实验表明,本发明提出的算法在部署时间、系统总带宽、活跃主机数目和能效方面均取得了良好的效果。
[0097] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。