一种虚拟机升级方法及相关设备与流程

文档序号:17600747发布日期:2019-05-07 20:15阅读:210来源:国知局
一种虚拟机升级方法及相关设备与流程

本申请涉及操作系统领域,尤其涉及一种虚拟机升级方法及相关设备。



背景技术:

在云化场景下,服务实例(如,处理某些业务的进程)运行在不同的虚拟机(virtualmachine,vm)中,在系统首次部署完成之后,随着业务持续运行,系统中的服务实例和vm由于提供新特性或修复问题的需要,会推出新版本,此时运行环境就需要升级。服务实例的升级需要重启进程,vm的升级(主要是vm内运行的操作系统升级)需要重启vm,此时vm上运行的服务实例也会同时重启。因此,当vm升级时vm上所承载的业务就会中断。

现有技术方案提供了两种虚拟机的部署场景。如图1(a)所示,图1(a)是现有技术方案提供的一种分平面固定部署场景的示意图。其中,长方形表示一个vm,椭圆形表示一个服务实例,[s].[服务类型][服务实例编号]表示某种服务类型的服务实例的编号,例如s.a1表示a服务类型的1号服务实例。将多个vm等量地划分为两个虚拟机组(即两个平面),不同服务类型的服务实例均匀分布到两个平面中,其中一个平面为主平面,用于处理业务请求,另一个平面为备平面,用于实时备份主平面的运行数据,但是不处理业务请求。在该场景下,首先升级备平面,升级完成后执行平面倒换,然后升级原来的主平面。虽然升级效率高,但是需要部署大量的冗余资源。如图1(b)所示,图1(b)是现有技术方案提供的另一种分布式动态部署场景的示意图,将所有vm作为一个集群对待,每个vm地位平等,不同类型的服务实例任意分布到不同的vm,在该场景下采用滚动升级方式,即逐个升级vm。因此升级效率很低。



技术实现要素:

本申请实施例提供一种虚拟机升级方法及相关设备,减少了资源冗余,提高了虚拟机的升级效率。

第一方面,本申请实施例提供了一种虚拟机升级方法,包括:

首先控制器向执行器发送升级请求;然后执行器根据升级请求,从调度器中获取虚拟机和服务实例的部署信息,服务实例运行在虚拟机中;根据部署信息,确定每个虚拟机对的亲和系数,亲和系数用于表示每两个虚拟机之间的相关性,根据亲和系数,将多个虚拟机划分为两个虚拟机组;最后调度器先后对两个虚拟机组中的虚拟机进行升级。从而最终划分得到两个亲和性均衡的虚拟机组,因此在对两个虚拟机组进行升级时,不再需要执行虚拟机组的倒换,直接先后对两个虚拟机组进行升级,并可以同时对一个虚拟机组的多个虚拟机进行升级,从而提高了虚拟机的升级效率,减少了资源浪费。

在一种可能的设计中,执行器可以按照亲和系数对多个虚拟机对进行排序;然后依次将排序后的虚拟机对中的两个虚拟机分配到两个虚拟机组中;当所有虚拟机分配到两个虚拟机组中时,结束分配。其中,如果某个虚拟机已经分配到了某个虚拟机组,则不再对此虚拟机分配。

在另一种可能的设计中,如果所有虚拟机的个数为奇数,会出现多余的一个虚拟机无法均匀地分配到两个虚拟机组中。在这种情况下,可以单独对该虚拟机进行升级,或者将该虚拟机划分到任意一个虚拟机组中。

在另一种可能的设计中,亲和系数为每两个虚拟机之间具有相同服务类型的服务实例的数量之和、或每两个虚拟机之间每种相同服务类型的服务实例的数量加权平均值之和。另外,亲和系数还可以为上述求和方式计算得到和值除以两个vm中所有服务实例数量之和得到的百分系数。

在另一种可能的设计中,执行器可以按照亲和系数从小到大的顺序对多个虚拟机对进行排序;或按照亲和系数从大到小的顺序对多个虚拟机对进行排序。

在另一种可能的设计中,控制器通过可视化的手段在操作界面显示虚拟机组的划分结果。管理员可以查看控制器显示的虚拟机组的结果,如果确定划分结果支持本次虚拟机的升级,则可以点击确认升级,首先对虚拟机组1进行升级。控制器接收管理员发出的确认升级指令,并向执行器发送确认升级请求,确认升级请求包含虚拟机组1的标识以及虚拟机组1中需要升级的vm的列表。

在另一种可能的设计中,在对虚拟机组1中的虚拟机升级成功后,执行器接收到调度器发送的升级响应,并向控制器发送升级响应,升级响应用于通知控制器虚拟机组1升级成功。

在另一种可能的设计中,控制器向执行器发送确认升级请求,该确认升级请求用于通知执行器和调度器对虚拟机组2中的虚拟机进行升级。该确认升级请求包含虚拟机组2的标识以及虚拟机组2中需要升级的vm的列表。

在另一种可能的设计中,在对虚拟机组2中的虚拟机升级成功后,执行器向控制器发送升级响应,该升级响应用于通知控制器虚拟机组2升级成功。

