具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述。
图1为本发明实施例提供的一种数据中心100的架构示意图,如图所示,数据中心100中包括路由器1、路由器2、交换机1、交换机2、交换机3、机柜1、机柜2、机柜3、机柜4、管理主机100、主机1、主机2、主机3、主机4、主机5、主机6和主机7。其中,每个主机上运行有2个虚拟机,如主机1上运行虚拟机1和虚拟机2;主机2上运行虚拟机3和虚拟机4;主机3上运行虚拟机5和虚拟机6;主机4上运行虚拟机7和虚拟机8;主机5上运行虚拟机9和虚拟机10;主机6上运行虚拟机11和虚拟机12;主机7上运行虚拟机13和虚拟机14。
路由器1和路由器2是开放式***互联(Open System Interconnection,OSI)协议模型的网络层中的分组交换设备(或网络层中继设备),其基本功能是把数据(IP报文)传送到正确的网络。
交换机1、交换机2和交换机3是基于网桥技术的多端口的网络设备,交换机内部核心处有一个交换矩阵,为任意两端口间的通信提供通路,或是一个快速交换总线,以使由任意端口接收的数据帧从其他端口送出。为数据帧从一个端口到另一个任意端口的转发提供了低时延、低开销的通路。其中,数据帧(data frame)是数据链路层的协议数据单元,包括帧头、数据部分和帧尾,其中,帧头和帧尾包含一些必要的控制信息,如同步信息、地址信息等;数据部分包括网络层传下来的数据,如IP数据包。
主机1、主机2、主机3、主机4、主机5、主机6和主机7用于部署虚拟化软件,利用主机的物理资源形成虚拟化资源池并运行虚拟机,为企业提供虚拟机。各个主机可以是服务器,如刀片是服务器或机架式服务器。
管理主机100用于管理数据中心100中物理资源和虚拟资源,如存储和管理数据中心100中各个主机的网络拓扑关系,获取虚拟机的网络流量信息并对虚拟机执行迁移操作。其中,各个主机的网络拓扑关系用于标识每个主机所归属的机柜、交换机和路由器的信息。例如,如图1所示,主机1的网络拓扑关系为主机1归属于机柜1、交换机1和路由器1。管理主机可以依据网络拓扑关系对虚拟机进行迁移,实现有效资源调度。
管理主机可以是与图1所示的各个主机本质上相同的物理设备,它们可以是物理配置相同的服务器,也可以是不同物理配置的服务器,其中,物理配置包括处理器、内存、硬盘、网卡的配置。
可选地,管理主机的部署形式可以是采用独立的物理设备部署,也可以与其他运行虚拟机的主机合布在同一个物理设备中,还可以由主机中运行的虚拟机实现管理主机相应的功能。
值得说明的是,本发明的以下描述中,以管理主机为如图1所示的独立物理主机部署形式为例进行详细描述。
管理主机100和各个主机、以及各个主机之间通过交换机和路由器进行通信。例如,如图1所示,机柜1中主机1和主机2可以通过交换机1相通信;机柜1中主机1和主机2可以通过交换机1与机柜2中管理主机100和主机3通过相通信。机柜4中主机6和主机7可以通过交换机3、路由器2、路由器1、交换机1与管理主机100相通信。
值得说明的是,数据中心可以根据业务需求对路由器、交换机、机柜和主机进行合理的网络规划。其中,在数据中心中,路由器、交换机、机柜和主机的数量可以根据业务需求进行调整。相应地,每个机柜中摆放主机的数量、每个交换机接入的主机的数量、以及每个路由器接入的交换机的数量均可以根据业务需求进行调整,本发明不作限制。为便于后续实施例的描述,本发明的以下描述中以图1所示数据中心100的部署结构为例进行详细描述。
图2为本发明实施例提供的一种虚拟机迁移方法的流程示意图,如图所示,所述方法包括:
S101、管理主机获取数据中心中各个虚拟机的网络流量信息。
具体地,每个主机上部署一个网络流量监控模块,用于检测流经该主机上所有虚拟机的网络流量信息,该网络流量信息包括虚拟机发送数据的流量大小。可选地,网络流量信息中还包括源虚拟机和目的虚拟机的IP地址。虚拟机传输数据时,采用OpenFlow技术将虚拟机的网络流量重定向到网络监控模块,以此获取虚拟机的网络流量信息。其中,OpenFlow技术利用流表方式规定网络流量的流向,是一种新型网络交换模型。流表由一个或多个流表项组成,每个流表项就是一个转发规则。进入虚拟交换机的数据包通过查询流表来获得转发的目的端口。网络监控模块记录其网络流量信息,并将该网络流量信息存储至指定文件或数据库。当主机利用数据库存储网络流量信息时,该数据库可以是主机上部署数据库软件实现对网络流量信息的存储,也可以是利用主机外的数据库存储网络流量信息。
可选地,每个主机也可以采用“钩子机制”监控虚拟机的网络流量信息。
具体地,在虚拟机中部署网络监控模块,在主机上部署虚拟机监控器(virtualmachine monitor,VMM),通过内核模块加载接口,将数据包捕获模块和数据缓存模块加载到内核中;将虚拟机监控模块和数据缓存模块建立通信连接;监控模块下发过滤地址列表到内核,监控模块发送启动命令到内核;数据包捕获模块监听TCP/IP协议栈中数据;根据地址过滤表复制数据包,并存储到数据缓存模块的缓存中;数据缓存模块将数据发送到监控模块;监控模块提取数据包的基本信息,统计分析数据流量,展示统计分析结果及告警。
还值得说明的是,每个主机或虚拟机部署的网络监控模块其本质上为一个软件模块,也可以制作成协处理器,并将该协处理器安装在主机之间的网络接口处,以便于准确及时地捕获不同虚拟机之间传递的数据,获取网络流量信息。
进一步地,管理主机可以向数据中心中主机发送获取各个虚拟机的网络流量信息的请求消息,各个主机再将虚拟机的网络流量信息发送给管理主机。可选地,各个主机也可以周期性向管理主机主动发送各个虚拟机的网络流量信息。
S102、管理主机确定网络流量信息中流量大于或等于第一阈值的虚拟机的数量为第一数值。
具体地,管理主机通过记录各个虚拟机网络流量信息的指定文件或数据库确定网络流量信息中流量大于或等于第一阈值的虚拟机的个数。为便于后续描述,将网络流量信息中流量大于或等于第一阈值的虚拟机的个数记为第一数值。
S103、当第一数值大于或等于第二阈值时,管理主机根据聚类算法将虚拟机划分为第一数值个点群,并确定每个点群的中心虚拟机所在主机的IP地址。
具体地,管理主机确定第一数值是否大于或等于第二阈值。当第一数值大于或等于第二阈值时,根据聚类算法将数据中心中所有主机划分成第一数值个点群。其中,所谓聚类就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用聚类算法将D划分成至少两个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。每个子集称为一个点群,每个点群有一个中心虚拟机,点群的中心虚拟机为根据聚类算法计算获得的收敛的点群中心。相应地,在本发明实施例中,元素集合D即为多个虚拟机组成的集合,每个虚拟机的网络流量信息是该虚拟机的多个可观察属性中一种。本发明实施例中,利用虚拟机之间的距离衡量不同虚拟机之间的相异度。点群的个数与流量大于或等于第一阈值的虚拟机的个数相同。
进一步地,聚类算法包括K-means算法。管理主机根据K-means算法划分点群的过程具体如下:
S1031、管理主机根据数据中心中虚拟机聚类的程度选择点群的个数。
其中,聚类的程度可以根据业务需求进行配置。例如,如步骤S201中将网络流量信息中流量大于或等于第一阈值的虚拟机的个数确定为点群的个数。
可选地,管理主机也可以根据预设值确定点群的个数。例如,预设值根据数据中心中业务数据分析确定为3,那么,管理主机可以依据该预设值直接确定将虚拟机划分为3个点群。或者,当管理主机确定超过阈值的虚拟机的个数为第一预设值时,将虚拟机划分为10个点群;当管理主机确定超过阈值的虚拟机的个数为第二预设值时,将虚拟机划分为5个点群。
S1032、管理主机根据虚拟机的网络流量信息获得虚拟机的流量矩阵。
管理主机可以根据获取的每个虚拟机的网络流量信息确定该虚拟机向其他虚拟机发送数据的流量大小,由此获得虚拟机的流量矩阵。
例如,数据中心中有n个虚拟机,虚拟机的流量矩阵可以用X={Xm|m=1,2,...,n}表示。其中,样本Xi可以表示为Xi=(Xi1,Xi2,…,Xin),样本Xj可以表示为Xj=(Xj1,Xj2,…,Xjn),Xi1,Xi2,…,Xin是样本Xi对应虚拟机到其他虚拟机之间的流量大小,Xj1,Xj2,…,Xjn是样本Xj对应虚拟机到其他虚拟机之间的流量大小。
S1033、管理主机确定任意两个样本点之间的流量相关性。
具体地,样本Xi和Xj之间的流量相关性用它们之间的距离d(Xi,Xj)来表示,距离越小,表示两个样本点之间有流量相关性越大,两个虚拟机之间流量往来越大。管理主机可以利用如下公式计算两个样本点之间的距离:
其中,n为数据中心中虚拟机的个数。
S1034、管理主机确定点群和每个点群的中心虚拟机。
具体地,管理主机确定每个点群的中心虚拟机的过程包括以下步骤:
S10341、管理主机随机选择第一数值个虚拟机分别作为第一数值个点群的第一中心虚拟机。
其中,为了便于后续表述,将第一数值标记为a,即管理主机需要将虚拟机划分为a个点群。管理主机随机选择a个第一中心虚拟机分别作为a个点群的中心虚拟机。
S10342、管理主机将数据中心的虚拟机划分成a个点群。
若假设需要将虚拟机划分为a个点群,那么,管理主机首先根据点群的个数在点群中任意选择a个虚拟机分别作为每个点群的第一中心虚拟机,然后分别计算数据中心中每个虚拟机的网络流量与a个第一中心虚拟机的距离,将该虚拟机划分至与其距离最近的第一中心虚拟机所在点群。例如,假设管理主机需要划分2个点群,首先,选择虚拟机1为点群1的第一中心虚拟机,虚拟机2为点群2的第一中心虚拟机。然后,计算虚拟机3与虚拟机1和虚拟机2的距离分别为2.0和2.5,那么,管理主机可以将虚拟机3划分至点群1。依此类推,数据中心中每个虚拟机都会被划分至一个点群。
值得说明的是,不同点群中虚拟机的个数可以相同,也可以不同,具体实施过程中,可以依据虚拟机与各个点群的第一模拟中心虚拟机之间的距离确定,本发明不作限制。
S10343、管理主机取步骤S10342中每个点群中各个虚拟机的网络流量的算数平均数作为该点群的第一模拟中心虚拟机的网络流量信息。
p为点群内虚拟机的个数,n为数据中心中虚拟机总数。
示例地,若数据中心中有6个虚拟机,点群1包括虚拟机1和虚拟机3两个虚拟机,虚拟机1的网络流量信息为X1=(0,1,2,3,4,5),虚拟机3的网络流量信息为X3=(6,5,0,4,3,2),那么,CO中第一个采样值为(0+6)/2=3,第二个采样值为(1+5)/2=3,…,依此类推,经计算可确定C0=(3,3,1,3.5,3.5,3.5)。
S10344、管理主机分别在各个点群中计算第一模拟中心虚拟机和点群中其他虚拟机之间的距离,将距离第一模拟中心虚拟机最近的虚拟机确认为第二中心虚拟机。
其中,第一模拟中心虚拟机与点群中其他虚拟机之间的距离计算方法与步骤S1033类似。具体如下:
示例地,假设点群1中包括虚拟机1和虚拟机3,虚拟机3与第一模拟中心虚拟机的距离小于虚拟机1与第一模拟中心虚拟机的距离,那么,虚拟机3为点群1新的中心虚拟机。为便于后续描述,将步骤S10344确认的中心虚拟机记为第二中心虚拟机。
S10345、比较第一中心虚拟机和第二中心虚拟机。当第一中心虚拟机和第二中心虚拟机相同时,管理主机确定第一虚拟机为点群中心,即经过聚类算法确定的中心虚拟机与聚类前确认的中心虚拟机相同。
当第一中心虚拟机和第二中心虚拟机不同时,继续执行步骤S10346。
S10346、当第一中心虚拟机和第二中心虚拟机不同时,管理主机分别计算各个点群的第二中心虚拟机和数据中心中所有虚拟机的距离,并重新划分点群。
其中,计算第二中心虚拟机和其他虚拟机的距离公式与步骤S1033类似。划分点群的方法与步骤S10342类似,需要先计算数据中心中每个虚拟机与各个点群的第二中心虚拟机之间的距离,将虚拟机划分至与其距离最近的第二中心虚拟机所在点群。
S10347、在步骤S10346重新划分的点群中利用步骤S10343和S10344中公式确定新的第三中心虚拟机。
具体地,在步骤S10346重新划分的点群中再利用步骤S10343的方法确定一个模拟中心虚拟机的网络流量信息,然后再利用步骤S10344的方法确定点群的中心虚拟机为第三中心虚拟机。
S10348、当第三中心虚拟机和第二中心虚拟机相同时,则确定第三中心虚拟机为该点群的中心虚拟机。
S10349、当第三中心虚拟机和第二中心虚拟机不同时,重复执行步骤S10342至步骤S10346。
值得说明的是,每个点群中心虚拟机的确认过程需要经过多次迭代处理过程,每次迭代处理过程依次完成“划分点群”、“确认模拟中心虚拟机”、“比较本轮确定的模拟中心虚拟机与上一轮确定的模拟中心虚拟机是否一致”几个步骤。当本轮确定的模拟中心虚拟机与上一轮确定的模拟中心虚拟机一致时,此时,可以理解为经过聚类算法计算确定的结果收敛,管理主机可以确定点群的真实中心虚拟机,并依此完成虚拟机的迁移处理。
进一步地,管理主机根据网络拓扑关系可以确定点群的中心虚拟机所在主机的IP地址。
S104、管理主机根据每个中心虚拟机所在主机的资源剩余率、调度优先级和网络拓扑关系生成虚拟机迁移策略。
其中,网络拓扑关系为管理机主机记录的每个主机所归属的机柜、交换机和路由器信息。当管理主机确定每个点群的中心虚拟机后,为了减少同一点群中虚拟机之间网络传输过程所产生的网络流量,可以对同一点群中的其他虚拟机执行迁移操作。
调度优先级由高到低可以按照中心虚拟机所在主机、与中心虚拟机所在主机归属同一机柜、与中心虚拟机所在主机归属同一交换机和与中心虚拟机所在主机归属同一路由器的顺序进行调度。表1为调度优先级的一种示例。其中,优先级标识为1至4,1为最高优先级,4为最低优先级。
表1 一种调度优先级的示例
调度范围 |
优先级 |
中心虚拟机所在主机 |
1 |
与中心虚拟机所在主机同一机柜的其他主机 |
2 |
与中心虚拟机所在主机同一交换机的其他主机 |
3 |
与中心虚拟机所在主机同一路由器的其他主机 |
4 |
进一步地,管理主机根据中心虚拟机所在主机的资源剩余率、调度优先级和网络拓扑关系生成虚拟机迁移策略的过程如下:
S1041、判断中心虚拟机所在主机资源剩余率是否满足点群中其他虚拟机的迁移要求。
S1042、当中心虚拟机所在的主机资源剩余率满足点群中其他虚拟机的迁移要求时,优先根据中心虚拟机所在主机的IP地址将点群中其他虚拟机迁移至中心虚拟机所在的主机。
S1043、当中心虚拟机所在主机资源剩余率不满足点群中其他虚拟机的迁移要求时,判断与中心虚拟机所在主机归属同一机柜的其他主机资源剩余率是否满足点群中其他虚拟机的迁移要求。
S1044、当与中心虚拟机所在主机归属同一机柜的其他主机资源剩余率满足点群中其他虚拟机的迁移要求时,将点群中其他虚拟机迁移至中心虚拟机所在主机归属同一机柜的其他主机。
S1045、当与中心虚拟机所在主机归属同一机柜的其他主机资源剩余率不满足点群中其他虚拟机的迁移要求时,判断与中心虚拟机所在主机归属同一交换机的其他主机资源剩余率是否满足点群中其他虚拟机的迁移要求。
S1046、当与中心虚拟机所在主机归属同一交换机的其他主机资源剩余率满足点群中其他虚拟机的迁移要求时,将点群中其他虚拟机迁移至中心虚拟机所在主机归属同一交换机的其他主机。
S1047、当与中心虚拟机所在主机归属同一交换机的其他主机资源剩余率不满足点群中其他虚拟机的迁移要求时,判断与中心虚拟机所在主机归属同一路由器的其他主机资源剩余率是否满足点群中其他虚拟机的迁移要求。
S1048、当与中心虚拟机所在主机归属同一路由器的其他主机资源剩余率满足点群中其他虚拟机的迁移要求时,将点群中其他虚拟机迁移至中心虚拟机所在主机归属同一路由器的其他主机。
S1049(可选地)、当与中心虚拟机所在主机归属同一路由器的其他主机资源剩余率不满足点群中其他虚拟机的迁移要求时,维护人员可以扩容数据中心中主机,管理主机识别新增主机,并按照调度优先级将点群中其他虚拟机迁移至扩容的主机。
可选地,参考调度优先级的顺序,扩容操作可以根据业务需求按照如下几种方式中任意一种进行扩容:
方式一:在中心虚拟机所在主机所归属的机柜范围内进行扩容。
方式二:在中心虚拟机所在主机所归属的交换机范围内进行扩容。
方式三:在中心虚拟机所在主机所归属的路由器范围内进行扩容。
可选地,扩容主机的三种方式中也可以按照方式一、方式二和方式三的由高到低的顺序依次考虑如何进行扩容操作,以保证点群中虚拟机之间数据传输过程中产生的网络流量最小化。
值得说明的是,随着数据中心中业务扩充,也可能需要扩容主机,此时,管理主机需要识别新增主机,并按照调度优先级将虚拟机迁移至与点群的中心虚拟机所在主机距离较近的主机。
可选地,管理主机对同一点群中虚拟机迁移的过程还可以考虑虚拟机业务的亲和性,将虚拟机运行在不同主机,以保证业务可靠性。例如,虚拟机1和虚拟机2为部署同一业务的不同虚拟机,且虚拟机1和虚拟机2在同一点群中。根据预设的亲和性策略,虚拟机1和虚拟机2不能够运行在同一主机上,那么,管理主机所生成的迁移策略还应考虑虚拟机之间的亲和性生成迁移策略,如将虚拟机1迁移至中心虚拟机所在的主机,将虚拟机2迁移至与中心虚拟机所在的主机在同一机柜的其他虚拟机中。
在本发明实施例提供的一种虚拟机迁移过程中,对于同一个点群中虚拟机的迁移处理,优先考虑将点群中其他虚拟机迁移至中心虚拟机所在主机。当中心虚拟机所在主机剩余资源无法满足点群中所有虚拟机的资源要求时,可以根据中心虚拟机所在主机的资源剩余率,优先将一部分虚拟机迁移至中心虚拟机所在主机,将另一部分虚拟机迁移至与中心虚拟机所在主机归属同一机柜的其他主机,或者将另一部分虚拟机迁移至与中心虚拟机所在主机归属同一交换机的其他主机,或者将另一部分虚拟机迁移至与中心虚拟机所在主机归属同一路由器的其他主机。
还值得说明的是,本发明实施例中所述迁移过程均为热迁移,即在不中断业务的情况下,完成内存数据和虚拟机状态的迁移,迁移过程对用户透明,用户感觉不到应用中断。利用热迁移技术将虚拟机从一个主机迁移到另一个主机的过程为现有技术,本发明不再赘述。
通过上述内容的描述,本发明实施例通过聚类算法确定不同点群和点群中心虚拟机,并将同一点群中不同虚拟机按照调度优先级迁移至中心虚拟机所在主机,或与点群的中心虚拟机所在主机归属同一个主机,或归属同一机柜的不同主机,或归属同一交换机的不同主机,或归属同一路由器的的不同主机,由此减少数据中心中所有虚拟机之间网络流量,降低数据中心能源消耗。另一方面,通过聚类算法和调度优先级迁移虚拟机的方法,将流量相关性较强的虚拟机迁移至就近的主机,能够减少虚拟机之间数据传输的时间,提升数据传输的效率。
接下来,结合图4为本发明实施例提供的另一种数据中心200的架构示意图。如图所示,如图所示,假设数据中心200中存在4个主机和6个虚拟机,主机1中运行虚拟机1、虚拟机2,主机2中运行虚拟机3,主机3中运行虚拟机4和虚拟机5,主机4中运行虚拟机6。主机1和主机2归属同一机柜,主机1、主机2和主机3归属同一交换机,主机4通过一个独立的交换机连接路由器,所有主机归属同一路由器。管理主机根据虚拟机的网络流量信息得到虚拟机的流量矩阵如下:
其中,X1=(0,1,2,3,4,1),X1表示虚拟机1向其他虚拟机发送数据的流量大小,例如,第一个采样值0表示虚拟机1向虚拟机1发送数据的流量大小为0,第二个采样值1表示虚拟机1向虚拟机2发送数据的流量大小为1,…,第6个采样值1表示虚拟机1向虚拟机5发送数据的流量大小为1。类似地,X2=(1,0,3,4,1,0),X2表示虚拟机2向其他虚拟机发送数据的流量大小,例如,第一个采样值1表示虚拟机2向虚拟机1发送数据的流量大小为1。
管理主机再根据虚拟机的流量矩阵和步骤S1033中距离计算公式确定任意两个样本点之间的流量相关性。表2为一种根据上述虚拟机流量矩阵计算获得的流量相关性的结果的示例:
表2 一种任意两个虚拟机之间流量相关性的示例
|
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X1 |
0 |
3.7 |
5.7 |
6.8 |
6.6 |
2.4 |
X2 |
3.7 |
0 |
4.7 |
6.6 |
6.2 |
3.5 |
X3 |
5.7 |
4.7 |
0 |
7.3 |
5.3 |
5 |
X4 |
6.8 |
6.6 |
7.3 |
0 |
6.2 |
6.9 |
X5 |
6.6 |
6.2 |
5.3 |
6.2 |
0 |
5.5 |
X6 |
2.4 |
3.5 |
5 |
6.9 |
5.5 |
0 |
若假设第一阈值为5,从虚拟机的流量矩阵中可以确定虚拟机3和虚拟机4向其他虚拟机发送数据的流量等于5,则将所有虚拟机划分成2个点群。具体确认点群中心虚拟机的方法如下:
步骤1:任意选择虚拟机1为点群1的第一中心虚拟机,虚拟机2为点群2的第一中心虚拟机。
步骤2:将数据中心中虚拟机划分至不同点群。
依次计算虚拟机3、虚拟机4、虚拟机5和虚拟机6中每个虚拟机与虚拟机1和虚拟机2的距离,然后将各个虚拟机归属至与任意一个点群的中心虚拟机距离最近的点群中。例如,虚拟机3与虚拟机1的距离为5.7,虚拟机3与虚拟机2的距离为4.7,即虚拟机3与虚拟机2的距离小于其与虚拟机1的距离,则将虚拟机3划分到虚拟机2的点群中。依此类推,点群1中包括虚拟机1和虚拟机6,点群2中包括虚拟机2、虚拟机3、虚拟机4和虚拟机5。
步骤3:参考步骤S10343中公式C0={Xm|m=1,2,…,k}和
在每个点群中确定第一模拟中心虚拟机的流量。
示例地,假设点群1中包括虚拟机1、虚拟机3和虚拟机6,X1=(0,1,2,3,4,1)、X3=(2,3,0,5,0,1)、X6=(1,0,1,2,3,0),那么,C0=(1,1.3,1,3.3,2.3,0.7)。
参考S10343的公式定点群1中其他虚拟机与第一模拟虚拟机的距离。那么,在点群1中虚拟机1和虚拟机6与第一模拟中心虚拟机的距离分别为:d(C0,X1)为2.3,d(C0,X6)为2.1。那么,点群1中虚拟机与第一模拟中心虚拟机之间距离由近及远依次为虚拟机6<虚拟机1,距离第一模拟中心虚拟机最近的虚拟机为虚拟机6,则管理主机确定虚拟机6为点群1的第二中心虚拟机。同样地,可以利用相同方法确定点群2的第一模拟中心虚拟机流量C0’=(2.7,1.7,2.7,1.7,0.7,1.7)。再根据点群2中虚拟机2、虚拟机3、虚拟机4和虚拟机5的流量X2=(1,0,3,4,1,0)、X3=(2,3,0,5,0,1)、X4=(3,4,5,0,1,2)和X5=(4,1,0,1,0,3)确定点群2的第一模拟中心虚拟机与其他虚拟机的距离分别为:d(C0’,X2)为3.8,d(C0’,X3)为4.8,d(C0’,X4)为3.7,d(C0’,X5)为3.5。那么,点群2中虚拟机与第一模拟中心虚拟机之间距离由近及远依次为虚拟机5<虚拟机4<虚拟机2<虚拟机3,距离第一模拟中心虚拟机最近的虚拟机为虚拟机5,则管理主机确定虚拟机5为点群2的第二中心虚拟机。
步骤4:比较第二中心虚拟机和第一中心虚拟机,当第二中心虚拟机和第一中心虚拟机相同时,管理主机确定第二中心虚拟机为点群的中心。当第二中心虚拟机和第一中心虚拟机不同时,管理主机继续执行步骤5。
由步骤3获知点群1的第二中心虚拟机是虚拟机6,点群2的第二中心虚拟机是虚拟机5。步骤1中点群1的第一中心虚拟机是虚拟机1,点群2的第一中心虚拟机是虚拟机2。两个点群中第一中心虚拟机和第二中心虚拟机不同,继续执行步骤5。
步骤5:重复步骤步骤2至步骤4,直到当前获得的中心虚拟机与上一轮确定的中心虚拟机相同时,则确定当前获得的中心虚拟机为点群的中心虚拟机。
接步骤3的示例,经过计算获得点群1中第二中心虚拟机为虚拟机6,点群2中第二中心虚拟机为虚拟机5。管理主机需要重新根据每个虚拟机与各个点群的第二中心虚拟机的距离划分点群。例如,分别计算虚拟机1和虚拟机5的距离为6.6,以及虚拟机1和虚拟机6的距离为2.4,那么虚拟机1归属点群2。依此类推,可以确定点群1中包括虚拟机6、虚拟机1、虚拟机2和虚拟机3;点群2中包括虚拟机4和虚拟机5。然后,在新划分的点群中参考步骤3的方法计算各个点群中所有虚拟机的算数平均数作为新的模拟中心虚拟机的网络流量信息,为便于后续描述,将此步骤中计算的模拟中心虚拟机记为第二模拟中心虚拟机。然后再计算每个点群中第二模拟中心虚拟机和其他虚拟机的距离,确定距离第二模拟中心虚拟机最近的虚拟机为新的中心虚拟机,为便于后续描述,将该新的中心虚拟机记为第三中心虚拟机。再比较第三中心虚拟机和第二中心虚拟机,当二者相同时,确定第三中心虚拟机为点群中心。当二者不同时,再重复上述步骤重新确定新的点群和点群的中心虚拟机,直到当前确定的中心虚拟机与上一轮所确定的中心虚拟机相同。
步骤6:管理主机再根据中心虚拟机所在主机的资源剩余率、调度优先级和网络拓扑关系生成虚拟机迁移策略。
若假设点群1的中心虚拟机为虚拟机6,虚拟机6运行在主机4中。当主机4的资源剩余率满足虚拟机1和虚拟机3的资源要求时,优先将虚拟机1和虚拟机3迁移至主机4;当主机4的资源剩余率仅能满足虚拟机3的资源要求时,则将虚拟机3迁移至主机4。再进一步判断是否存在与主机4归属同一机柜,或同一交换机,或者同一路由器的主机的资源剩余率满足虚拟机1的资源要求,并按照调度优先级的策略,依次考虑迁移至同一机柜范围的主机、或同一交换机范围的主机、或同一路由器范围的主机。结合本示例的假设,并无与主机4归属同一机柜或同一交换机的主机,主机3是与主机4归属同一路由器的主机,当主机3剩余资源量能够满足虚拟机1的资源需求时,管理主机可以将虚拟机1迁移至主机3。
假设点群2的中心虚拟机为虚拟机5,虚拟机5运行在主机3中。当主机3的资源剩余率满足虚拟机2和虚拟机4的资源需求时,优先将虚拟机2和虚拟机4迁移至主机3。当主机3的剩余资源率仅能满足虚拟机2的资源需求时,则将虚拟机2迁移至主机3。再进一步判断是否存在与主机3归属同一机柜,或同一交换机,或者同一路由器的主机的资源剩余率满足虚拟机4的资源要求,并按照调度优先级的策略,依次考虑迁移至同一机柜范围的主机、或同一交换机范围的主机、或同一路由器范围的主机。结合结合本示例的假设,并无与主机4归属同一机柜的主机,主机1和主机2是与主机3归属同一交换机的主机,当主机1或主机2的剩余资源量能够满足虚拟机4的资源需求时,管理主机可以将虚拟机4迁移至主机1或主机2。
值得说明的是,本实施例中流量矩阵中取值、两个虚拟机之间距离的数值仅为一种示例,均按照保留小数点后一位进行处理,以上示例的处理方法并不构成对本发明的限制。
由上述内容的描述可知,同一主机内虚拟机之间数据传输是在服务器内部进行处理,同一交换机和同一路由器范围内虚拟机之间数据传输过程所经过的传输路径,相比与不同交换机和路由器之间的传输路径短,可以减少数据中心200中网络流量。另一方面,也可以降低数据传输的时间。本发明实施例通过聚类算法确定不同点群,并将同一点群中虚拟机按照调度优先级迁移至距离较近的主机中,以此减少点群1中虚拟机之间数据传所产生的网络流量,减少数据传输的时间,提升数据传输的效率。
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。
上文中结合图1至图4,详细描述了根据本发明实施例所提供的一种虚拟机迁移的方法,下面将结合图5至图6,描述根据本发明实施例所提供的一种虚拟机迁移的装置和设备。
图5为本发明实施例提供的一种虚拟机迁移的装置500,所述装置500包括获取单元501、处理单元502和迁移单元503;
所述获取单元501,用于获取数据中心中各个虚拟机的网络流量信息;
所述处理单元502,用于根据所述获取单元501获取的所述网路流量信息确定所述网络流量信息中流量大于或等于第一阈值的虚拟机的第一数值;当所述第一数值大于或等于第二阈值时,根据聚类算法将虚拟机分成所述第一数值个点群,并确定所述第一数值个点群中每个点群的中心虚拟机所在主机的IP地址;
所述迁移单元503,用于根据所述每个点群的虚拟机所在主机的资源剩余率、调度优先级和网络拓扑关系生成虚拟机迁移策略;
其中,所述网络流量信息包括流量大小;所述第一数值个点群中每个点群包括至少一个虚拟机;所述中心虚拟机为根据所述聚类算法计算获得的收敛的点群中心;所述网络拓扑关系用于标识每个主机所归属的机柜、交换机和路由器。
可选地,所述调度优先级由高到低的顺序依次为与所述每个点群的中心虚拟机所在主机归属同一主机、同一机柜、同一交换机或同一路由器。
可选地,所述聚类算法包括K-means聚类算法;所述处理单元502根据聚类算法将虚拟机分成所述第一数值个点群,并确定所述第一数值个点群中每个点群的中心虚拟机所在主机的IP地址,包括:
随机选择第一数值个虚拟机分别作为所述第一数值个点群中每个点群的第一中心虚拟机;
根据获取的所述数据中心中各个虚拟机的网络流量获得虚拟机流量矩阵X={Xm|m=2,2,...,n},其中,X中的样本点的取值为虚拟机到其他虚拟机的流量大小;
根据距离公式分别计算第一虚拟机与所述第一数值个点群的第一中心虚拟机之间的距离,将所述第一虚拟机划分至距离最近的第一中心虚拟机所在点群,所述距离公式为
其中,Xi为第一中心虚拟机的网络流量信息,Xj为第一虚拟机的网络流量信息,n为所述数据中心中虚拟机的个数;
计算所述第一数值个点群中每个点群中所有虚拟机的算数平均值作为所述每个点群的第一模拟中心虚拟机的网络流量信息;
在所述每个点群中计算所述第一模拟中心虚拟机和其他虚拟机的距离,并确定与所述第一模拟中心虚拟机距离最近的虚拟机为所述每个点群的第二中心虚拟机;
当所述第二中心虚拟机与所述第一中心虚拟机相同时,确定所述第二虚拟机为所述每个点群的中心虚拟机;
则所述第一数值个点群中每个点群的中心虚拟机所在主机的IP地址为所述第二虚拟机所在主机的IP地址。
可选地,所述迁移单元503,还用于当所述第一中心虚拟机与所述第二中心虚拟机不同时,根据第二中心虚拟机和所述距离公式重新划分点群,并确认新的点群的中心虚拟机为第三中心虚拟机;当所述第三中心虚拟机与所述第二中心虚拟机相同时,确定所述第三虚拟机为所述每个点群的中心虚拟机。
则所述第一数值个点群中每个点群的中心虚拟机所在主机的IP地址为所述第三虚拟机所在主机的IP地址。
可选地,所述迁移单元503,还用于当所述每个点群的中心虚拟机所在的主机资源剩余率足够的情况下,根据所述每个点群的中心虚拟机所在主机的IP地址将其他虚拟机迁移到中心虚拟机所在的主机;或者
当所述每个点群的中心虚拟机所在主机资源使用率不足,且与所述中心虚拟机所在主机归属同一机柜的其他主机的资源剩余率足够的情况下,将点群中其他虚拟机迁移至与中心虚拟机所在主机归属同一机柜的其他主机;或者
当所述每个点群的中心虚拟机所在主机和与所述中心虚拟机所在主机归属同一机柜的其他主机的资源使用率不足,且与所述中心虚拟机所在主机归属同一交换机的其他主机资源剩余率足够的情况下,将点群中其他虚拟机迁移至与中心虚拟机所在主机归属同一交换机的其他主机;或者
当所述每个点群的中心虚拟机所在主机和与所述中心虚拟机所在主机归属同一机柜的其他主机、以及与所述中心虚拟机所在主机归属同一交换机的其他主机的资源使用率不足,且与所述中心虚拟机所在主机归属同一路由器的其他主机的资源剩余率足够的情况下,将点群中其他虚拟机迁移至所述中心虚拟机所在主机归属同一路由器的其他主机。
可选地,所述迁移单元503,根据虚拟机亲和性策略迁移虚拟机。
应理解的是,本发明实施例的装置500可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图2和图3所示的虚拟机迁移的方法时,装置500及其各个模块也可以为软件模块。
根据本发明实施例的装置500可对应于执行本发明实施例中描述的方法,并且装置500中的各个单元的上述和其它操作和/或功能分别为了实现图2和图3所述方法中管理主机所执行的相应流程,为了简洁,在此不再赘述。
图6为本发明实施例提供的一种虚拟机迁移的设备600的结构示意图,如图所示,所述设备600包括处理器601、存储器602、通信接口603和总线604。其中,处理器601、存储器602、通信接口603通过总线604进行通信,也可以通过无线传输等其他手段实现通信。该存储器602用于存储指令,该处理器601用于执行该存储器602存储的指令。该存储器602存储程序代码,且处理器601可以调用存储器602中存储的程序代码执行以下操作:
获取数据中心中各个虚拟机的网络流量信息;
确定所述网络流量信息中流量大于或等于第一阈值的虚拟机的数量为第一数值;
当所述第一数值大于或等于第二阈值时,根据聚类算法将虚拟机分成所述第一数值个点群,并确定所述第一数值个点群中每个点群的中心虚拟机所在主机的IP地址;
根据所述每个点群的中心虚拟机所在主机的资源剩余率、调度优先级和网络拓扑关系生成虚拟机迁移策略;
其中,所述网络流量信息包括流量大小;所述第一数值个点群中每个点群包括至少一个虚拟机;所述中心虚拟机为根据所述聚类算法计算获得的收敛的点群中心;所述网络拓扑关系用于标识每个主机所归属的机柜、交换机和路由器。
应理解,在本发明实施例中,该处理器601可以是CPU,该处理器601还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch linkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
该总线604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线604。
应理解,根据本发明实施例的设备600对应于本发明实施例图1中管理主机100,该设备600用于实现图2和图3所示方法中管理主机所执行的相应流程,为了简洁,在此不再赘述。
可选地,本发明实施例中管理主机100的部署形式也可以是与其他运行虚拟机的主机合布在同一物理设备中,或者,由主机中运行的虚拟机实现管理主机相应的功能。此时,设备600同样可以用于标识管理主机的结构。其中,对于管理主机由虚拟机部署的形式,处理器601、存储器602、通信接口603和总线604为虚拟化软件形成的对应虚拟设备的组件。为了简洁,在此不再赘述。
综上所述,通过本发明实施例提供的一种虚拟机迁移的方法、装置和设备,可以从整体考虑数据中心中所有虚拟机的网络流量,按照聚类算法将具有流量相关性的虚拟机按照调度优先级迁移至一个主机或距离相近的多个主机,减少任意两个虚拟机之间数据传输所产生的网络流量,从根本上降低数据中心中网络流量。另一方面,由于具有流量相关性的虚拟机被迁移至一个主机或距离相近的多个主机,减少了虚拟机之间数据传输过程中所耗费的时间,提升数据传输效率。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state disk,SSD)。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述,仅为本发明的具体实施方式。熟悉本技术领域的技术人员根据本发明提供的具体实施方式,可想到变化或替换,都应涵盖在本发明的保护范围之内。