在另一种可能的设计中,首先控制器将虚拟机划分为两个虚拟机组,然后确定两个虚拟机组中的服务实例是否分布均衡,如果分布不均衡,则对两个虚拟机组中的服务实例进行补偿,使其在两个虚拟机中的分布达到均衡,从而不仅可以提高虚拟机的升级效率,而且在对虚拟机进行升级时不影响虚拟机处理业务。

在另一种可能的设计中,执行器获取两个虚拟机组中每个虚拟机组中的服务实例的分布信息;根据分布信息,确定是否对虚拟机组进行补偿。

在另一种可能的设计中,执行器可以根据每个虚拟机组中的每种服务类型的服务实例的数量,确定两个虚拟机组之间的服务实例的分布偏差;当分布偏差不大于容忍系数时,执行器不对虚拟机组进行补偿,当分布偏差大于容忍系数时,执行器对虚拟机组进行补偿。

在另一种可能的设计中,执行器确定两个虚拟机组之间的每种服务类型的服务实例的数量之差、以及两个虚拟机组中所有服务实例的数量之和;将服务实例的数量之差与所有服务实例的数量之和的比值作为分布偏差。

在另一种可能的设计中,执行器确定每个虚拟机组中需要补偿的服务实例的服务类型和补偿值,输出补偿列表,根据需要补偿的服务实例的服务类型和补偿值,对虚拟机组进行补偿。

在另一种可能的设计中,当两个虚拟机组之间的某种服务类型的服务实例的分布偏差大于容忍系数时,执行器将该服务类型确定为需要补偿的服务实例的服务类型;执行器将两个虚拟机组中某个虚拟机组中的该服务类型的服务实例的数量减去另一个虚拟机组中的该服务类型的服务实例的数量的差值除以2得到的比值作为补偿值。

在另一种可能的设计中,执行器按照补偿值将两个虚拟机组中某个虚拟机组中的该服务类型的服务实例迁移到另一个虚拟机组。

在另一种可能的设计中,控制器接收到执行器发送的虚拟机组的划分结果和补偿列表之后,对虚拟机组的划分结果和补偿列表进行显示,管理员可以查看虚拟机组的划分结果和补偿列表,根据当前的业务负载及运维经验确定是否实施补偿。如果确定需要对虚拟机组进行补偿,管理员可以向控制器下发补偿指令,控制器接收到补偿指令之后,向执行器发送补偿命令。

在另一种可能的设计中,控制器向执行器发送单向补偿请求以实施例人工补偿,补偿请求包括虚拟机组的标识和服务类型,执行器按照补偿值将虚拟机组的标识对应的虚拟机组中的服务类型的服务实例迁移到另一个虚拟机组中。

在另一种可能的设计中,由于随着集群规模的增加,划分虚拟机组所需要的计算量也会增大,因此首先将多个虚拟机划分为虚拟机分片,然后在各个虚拟机分片中划分虚拟机组,从而先后对各个虚拟机分片中的虚拟机进行升级,从而降低了计算的复杂度,提高了虚拟机升级效率

在另一种可能的设计中,首先将多个虚拟机划分为虚拟机分片,然后在各个虚拟机分片中划分虚拟机组,进一步将各个虚拟机分片中的虚拟机组聚合为虚拟机集合,从而最后对各个虚拟机集合中的虚拟机进行升级,从而降低了计算的复杂度,提高了虚拟机升级效率。

在另一种可能的设计中,执行器根据需要划分的分片数量以及所有虚拟机的总数,确定每个虚拟机分片的数量。进一步的,可以将所有虚拟机的总数除以需要划分的分片数量,计算得到每个虚拟机分片中的虚拟机数量。对于多余的虚拟机可以均匀的分配到某些虚拟机分片中。

第二方面,本申请实施例提供了一种虚拟机升级装置,该虚拟机升级装置被配置为实现上述第一方面中虚拟机升级装置所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

第三方面,本申请实施例提供了一种虚拟机升级设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种虚拟机升级方法中的步骤。

在一个可能的设计中,本申请提供的虚拟机升级设备可以包含用于执行上述方法设计中虚拟机升级装置行为相对应的单元。单元可以是软件和/或是硬件。

第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。

第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。

附图说明

为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1(a)是现有技术方案提供的一种分平面固定部署场景的示意图;

图1(b)是现有技术方案提供的另一种分布式动态部署场景的示意图;

图2是本申请实施例提供的一种虚拟机升级系统的结构示意图;

图3是本申请实施例提供的一种平面升级方法的流程示意图;

图4是本申请实施例提供的另一种平面升级方法的流程示意图;

图5是本申请实施例提供的一种虚拟机升级方法的流程示意图;

图6是本申请实施例提供的一种虚拟机的服务实例部署的示意图;

图7是本申请实施例提供的一种虚拟机组的示意图;

图8是本申请另一实施例提供的一种虚拟机升级方法的流程示意图;

图9是本申请实施例提供的一种虚拟机组的示意图;

图10是本申请实施例提供的一种补偿前的虚拟机组的示意图;

图11是本申请实施例提供的一种补偿后的虚拟机组的示意图;

图12是本申请又一实施例提供的一种虚拟机升级方法的流程示意图;

图13是本申请实施例提供的一种虚拟机分片的示意图;

图14是本申请实施例提供的一种虚拟机升级装置的结构示意图;

图15是本申请实施例提出的一种虚拟机升级设备的结构示意图。

具体实施方式

下面结合本申请实施例中的附图对本申请实施例进行描述。

请参见图2,图2是本申请实施例提供的一种虚拟机升级系统的结构示意图,该虚拟机升级系统包括控制器、执行器和调度器。其中,控制器用于负责升级流程控制,提供可视化的人机交互界面,管理员通过点击操作来完成升级过程。同时,管理员可以通过控制器上传更高版本的软件包、上传或定义升级流程、查看升级进度、升级出现问题时操作回退等。控制器可以为升级工具、发布系统等。执行器是升级流程的实际执行者,一般是独立运行的一个服务,执行器的前端与控制器对接,接收控制器发出的控制指令,执行器的后端与调度器对接,控制升级过程。执行器主要用于负责执行算法,接受控制器界面传入的指令,将升级进度等信息显示到界面。执行器可以包括升级引擎、发布引擎等。调度器用于负责管理vm以及vm内运行的服务实例,通常是与基础设施(infrastructureasaservice,iaas)层的资源管理配合,实现服务实例的部署、升级和扩容等,如kubernetes、mesos等,也有基于开源增强开发或完全自主研发的调度器。需要说明的是,控制器、执行器和调度器可以同时部署在一个实体设备中,也可以分别部署在不同的实体设备中,这里不做限定。

基于上述虚拟机升级系统,本申请实施例提供了两种虚拟机升级方式。如图3所示,图3是本申请实施例提供的一种平面升级方法的流程示意图。该方法适用于分平面固定部署场景,一般采用按平面升级方式。首先升级备平面,然后升级主平面。假设部署的两个平面编号分别为平面1和平面2,升级前平面1为主平面、平面2为备平面,详细过程如下:

s301,管理员在控制器的操作界面上执行升级操作,控制器向执行器发送升级请求,升级请求包含平面2的编号。

s302,执行器向调度器发送查询请求,所述查询请求包括平面2的编号;

s303,调度器向执行器返回查询响应,所述查询响应包括平面2中的vm列表。

s304,执行器向调度器发送vm升级请求,所述vm升级请求包含vm列表编号。

s305,调度器按照vm列表编号,对平面2中的虚拟机进行升级。

s306,当虚拟机升级成功后,调度器向执行器返回平面升级响应。

s307,执行器向控制器发送平面升级响应。

s308,控制器向执行器发送平面倒换命令。

s309,执行器向调度器发送查询请求,所述查询请求包括平面1的编号。

s310,调度器向执行器发送查询响应,所述查询响应包括平面1中的vm列表.

s311,执行器向虚拟机中的各个服务实例发送主备倒换请求。

s312,当主备倒换处理成功后,各个服务实例向执行器发送主备倒换响应。

s313,执行器向控制器发送主备倒换响应。

s314,控制器向执行器发送升级请求,升级请求包含平面1的编号。

s315,按照上述流程完成平面1中的虚拟机升级。

如图4所示,图4是本申请实施例提供的另一种平面升级方法的流程示意图。该方法适用于分布式动态部署场景,在对虚拟机进行升级操作时,每个vm上分布的服务实例是不确定的,如果同时操作多个vm升级,则可能导致某种类型的业务全部中断。因此在这种部署场景下一般采用滚动升级,即vm逐个升级,详细升级过程如下:

s401,管理员在控制器的操作界面上执行升级操作,控制器向执行器发送升级请求。

s402,执行器向调度器发送升级所有vm的通知,并携带升级方式参数为滚动。

s403,调度器循环升级所有vm,即第一台vm升级完成后升级第二台,以此类推。

s404,调度器升级完成所有vm后,向执行器发送升级响应。

s405,执行器向控制器发送升级响应。

综上所述,对于分平面固定部署场景,必须按照双平面的方式部署,并且各个服务实例的运行位置不能发生变化。在云化场景下,计算资源作为资源池管理,只要有空闲的cpu和内存,服务实例就可以在任意位置部署,此方案无法满足云化场景下的应用特点。同时由于主备平面部署,系统中有一半的服务实例不处理业务,存在极大的资源浪费。对于分布式动态部署场景,由于需要逐个对vm升级,升级时无法多个vm同时操作,升级效率很低。为了解决上述问题,提供了如下技术方案。

请参见图5,图5是本申请实施例提供的一种虚拟机升级方法的流程示意图,该方法包括但不限于如下步骤:

s501,控制器向执行器发送升级请求,通知执行器开始划分虚拟机组。

s502,执行器接收到升级请求之后,从调度器中获取虚拟机和服务实例的部署信息。其中,部署信息包括虚拟机的数量、虚拟机中的服务实例或服务实例的服务类型等等。

s503,执行器根据所述部署信息,确定每个虚拟机对的亲和系数,所述亲和系数用于表示每两个所述虚拟机之间的相关性。其中,虚拟机对表示虚拟机之间的两两组合。

其中,所述亲和系数为每两个所述虚拟机之间具有相同服务类型的所述服务实例的数量之和、或每两个所述虚拟机之间每种相同服务类型的所述服务实例的数量加权平均值之和。例如,a服务类型的服务实例的加权系数*两个vm中a服务类型的服务实例的个数+b服务类型的服务实例的加权系数*两个vm中b服务类型的服务实例的个数+c服务类型的服务实例的加权系数*两个vm中c服务类型的服务实例的个数。另外,所述亲和系数还可以为上述求和方式计算得到和值除以两个vm中所有服务实例数量之和得到的百分系数。

例如,如图6所示,图6是本申请实施例提供的一种虚拟机的服务实例部署的示意图。vm1中运行的服务实例包括(s.a1,s.b1,s.c1);vm2中运行的服务实例包括(s.d1,s.e1,s.b2);vm3中运行服务实例包括(s.d2,s.e2,s.f1);vm4中运行的服务实例包括(s.c2,s.f2,s.a2)。可以看出,vm1中的s.b1和vm2中的s.b2服务类型相同,因此,vm1与vm2之间的亲和系数为1。vm1与vm3中没有相同服务类型的服务实例,因此,vm1与vm2之间的亲和系数为0。按照此方法,依次确定vm1与vm4之间的亲和系数为2,vm2与vm3之间的亲和系数为2,vm2与vm4之间的亲和系数为0,vm3与vm4之间的亲和系数为1。

s504,执行器根据所述亲和系数,将多个所述虚拟机划分为两个虚拟机组。其中,虚拟机组也可以称作为虚拟机平面、更新域或虚拟机批等等。

具体实现中,执行器可以按照所述亲和系数对多个所述虚拟机对进行排序;然后依次将排序后的所述虚拟机对中的两个虚拟机分配到所述两个虚拟机组中;当所有所述虚拟机分配到所述两个虚拟机组中时,结束分配。其中,如果某个虚拟机已经分配到了某个虚拟机组,则不再对此虚拟机分配。

进一步的,执行器可以按照所述亲和系数从小到大的顺序对多个所述虚拟机对进行排序;或按照所述亲和系数从大到小的顺序对多个所述虚拟机对进行排序。

例如,按照亲和系数从小到大的顺序对虚拟机对进行排序:vm1-vm3:0;vm2-vm4:0;vm1-vm2:1;vm3-vm4:1;vm1-vm4:2;vm2-vm3:2。因此,首先对虚拟机对vm1-vm3进行划分,将vm1分配到虚拟机组1中,将vm3划分到虚拟机组2中。然后对虚拟机对vm2-vm4进行划分,将vm2分配到虚拟机组1中,将vm4划分到虚拟机组2中。当然,也可以将vm2分配到虚拟机组2中,将vm4划分到虚拟机组1中,这里不做限定。在划分完成vm1-vm3和vm2-vm4的两个虚拟机对之后,所有虚拟机已经划分完成,因此结束分配。如图7所示,图7是本申请实施例提供的一种虚拟机组的示意图,其中,虚拟机组1中包括vm1和vm2,虚拟机组2中包括vm3和vm4。

又如,按照亲和系数从小到大的顺序对虚拟机对进行排序:vm1-vm3:0;vm2-vm3:0;vm1-vm4:1;vm2-vm4:1;vm3-vm4:1;vm1-vm2:2。因此首先对虚拟机对vm1-vm3进行划分,将vm1分配到虚拟机组1中,将vm3划分到虚拟机组2中。然后对虚拟机对vm2-vm3进行划分,将vm2分配到虚拟机组1中,由于vm3已经划分到了虚拟机组2中,因此不再对vm3进行划分。最后对虚拟机对vm1-vm4进行划分,由于vm1已经划分到了虚拟机组1中,因此不再对vm1进行划分,将vm4分配到虚拟机组2中。到此所有虚拟机已经划分完成,因此结束分配,最后可以得到虚拟机组1中包括vm1和vm2,虚拟机组2中包括vm3和vm4。

需要说明的是,如果所有虚拟机的个数为奇数,会出现多余的一个虚拟机无法均匀地分配到两个虚拟机组中。在这种情况下,可以单独对该虚拟机进行升级,或者将该虚拟机划分到任意一个虚拟机组中。

s505,执行器向控制器发送虚拟机组的划分结果。其中,划分结果包括虚拟机组1所包含的虚拟机和虚拟机组2中所包含的虚拟机。

s506,控制器接收虚拟机组的划分结果,并保存虚拟机组的划分结果。

s507,控制器通过可视化的手段在操作界面显示虚拟机组的划分结果。管理员可以查看控制器显示的虚拟机组的结果,如果确定划分结果支持本次虚拟机的升级,则可以点击确认升级,首先对虚拟机组1进行升级。控制器接收管理员发出的确认升级指令,并向执行器发送确认升级请求,所述确认升级请求包含虚拟机组1的标识以及虚拟机组1中需要升级的vm的列表。

s508,执行器向调度器发送确认升级请求,所述确认升级请求包括虚拟机组1的标识以及需要升级的vm的列表。

s509,调度器接收到确认升级请求之后,可以同时对虚拟机组1中的多个虚拟机进行升级,也可以先后对虚拟机组1中的多个虚拟机进行升级。当虚拟机组1中的所有需要升级的虚拟机升级成功后,停止升级。

s510,调度器向执行器发送升级响应。

s511,执行器接收到调度器发送的升级响应之后,向控制器发送升级响应,所述升级响应用于通知控制器虚拟机组1升级成功。

s512,控制器向执行器发送确认升级请求,该确认升级请求用于通知执行器和调度器对虚拟机组2中的虚拟机进行升级。该确认升级请求包含虚拟机组2的标识以及虚拟机组2中需要升级的vm的列表。

s513,执行器和调度器按照与虚拟机组1相同的升级方式对虚拟机组2中的虚拟机进行升级。

s514,在执行器和调度器对虚拟机组2中的虚拟机升级成功后,执行器向控制器发送升级响应,该升级响应用于通知控制器虚拟机组2升级成功。

可选的,在完成了对虚拟机组1以及虚拟机组2的升级之后,控制器可以向执行器发送虚拟机组信息的清理请求,执行器接收到清理请求之后,对虚拟机组信息进行清理,在清理完成之后,向控制器返回清理完成的响应。从而避免系统中残留冗余数据。

在本申请实施例中,执行器首先从调度器中获取虚拟机和服务实例的部署信息,然后根据部署信息,确定每个虚拟机对的亲和系数,最后根据亲和系数,将多个虚拟机划分为两个虚拟机组,从而最终划分得到两个亲和性均衡的虚拟机组,因此在对两个虚拟机组进行升级时,不再需要执行虚拟机组的倒换,直接先后对两个虚拟机组进行升级,并可以同时对一个虚拟机组的多个虚拟机进行升级,从而提高了虚拟机的升级效率,减少了资源浪费。

请参见图8,图8是本申请另一实施例提供的一种虚拟机升级方法的流程示意图,该方法包括但不限于如下步骤:

s801,控制器向执行器发送升级请求,通知执行器开始划分虚拟机组。其中,升级请求可以携带容忍系数,该容忍系数可以包括但不限于0%或10%。

s802,执行器将多个虚拟机划分为两个虚拟机组。具体实现方式与上一实施例中的s502-s504相同,本申请实施例不再赘述。

s803,执行器获取所述两个虚拟机组中每个虚拟机组中的所述服务实例的分布信息;根据所述分布信息,确定是否对所述虚拟机组进行补偿。其中,所述分布信息包括所述每个虚拟机组中的每种服务类型的所述服务实例的数量。

具体实现中,执行器可以根据所述每个虚拟机组中的每种服务类型的所述服务实例的数量,确定所述两个虚拟机组之间的所述服务实例的分布偏差;当所述分布偏差不大于所述容忍系数时,执行器不对所述虚拟机组进行补偿,当所述分布偏差大于所述容忍系数时,执行器对所述虚拟机组进行补偿。进一步的,执行器可以确定所述两个虚拟机组之间的每种服务类型的所述服务实例的数量之差、以及所述两个虚拟机组中所有所述服务实例的数量之和;将所述服务实例的数量之差与所有所述服务实例的数量之和的比值作为所述分布偏差。

例如,如图9所示,虚拟机组1包括2个b服务类型的服务实例,而虚拟机组2中不存在b服务类型的服务实例,两个虚拟机组之间的b服务类型的服务实例的数量之差为2,两个虚拟机组中所有服务实例的数量之和为12,因此,将2除以12计算得到的16.7%作为分布偏差,由于16.7%大于容忍系数10%,因此,b服务类型的服务实例在虚拟机组1和虚拟机组2中的分布不均衡,确定需要对虚拟机组进行补偿。

s804,执行器确定所述每个虚拟机组中需要补偿的所述服务实例的服务类型和补偿值,输出补偿列表。其中,补偿列表中的信息格式可以为:[服务类型]:[补偿值]。

具体实现中,当所述两个虚拟机组之间的某种服务类型的所述服务实例的分布偏差大于所述容忍系数时,执行器可以将该服务类型确定为所述需要补偿的所述服务实例的服务类型;执行器可以将所述两个虚拟机组中某个虚拟机组中的该服务类型的所述服务实例的数量减去另一个虚拟机组中的该服务类型的所述服务实例的数量的差值除以2得到的比值作为所述补偿值。

例如,如图9所示,虚拟机组1中b服务类型的服务实例的个数为2、c服务类型的服务实例的个数为2,而虚拟机组2中b服务类型的服务实例的个数为0、c服务类型的服务实例的个数为0,因此,需要对b服务类型的服务实例和c服务类型的服务实例进行补偿,补偿值分别为1。另外,虚拟机组1中e服务类型的服务实例的个数为0、f服务类型的服务实例的个数为0,而虚拟机组2中e服务类型的服务实例的个数为2、f服务类型的服务实例的个数为2,因此,也需要对e服务类型的服务实例和f服务类型的服务实例进行补偿,补偿值分别为1。

s805,执行器向控制器发送虚拟机组的划分结果和补偿列表。

s806,控制器接收到执行器发送的虚拟机组的划分结果和补偿列表之后,对虚拟机组的划分结果和补偿列表进行显示,管理员可以查看虚拟机组的划分结果和补偿列表,根据当前的业务负载及运维经验确定是否实施补偿。如果确定对虚拟机组进行补偿,管理员可以向控制器下发补偿指令,控制器接收到补偿指令之后,向执行器发送补偿命令。

s807,执行器对虚拟机组进行补偿。

具体实现中,执行器可以根据所述需要补偿的所述服务实例的服务类型和所述补偿值,对所述虚拟机组进行补偿。进一步的,可以按照所述补偿值将所述两个虚拟机组中所述某个虚拟机组中的该服务类型的所述服务实例迁移到所述另一个虚拟机组中。

例如,如图10所示,图10是本申请实施例提供的一种补偿前的虚拟机组的示意图。由s804可知,需要对b服务类型的服务实例、c服务类型的服务实例、e服务类型的服务实例、f服务类型的服务实例进行补偿,补偿值分别为1。可以删除vm2中的s.b2,在vm3中重建s.b2;可以删除vm3中的s.e1,在vm2中重建s.e1;可以删除vm2中的s.c2,在vm3中重建s.c2;可以删除vm3中的s.f1,在vm2中重建s.f1。当然,可以删除虚拟机组1中b服务类型的服务实例s.b1和s.b2中的任意一个,然后在虚拟机组2中重建,删除虚拟机组1中c服务类型的服务实例s.c1和s.c2中的任意一个,然后在虚拟机组2中重建。e服务类型的服务实例和f服务类型的服务实例也一样。

又如图11所示,图11是本申请实施例提供的一种补偿后的虚拟机组的示意图。由图可知,补偿后的虚拟机组1中和补偿后的虚拟机组2中均包括1个a服务类型的服务实例、1个b服务类型的服务实例、1个c服务类型的服务实例,1个d服务类型的服务实例、1个f服务类型的服务实例和1个f服务类型的服务实例,因此,每种服务类型的服务实例在虚拟机组1和虚拟机组2中达到了分布均衡。

需要说明的是,在实际应用中,并不要求某服务类型的服务实例在虚拟机组之间达到数量完全均衡,可接受一定的容忍度,即服务实例在两个平虚拟机组的分布数量差值占总实例数量的比例可接受的上限。

s808,执行器向控制器返回补偿结果,控制器对补偿后的虚拟机组1和虚拟机组2进行显示。

通过上述操作,虚拟机组之间基本上达到的分布均衡,但是也可能出现某种服务类型的服务实例在虚拟机组之间无法达到理想的均衡效果。管理员可以通过控制器的控制界面显示的虚拟机组的划分结果和未完成补偿的补偿列表,确定是否实施人工补偿。s809-s813是本申请实施例给出的一种可选的人工补偿方式,具体实施步骤如下:

s809,控制器向执行器发送单向补偿请求,所述补偿请求包括所述虚拟机组的标识和服务类型;

s810,执行器接收到补偿请求之后,查询虚拟机组中空闲的vm。

s811,执行器向调度器发送迁移命令,该迁移命令用于通知调度器执行服务实例迁移。

s812,调度器针对空闲的虚拟机,按照所述补偿值将所述虚拟机组的标识对应的所述虚拟机组中的所述服务类型的所述服务实例迁移到另一个虚拟机组中。

s813,在服务实例迁移完成后,执行器向控制器发送补偿结果。

s814,先后对两个虚拟机组进行升级。具体实施方式与上一实施例相同,本申请实施例不再赘述。

在本申请实施例中,首先将虚拟机划分为两个虚拟机组,然后确定两个虚拟机组中的服务实例是否分布均衡,如果分布不均衡,则对两个虚拟机组中的服务实例进行补偿,使其在两个虚拟机中的分布达到均衡,从而不仅可以提高虚拟机的升级效率,而且在对虚拟机进行升级时不影响虚拟机处理业务。

请参见图12,图12是本申请又一实施例提供的一种虚拟机升级方法的流程示意图,该方法包括但不限于如下步骤:

s1201,控制器向执行器发送分片划分请求,该分片划分请求包括需要划分的分片数量。

s1202,执行器从调度器中获取当前的虚拟机和服务实例的部署信息,根据部署信息多个所述虚拟机划分为至少一个虚拟机分片。其中,部署信息包括虚拟机的数量、虚拟机中的服务实例或服务实例的服务类型等等。

具体实现中,可以根据需要划分的分片数量以及所有虚拟机的总数,确定每个虚拟机分片的数量。进一步的,可以将所有虚拟机的总数除以需要划分的分片数量,计算得到每个虚拟机分片中的虚拟机数量。对于多余的虚拟机可以均匀的分配到某些虚拟机分片中。

s1203,控制器向执行器发送虚拟机组划分请求。

s1204,执行器接收到虚拟机组划分请求之后,将每个虚拟机分片中多个虚拟机划分为两个虚拟机组。具体实现方式与上一个实施例中的s502-s504相同,本申请实施例不再赘述。

如图13所示,图13是本申请实施例提供的一种虚拟机分片的示意图。将多个虚拟机划分为虚拟机分片slice1、虚拟机分片slice2、……、虚拟机分片slicen,每个虚拟机分片中的虚拟机划分为虚拟机组p1和虚拟机组p2。

在划分完成虚拟机分片以及将每个虚拟机分片中多个虚拟机划分为两个虚拟机组之后,可以采用以下两种可选方式对虚拟机进行升级。

第一种可选方式:

s1205,控制器向执行器发送分片升级请求,该升级分片请求包括虚拟机分片的标识以及虚拟机分片中虚拟机组的标识,该标识可以为编号。

s1206,执行器接收到升级分片请求之后,根据虚拟机分片的标识以及虚拟机分片中虚拟机组的标识确定目标虚拟机组,然后对目标虚拟机组中的虚拟机进行升级。按照此方式先后对各个虚拟机分片中的虚拟机组中的虚拟机进行升级,从而最后完成所有虚拟机的升级。具体升级方式与前两个实施例相同,本申请实施例不再赘述。

第二种可选方式:

s1207,控制器向执行器发送虚拟机组集合请求。

s1208,执行器将所述每个虚拟机分片中的所述两个虚拟机组分配到两个虚拟机集合中。例如,可以将所有虚拟机分片的虚拟机组1聚合为最终的虚拟机集合1,将所有虚拟机分片的虚拟机组2聚合为最终的虚拟机集合2。

s1209,执行器先后对两个虚拟机集合中的虚拟机进行升级。具体升级方式与前两个实施例相同,本申请实施例不再赘述。

在本申请实施例中,由于随着集群规模的增加,划分虚拟机组所需要的计算量也会增大。因此本实施例首先将多个虚拟机划分为虚拟机分片,然后在各个虚拟机分片中划分虚拟机组,最后先后对各个虚拟机分片中的虚拟机进行升级,或者进一步将各个虚拟机分片中的虚拟机组聚合为虚拟机集合,从而最后对各个虚拟机集合中的虚拟机进行升级,降低了计算的复杂度,提高了虚拟机升级效率。

上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。

请参见图14,图14是本申请实施例提供的一种虚拟机升级装置的结构示意图,该虚拟机升级装置可以包括控制器1401、执行器1402以及调度器1403,其中,各个单元的详细描述如下。

控制器1401,用于向所述执行器发送升级请求;

执行器1402,用于根据所述升级请求,从调度器1403中获取虚拟机和服务实例的部署信息,所述服务实例运行在所述虚拟机中;

执行器1402,用于根据所述部署信息,确定每个虚拟机对的亲和系数,所述亲和系数用于表示每两个所述虚拟机之间的相关性;

执行器1402,用于根据所述亲和系数,将多个所述虚拟机划分为两个虚拟机组;

调度器1403,用于先后对所述两个虚拟机组中的所述虚拟机进行升级。

其中,所述亲和系数为每两个所述虚拟机之间具有相同服务类型的所述服务实例的数量之和、或每两个所述虚拟机之间每种相同服务类型的所述服务实例的数量加权平均值之和。

可选的,执行器1402用于:

按照所述亲和系数对多个所述虚拟机对进行排序;

依次将排序后的所述虚拟机对中的两个虚拟机分配到所述两个虚拟机组中;

当所有所述虚拟机分配到所述两个虚拟机组中时,结束分配。

可选的,执行器1402用于:按照所述亲和系数从小到大的顺序对多个所述虚拟机对进行排序;或按照所述亲和系数从大到小的顺序对多个所述虚拟机对进行排序。

可选的,所述执行器用于:获取所述两个虚拟机组中每个虚拟机组中的所述服务实例的分布信息;根据所述分布信息,确定是否对所述虚拟机组进行补偿。

其中,所述升级请求包括容忍系数,所述分布信息包括所述每个虚拟机组中的每种服务类型的所述服务实例的数量;

执行器1402用于:根据所述每个虚拟机组中的每种服务类型的所述服务实例的数量,确定所述两个虚拟机组之间的所述服务实例的分布偏差;当所述分布偏差大于所述容忍系数时,对所述虚拟机组进行补偿。

可选的,执行器1402用于:确定所述两个虚拟机组之间的每种服务类型的所述服务实例的数量之差、以及所述两个虚拟机组中所有所述服务实例的数量之和;将所述服务实例的数量之差与所有所述服务实例的数量之和的比值作为所述分布偏差。

可选的,执行器1402用于:确定所述每个虚拟机组中需要补偿的所述服务实例的服务类型和补偿值;根据所述需要补偿的所述服务实例的服务类型和所述补偿值,对所述虚拟机组进行补偿。

可选的,执行器1402用于:当所述两个虚拟机组之间的某种服务类型的所述服务实例的分布偏差大于所述容忍系数时,将该服务类型确定为所述需要补偿的所述服务实例的服务类型;将所述两个虚拟机组中某个虚拟机组中的该服务类型的所述服务实例的数量减去另一个虚拟机组中的该服务类型的所述服务实例的数量的差值除以2得到的比值作为所述补偿值。

可选的,执行器1402用于:按照所述补偿值将所述两个虚拟机组中所述某个虚拟机组中的该服务类型的所述服务实例迁移到所述另一个虚拟机组中。

可选的,控制器1401,还用于向所述执行器发送补偿请求,所述补偿请求包括所述虚拟机组的标识和服务类型;执行器1402,还用于按照所述补偿值,将所述虚拟机组的标识对应的所述虚拟机组中的所述服务类型的所述服务实例迁移到另一个虚拟机组中。

可选的,执行器1402,还用于将多个所述虚拟机划分为至少一个虚拟机分片;将所述至少一个虚拟机分片中每个虚拟机分片中的虚拟机划分为所述两个虚拟机组;调度器1403,还用于先后对所述每个虚拟机分片中所述两个虚拟机组中的所述虚拟机进行升级。

可选的,执行器1402,还用于将所述每个虚拟机分片中的所述两个虚拟机组分配到两个虚拟机集合中;调度器1403,还用于先后对所述两个虚拟机集合中的所述虚拟机进行升级。

需要说明的是,各个单元的实现还可以对应参照图5、图8以及图12所示的方法实施例的相应描述,执行上述实施例中所执行的方法和功能。

请继续参考图15,图15是本申请实施例提出的一种虚拟机升级设备的结构示意图。如图所示,该虚拟机升级设备可以包括:至少一个处理器1501,至少一个通信接口1502,至少一个存储器1503和至少一个通信总线1504。

其中,处理器1501可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线1504可以是外设部件互连标准pci总线或扩展工业标准结构eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线1504用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口1502用于与其他节点设备进行信令或数据的通信。存储器1503可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatilerandomaccessmemory,nvram)、相变化随机存取内存(phasechangeram,pram)、磁阻式随机存取内存(magetoresistiveram,mram)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪存器件,例如反或闪存(norflashmemory)或是反及闪存(nandflashmemory)、半导体器件,例如固态硬盘(solidstatedisk,ssd)等。存储器1503可选的还可以是至少一个位于远离前述处理器1501的存储装置。存储器1503中存储一组程序代码,且处理器1501执行存储器1503中的程序。

向所述执行器发送升级请求;

根据所述升级请求,从调度器中获取虚拟机和服务实例的部署信息,所述服务实例运行在所述虚拟机中;

根据所述部署信息,确定每个虚拟机对的亲和系数,所述亲和系数用于表示每两个所述虚拟机之间的相关性;

根据所述亲和系数,将多个所述虚拟机划分为两个虚拟机组;

先后对所述两个虚拟机组中的所述虚拟机进行升级。

其中,所述亲和系数为每两个所述虚拟机之间具有相同服务类型的所述服务实例的数量之和、或每两个所述虚拟机之间每种相同服务类型的所述服务实例的数量加权平均值之和。

可选的,处理器1501还用于执行如下操作:

按照所述亲和系数对多个所述虚拟机对进行排序;

依次将排序后的所述虚拟机对中的两个虚拟机分配到所述两个虚拟机组中;

当所有所述虚拟机分配到所述两个虚拟机组中时,结束分配。

可选的,处理器1501还用于执行如下操作:

按照所述亲和系数从小到大的顺序对多个所述虚拟机对进行排序;或

按照所述亲和系数从大到小的顺序对多个所述虚拟机对进行排序。

可选的,处理器1501还用于执行如下操作:

获取所述两个虚拟机组中每个虚拟机组中的所述服务实例的分布信息;

根据所述分布信息,确定是否对所述虚拟机组进行补偿。

可选的,处理器1501还用于执行如下操作:

根据所述每个虚拟机组中的每种服务类型的所述服务实例的数量,确定所述两个虚拟机组之间的所述服务实例的分布偏差;

当所述分布偏差大于所述容忍系数时,对所述虚拟机组进行补偿。

可选的,处理器1501还用于执行如下操作:

确定所述两个虚拟机组之间的每种服务类型的所述服务实例的数量之差、以及所述两个虚拟机组中所有所述服务实例的数量之和;

将所述服务实例的数量之差与所有所述服务实例的数量之和的比值作为所述分布偏差。

可选的,处理器1501还用于执行如下操作:

确定所述每个虚拟机组中需要补偿的所述服务实例的服务类型和补偿值;

根据所述需要补偿的所述服务实例的服务类型和所述补偿值,对所述虚拟机组进行补偿。

可选的,处理器1501还用于执行如下操作:

当所述两个虚拟机组之间的某种服务类型的所述服务实例的分布偏差大于所述容忍系数时,将该服务类型确定为所述需要补偿的所述服务实例的服务类型;

将所述两个虚拟机组中某个虚拟机组中的该服务类型的所述服务实例的数量减去另一个虚拟机组中的该服务类型的所述服务实例的数量的差值除以2得到的比值作为所述补偿值。

可选的,处理器1501还用于执行如下操作:

按照所述补偿值将所述两个虚拟机组中所述某个虚拟机组中的该服务类型的所述服务实例迁移到所述另一个虚拟机组中。

可选的,处理器1501还用于执行如下操作:

向所述执行器发送补偿请求,所述补偿请求包括所述虚拟机组的标识和服务类型;

按照所述补偿值,将所述虚拟机组的标识对应的所述虚拟机组中的所述服务类型的所述服务实例迁移到另一个虚拟机组中。

可选的,处理器1501还用于执行如下操作:

将多个所述虚拟机划分为至少一个虚拟机分片;

将所述至少一个虚拟机分片中每个虚拟机分片中的虚拟机划分为所述两个虚拟机组;

先后对所述每个虚拟机分片中所述两个虚拟机组中的所述虚拟机进行升级。

可选的,处理器1501还用于执行如下操作:

将所述每个虚拟机分片中的所述两个虚拟机组分配到两个虚拟机集合中;

先后对所述两个虚拟机集合中的所述虚拟机进行升级。

进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中的操作。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1