CN111045778A - 一种虚拟机的创建方法、装置、服务器及存储介质 - Google Patents
一种虚拟机的创建方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111045778A CN111045778A CN201811182127.4A CN201811182127A CN111045778A CN 111045778 A CN111045778 A CN 111045778A CN 201811182127 A CN201811182127 A CN 201811182127A CN 111045778 A CN111045778 A CN 111045778A
- Authority
- CN
- China
- Prior art keywords
- component
- virtual machine
- creating
- resource
- volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
一种虚拟机创建方法、装置、服务器及存储介质,其中方法包括服务器在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件,第一组件用于为虚拟机创建卷资源,第二组件用于为虚拟机创建网络资源,第三组件用于为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机;若第三组件调度宿主机失败,服务器调用第三组件通知第一组件终止创建卷资源并通知第二组件终止创建网络资源。由于第三组件调度宿主机比第一组件创建卷资源和第二组件创建网络资源速度快。如此,若第三组件调度宿主机失败,第一组件无需创建剩余的卷资源,第二组件无需创建剩余的网络资源;因此,可节约创建剩余卷资源和网络资源所需用的网络、时间资源。
Description
技术领域
本申请涉及虚拟技术领域,尤其涉及一种虚拟机的创建方法、装置、服务器及存储介质。
背景技术
虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在虚拟机创建时,需要为虚拟机选择合适的宿主机、以及创建各种资源,例如,网络资源和卷资源等。
目前,创建虚拟机时,需要服务器调用多个组件来完成虚拟机的创建。具体的过程为:服务器先调用第一组件创建卷资源,并调用第二组件创建网络资源;在服务器确定第一组件创建卷资源成功、且第二组件创建网络资源成功之后,服务器再调用第三组件进行宿主机的调度。当第三组件的上级组件通过周期性查询获取到第三组件调度宿主机失败,第三组件的上级组件分别通知第一组件的上级组件和第二组件的上级组件,之后第一组件的上级组件通知第一组件释放创建的卷资源,第二组件的上级组件通知第二组件释放创建的网络资源。如此,虚拟机创建失败时,浪费了较多的资源,比如时间、网络资源。
发明内容
本申请提供一种虚拟机创建方法、装置、服务器及存储介质,用于减小虚拟机创建失败时造成的时间、网络资源的浪费。
第一方面,本申请实施例提供一种虚拟机创建方法,该方法包括服务器在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件,其中,第一组件用于为虚拟机创建卷资源,第二组件用于为虚拟机创建网络资源,第三组件用于为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机;若第三组件调度宿主机失败,则服务器调用第三组件通知第一组件终止创建卷资源并通知第二组件终止创建网络资源。
基于该方案,服务器同步调度第一组件、第二组件和第三组件,一般情况下,第三组件调度宿主机相较于第一组件创建卷资源和第二组件创建网络资源的速度较快,因此,若第三组件调度宿主机失败,服务器调用第三组件直接通知第一组件终止创建卷资源并通知第二组件终止创建网络资源。如此,第一组件无需继续创建剩余的卷资源,可以节约第一组件创建剩余卷资源所需的时间和网络资源等。同样的,第二组件也无需创建剩余的网络资源,进而也可以节约第二组件创建剩余网络资源所需的时间和网络资源等。
在一种可能的实现方式中,若第三组件调度宿主机成功、第一组件创建卷资源成功且第二组件创建网络资源成功,服务器调用第三组件根据卷资源和网络资源在宿主机上创建虚拟机。
服务器调用第三组件获取创建虚拟机所需的卷资源和网络资源包括两种实现方式。
第一种实现方式,服务器调用第一组件将创建的卷资源存储至消息队列、以及调用第二组件将创建的网络资源存储至消息队列,之后服务器调用第三组件从消息队列获取卷资源和网络资源,并根据卷资源和网络资源在宿主机上创建虚拟机。通过该实现方式,服务器可以同时进行多个虚拟机的创建;第一组件创建的卷资源和第二组件创建的网络资源可以缓存在消息队列中。
第二种实现方式,服务器可以调用第一组件向第三组件发送卷资源,以及调用第二组件向第三组件发送网络资源。此外,当第三组件调度宿主机成功之后,第三组件也可等待第一组件发送卷资源、以及等待第二组件发送网络资源。
一种可能的实现方式中,若第一组件的上级组件为第四组件,为了便于第一组件与第四组件之间信息的同步,服务器可调用第一组件向第四组件发送第一消息,第一消息用于上报第一组件创建卷资源的结果。通过第一组件向第四组件上报创建卷资源的结果,有助于节省第四组件向第一组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第四组件上设计通知模块,通过运行该通知模块以实现第四组件接收第一组件发送的第一消息。
进一步,为了提高第一组件与第四组件信息同步的可靠性,若第四组件在第一时长内未收到来自第一组件的第一消息,则服务器也可以调用第四组件向第一组件发送第一请求消息,第一请求消息用于请求查询第一组件创建卷资源的结果。
一种可能的实现方式中,若第二组件的上级组件为第五组件,为了便于第二组件与第五组件之间信息的同步,服务器可以调用第二组件向第五组件发送第二消息,第二消息用于上报第二组件创建网络资源的结果。通过第二组件向第五组件上报创建网络资源的结果,有助于节省第五组件向第二组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第五组件上也设计通知模块,通过运行该通知模块以实现第五组件接收第二组件发送的第二消息。
进一步,为了提高第二组件与第五组件信息同步的可靠性,若第五组件在第二时长内未收到来自第二组件的第二消息,则服务器也可以调用第五组件向第二组件发送第二请求消息,第二请求消息用于请求查询第二组件创建网络资源的结果;
一种可能的实现方式中,若第三组件的上级组件为第六组件,为了便于第三组件与第六组件之间信息的同步,服务器可调用第三组件向第六组件发送第三消息,第三消息用于上报第三组件创建虚拟机的结果。通过第三组件向第六组件上报创建虚拟机的结果,有助于节省第六组件向第三组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第六组件上也设计通知模块,通过运行该通知模块以实现第六组件接收第三组件发送的第三消息。
进一步,为了提高第三组件与第六组件信息同步的可靠性,若第六组件在第三时长内未收到来自第三组件的第三消息,则服务器也可以调用第六组件向第三组件发送第三请求消息,第三请求消息用于请求查询第三组件创建虚拟机的结果。
在具体实现中,可以单独执行第一组件与第四组件之间信息的同步、或者单独执行第二组件与第五组件之间信息的同步、或者单独执行第三组件与第六组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也执行第二组件与第五组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。或者还可以既执行第二组件与第五组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也第二组件与第五组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。
在一种可能的实现方式中,上述任一实施例中的第一组件可以为cinder组件、第二组件可以为neutron组件、第三组件可以为nova组件。相应地,第四组件为cinder组件、第五组件为neutron组件、第六组件为nova组件。
第二方面,本申请实施例提供一种虚拟机创建方法,适用于部署有第一组件、第二组件和第三组件的服务器,第一组件接收第一指令,第一指令用于指示第一组件为虚拟机创建卷资源,第二组件接收第二指令,第二指令用于指示第二组件为虚拟机创建网络资源,第三组件接收第三指令,第三指令用于指示第三组件为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机;若第三组件调度宿主机失败,第三组件通知第一组件终止创建卷资源、并通知第二组件终止创建网络资源。
基于该方案,第一组件、第二组件和第三组件同步接收到指令,一般情况下,第三组件调度宿主机相较于第一组件创建卷资源和第二组件创建网络资源的速度较快,因此,若第三组件调度宿主机失败,第三组件通知第一组件终止创建卷资源并通知第二组件终止创建网络资源。如此,第一组件无需继续创建剩余的卷资源,可以节约第一组件创建剩余卷资源所需的时间和/或网络资源等,第二组件也无需创建剩余的网络资源,进而也可以节约第二组件创建剩余网络资源所需的时间、网络资源等。
在一种可能的实现方式中,若第三组件调度宿主机成功、第一组件创建卷资源成功且第二组件创建网络资源成功,第三组件根据卷资源和网络资源在宿主机上创建虚拟机。
第三组件获取创建虚拟机所需的卷资源和网络资源包括两种实现方式。
实现方式一,第一组件先将创建的卷资源存储至消息队列、以及第二组件将创建的网络资源存储至消息队列;第三组件在需要在宿主机上创建虚拟机时,再从消息队列获取卷资源和网络资源。如此,第三组件可以同时进行多个虚拟机的创建,第一组件创建的卷资源和第二组件创建的网络资源可以缓存至消息队列中。
实现方式二,第一组件向第三组件发送卷资源,第二组件向第三组件发送网络资源。当第三组件调度宿主机成功之后,第三组件可等待第一组件发送卷资源、以及等待第二组件发送网络资源。
一种可能的实现方式中,若第一组件的上级组件为第四组件,为了便于第一组件与第四组件之间信息的同步,第一组件创建卷资源成功后,可以向第四组件发送第一消息,第一消息用于上报第一组件创建卷资源的结果。通过第一组件向第四组件上报创建卷资源的结果,有助于节省第四组件向第一组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第四组件上设计通知模块,通过运行该通知模块以实现第四组件接收第一组件发送的第一消息。进一步,为了提高第一组件与第四组件信息同步的可靠性,若第四组件在第一时长内未收到来自第一组件的第一消息,则第四组件可以向第一组件发送第一请求消息,第一请求消息用于请求查询第一组件创建卷资源的结果。
一种可能的实现方式中,若第二组件的上级组件为第五组件,为了便于第二组件与第五组件之间信息的同步,第二组件可向第五组件发送第二消息,第二消息用于上报第二组件创建网络资源的结果。而且通过第二组件向第五组件上报创建网络资源的结果,有助于节省第五组件向第二组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第五组件上也设计通知模块,通过运行该通知模块以实现第五组件接收第二组件发送的第二消息。进一步,为了提高第二组件与第五组件信息同步的可靠性,若第五组件在第二时长内未收到来自第二组件的第二消息,则第五组件可以向第二组件发送第二请求消息,第二请求消息用于请求查询第二组件创建网络资源的结果;
一种可能的实现方式中,若第三组件的上级组件为第六组件,为了便于第三组件与第六组件之间信息的同步,第三组件可向第六组件发送第三消息,第三消息用于上报第三组件创建虚拟机的结果。通过第三组件向第六组件上报创建虚拟机的结果,有助于节省第六组件向第三组件周期性查询结果所浪费的时间和网络资源。一种可能的实现方式中,可以在第六组件上也设计通知模块,通过运行该通知模块以实现第六组件接收第三组件发送的第三消息。进一步,为了提高第二组件与第五组件信息同步的可靠性,若第六组件在第三时长内未收到来自第三组件的第三消息,则第六组件可以向第三组件发送第三请求消息,第三请求消息用于请求查询第三组件创建虚拟机的结果。
第三方面,本申请实施例提供一种虚拟机创建装置,用于实现上述第一方面或第一方面中的任意一种方法,包括相应的组件和处理单元,分别用于实现以上方法中的步骤。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的组件。
在一种可能的实施方式中,虚拟机创建装置的结构中包括第一组件、第二组件、第三组件和处理单元,这些组件和单元可以执行上述方法示例中相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请实施例提供一种服务器,服务器包括处理器。可选地,还可以包括存储器。当其包括存储器时,存储器用于存储指令;处理器用于执行存储器存储的指令。当处理器执行存储器存储的指令时,服务器用于执行上述第一方面或第一方面中任一种方法、或可以用于执行上述第二方面或第二方面中任一种方法。
第五方面,本申请实施例提供一种计算机存储介质,计算机存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法;或者,使得计算机执行第二方面或第二方面的任意可能的实现方式中的方法。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法;或者,使得计算机执行第二方面或第二方面的任意可能的实现方式中的方法。
附图说明
图1a为本申请实施例提供的一种部署于服务器中各组件的架构示意图;
图1b为本申请实施例提供的一种openstack架构示意图;
图2为本申请实施例提供的一种虚拟机的创建方法流程示意图;
图3a为本申请实施例提供的一种openstack集群架构示意图;
图3b为本申请实施例提供的另一种虚拟机的创建方法流程示意图;
图4为本申请实施例提供的一种服务器的结构示意图;
图5为本申请实施例提供的一种装置的结构示意图。
具体实施方式
应理解,本申请中的术语“第一”、“第二”、“第三”、“第四”、“第五”、“第六”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
图1a示例性示出了本申请提供的一种部署于服务器中各组件的架构示意图。如图1a所示,该服务器上部署有第一组件101、第二组件102和第三组件103。第一组件101、第二组件102和第三组件103联合工作可以完成虚拟机(又称作实例)的创建。第一组件101、第二组件102和第三组件103可以部署在同一台物理服务器上,也可以部署在不同的物理服务器上。图1a以第一组件101、第二组件102和第三组件103部署在同一台物理服务器上为例说明。第一组件101用于为虚拟机创建卷资源,第二组件102用于为虚拟机创建网络资源,第三组件103用于为虚拟机调度宿主机并根据第一组件101卷创建的卷资源和第二组件102创建的网络资源在宿主机上创建虚拟机。
进一步的,图1a所示的服务器中还可以包括第四组件104、第五组件105和第六组件106。第四组件104用于管理第一组件101(即第四组件104是第一组件101的上层组件),可在服务器的调度下向第一组件101发送卷资源创建的指令;第五组件105用于管理第二组件102(即第五组件105是第二组件102的上层组件),可在服务器的调度下向第二组件102发送网络资源的创建指令;第六组件106用于管理第三组件103(即第六组件106是第三组件103的上层组件),可在服务器的调度向第三组件103发送创建虚拟机的指令。
基于上述图1a所示的架构,图1b示例性示出了本申请提供的一种openstack的架构示意图。openstack是一个开源的云计算管理平台,可以部署于上述图1a所示的服务器中。如图1b所示,该openstack10包括cinder组件(即存储组件)101a、neutron组件(即网络组件)102a和nova组件(即计算组件)103a。图1b中的cinder组件101a可以是上述图1a中的第一组件101,也可以是上述图1a中的第四组件104。图1b中的neutron组件102a可以是上述图1a中的第二组件102,也可以是上述图1a中的第五组件105。图1b中的nova组件可以是上述图1a中的第三组件103,也可以是上述图1a中的第六组件106。也可以理解为,上述图1a中第一组件101、第二组件102和第三组件103可组成一个openstack。nova组件103a可以分别调用cinder组件101a和neutron组件102a的接口,以向cinder组件101a和neutron组件102a发送消息。
cinder组件101a,可以在创建虚拟机的过程中,为待创建的虚拟机提供卷资源(也称为数据块存储服务)。具体为,cinder组件101a可为openstack提供块存储的接口,cinder组件101a本身不提供数据的存储,需要接一个后端存储设备,例如电磁兼容性(electromagnetic compatibility,EMC)的设备、或分布式存储系统Ceph。cinder组件101a的一个重要功能是卷管理功能,如创建卷、删除卷,在虚拟机上挂载或卸载卷。在虚拟机创建成功后,虚拟机不直接使用后端存储设备,使用的是虚拟机上的块设备(也成称为卷(volume)),因此,也可以理解为cinder组件101a是创建和管理这些volume的。
neutron组件102a,可以在创建虚拟机的过程中,为待创建的虚拟机配置网络,例如,配置虚拟局域网(virtual local area network,VLAN)、为虚拟机分配网络协议(internet protocol,IP)地址等。
nova组件103a,是openstack计算的控制器,可为用户管理虚拟机,可根据用户需求来提供虚拟服务。例如,可以负责虚拟机的创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,还可以配置中央处理器(central processing unit,CPU)信息等。nova组件(nova API)103a主要包括应用程序编程接口(application programming interface,API)1031、调度器(nova-schedule)1032和运算器(nova-compute)1033。nova API1031,可提供云设施与外界交互的接口,可用于接收和处理外部超文本传输协议(hyperTexttansfer protocol,HTTP)请求。例如,nova API可以接收命令行或客户端发送的虚拟机创建指令,之后把虚拟机创建指令送达至调度器1032进行处理。调度器1032,可以以名为“nova-schedule”的守护进程方式运行,可根据调度算法从可用资源池中选择宿主机,以确定虚拟机创建在哪个实体的宿主机上。其中,调度算法主要包括:随机化算法、可用化算法和简单化算法。随机化算法为随机选择可用的宿主机。可用化算法与随机算法相似,指定了随机选择的宿主机的范围。简单化算法为选择负载最小的宿主机,其中,负载的大小可以从负载均衡服务器获得。在具体实现中,调度器1032调度宿主机的调度结果受较多因素的影响,例如宿主机的负载、内存、或CPU架构等。运算器1033,可以以名为“nova-compute”的守护进程方式运行,用于管理虚拟机的整个生命周期,执行真正的创建虚拟机操作。例如在确定调度器1032宿主机调度成功后,可分别从cinder组件101a和neutron组件102a获取卷资源和网络资源,实现虚拟机的创建。
基于图1a和图1b所示的内容,如图2所示,为本申请提供的一种虚拟机的创建方法流程示意图。
在一种可能的实现方式中,服务器可以是上述图1a中服务器,在服务器中部署有第一组件101、第二组件102和第三组件103。服务器中也可以部署有如图1b所示的openstack。第一组件可以是上述图1a中的第一组件101、也可以是上述图1b中的cinder组件。第二组件可以上述图1a中的第二组件102、也可以是上述图1b中的neutron组件。第三组件可以是上述图1a中的第三组件103,也可以是上述图1b中的nova组件。
在又一种实现方式中,服务器可以是上述图1a中服务器,在服务器中部署有第一组件101、第二组件102、第三组件103、第四组件104、第五组件105、第六组件106,也可以在服务器中部署有两个如图1b所示的openstack。第一组件可以是上述图1a中的第一组件101、也可以是上述图1b中的cinder组件。第二组件可以上述图1a中的第二组件102、也可以是上述图1b中的neutron组件。第三组件可以是上述图1a中的第三组件103,也可以是上述图1b中的nova组件。第四组件可以是上述图1a中的第四组件104、也可以是上述图1b中的cinder组件。第五组件可以上述图1a中的第五组件105、也可以是上述图1b中的neutron组件。第六组件可以是上述图1a中的第六组件106,也可以是上述图1b中的nova组件。
如图2所示,该方法包括以下步骤:
步骤201,服务器在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件。
其中,第一组件用于为虚拟机创建卷资源,第二组件用于为虚拟机创建网络资源,第三组件用于为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机。
此处,服务器确定需要创建虚拟机的情况可包括以下内容中的任一项:服务器接收到来自客户端或命令行的虚拟机创建指令;服务器确定当前虚拟机的占用的资源大于资源阈值。
步骤202,若第三组件调度宿主机失败,服务器调用第三组件通知第一组件终止创建卷资源、并通知第二组件终止创建网络资源。
在一种可能的实现方式中,服务器同步调度第一组件、第二组件和第三组件,第一组件开始为该虚拟机创建卷资源,第二组件开始为该虚拟机创建网络资源,第三组件开始为该虚拟机调度宿主机。当第一组件收到第三组件通知终止创建卷资源后,第一组件停止创建剩余的卷资源;当第二组件收到第三组件通知终止创建网络资源后,第二组件停止创建剩余的网络资源。
基于该方案,服务器同步调度第一组件、第二组件和第三组件,一般情况下,第三组件调度宿主机相较于第一组件创建卷资源和第二组件创建网络资源的速度较快,因此,若第三组件调度宿主机失败,服务器调用第三组件通知第一组件终止创建卷资源并通知第二组件终止创建网络资源。如此,第一组件无需继续创建剩余的卷资源,可以节约第一组件创建剩余卷资源所需的时间、网络资源等。同样的,第二组件也无需创建剩余的网络资源,进而也可以节约第二组件创建剩余网络资源所需的时间、网络资源等。进一步,由于第三组件调度宿主机失败后及时通知第一组件终止创建卷资源和第二组件终止创建网络资源,因而有助于同层通信效率的提高,可以使得第一组件和第二组件快速进行相应资源的回滚。
在上述步骤201之后,若第三组件调度宿主机成功、第一组件创建卷资源成功且第二组件创建网络资源成功,则服务器调用第三组件根据卷资源和网络资源在宿主机上创建虚拟机。
在一种可能的实现方式中,第三组件可以通过查询数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需求的宿主机。若有符合虚拟机创建需求的宿主机,则第三组件调度虚拟机成功,若没有符合虚拟机创建需求的宿主机,则第三组件调度虚拟机失败。以如下具体的示例来说明第三组件调度宿主机的情况,假设有20台宿主机,每台宿主机剩余2GB内存,统计总内存剩余量为2GB*20=40GB。若用户申请创建一台4GB内存的虚拟机时,由于没有任何一台宿主机能满足内存资源的需求,因此,第三组件调度宿主机失败。若用户申请创建一台2GB内存的虚拟机时,20台宿主机均能满足内存资源的需求,可以根据调度算法从20台宿主机中选择一台宿主机作为待创建的虚拟机的宿主机,此时,第三组件调度宿主机成功。
当第三组件调度宿主机成功后,第三组件获取第一组件创建的卷资源及第二组件创建的网络资源。在一种可能的实现方式中,服务器调用第一组件将创建的卷资源存储至消息队列、以及调用第二组件将创建的网络资源存储至消息队列。若第三组件调度宿主机成功,服务器再调用第三组件从消息队列获取卷资源和网络资源,并根据卷资源和网络资源在宿主机上创建虚拟机。在具体实现中,服务器可以确定同时需要创建多个虚拟机,为了便于区分创建不同的虚拟机的任务,每个创建虚拟机的任务可以用相应的任务标识(identifier,ID)进行区分。第一组件可以将创建的卷资源和对应的任务标识存储至消息队列,第二组件也可将创建的网络资源和对应的任务标识存储至消息队列。例如,服务器确定需同时创建两个虚拟机时,两个创建虚拟机的任务可用不同的任务标识A和B区分,第一组件可将为任务标识A创建的卷资源和任务标识A以一一映射的关系存储至消息队列,将为任务标识B创建的卷资源和任务标识B也以一一映射的关系存储至消息队列。第二组件可将为任务标识A创建的网络资源和任务标识A以一一映射的关系存储至消息队列,第二组件可将为任务标识B创建的网络资源和任务标识B以一一映射的关系存储至消息队列。若第三组件为任务标识A调度宿主机成功,服务器调用第三组件从消息队列获取任务标识A对应的卷资源和网络资源,并根据任务标识A对应的卷资源和网络资源在确定出的宿主机上创建虚拟机。
在另一种可能的实现方式中,服务器中也可以不设置消息队列。第三组件调度宿主机成功后,等待第一组件为该虚拟机创建的卷资源,以及等待第二组件为该虚拟机创建的网络资源。第一组件完成卷资源的创建后,服务器调用第一组件向第三组件发送卷资源,以及,第二组件完成网络资源的创建后,服务器调用第二组件向第三组件发送网络资源。从而,第三组件在接收到第一组件发送的卷资源和第二组件发送的网络资源后,可根据接收到的卷资源和网络资源,在确定出的宿主机上创建虚拟机。该方案由于未设置消息队列,在同一时刻可能仅用于创建一个虚拟机。
本申请中,在一种可能的实现方式中,若第三组件调度宿主机成功、且第一组件创建卷资源成功,但是第二组件创建网络资源失败,则可以认为虚拟机创建失败。在另一种可能的实现方式中,若第三组件调度宿主机成功、且第二组件创建网路资源成功,但第一组件创建卷资源失败,则可以认为虚拟机创建成功。
如图1a所示,若第一组件、第二组件和第三组件均有其对应的上级组件,分别为第四组件、第五组件和第六组件。即第四组件用于管理第一组件,第五组件用于管理第二组件,第六组件用于管理第三组件。
为了实现第一组件与第四组件之间信息的同步,一种可能的实现方式中,第四组件可包括通知模块,通过运行该通知模块可实现第四组件接收第一组件发送的第一消息。可选地实现方式可为:服务器可调用第一组件通过第四组件的通知模块向第四组件发送第一消息,第一消息用于上报第一组件创建卷资源的结果。而且通过第一组件向第四组件上报创建卷资源的结果,有助于节省第四组件向第一组件周期性查询结果所浪费的时间和网络资源。相对应地,第四组件可以根据接收到的创建卷资源的结果,更新第四组件的卷资源的状态,例如,第四组件接收到创建卷资源的结果为成功,则第四组件将相应的卷资源的状态更新为成功。
进一步,为了提高第一组件与第四组件信息同步的可靠性,若第四组件在第一时长内未收到来自第一组件的第一消息,则服务器可以调用第四组件向第一组件发送第一请求消息,第一请求消息用于请求查询第一组件创建卷资源的结果。如此,上级组件的主动查询和下级组件主动上报相结合,可进一步提高第一组件与第四组件信息同步的可靠性。
为了便于第二组件与第五组件之间信息的同步,一种可能的实现方式中,第五组件也可包括通知模块,通过运行该通知模块可实现第五组件接收第额组件发送的第二消息。可选地实现方式可为:服务器调用第二组件通过第五组件的通知模块向第五组件发送第二消息,第二消息用于上报第二组件创建网络资源的结果。而且通过第二组件向第五组件上报创建网络资源的结果,有助于节省第五组件向第二组件周期性查询结果所浪费的时间和网络资源。相对应地,第五组件可以根据接收到的创建网络资源的结果,更新第五组件的网络资源的状态,例如,第五组件接收到创建网络资源的结果为失败,则第五组件将相应的网络资源的状态更新为失败。
进一步,为了提高第二组件与第五组件信息同步的可靠性,若第五组件在第二时长内未收到来自第二组件的第二消息,则服务器可以调用第五组件向第二组件发送第二请求消息,第二请求消息用于请求查询第二组件创建网络资源的结果。如此,上级组件的主动查询和下级组件主动上报相结合,可进一步提高第二组件与第五组件信息同步的可靠性。
为了便于第三组件与第六组件之间信息的同步,一种可能的实现方式中,第六组件也可包括通知模块,通过运行该通知模块可实现第四组件接收第一组件发送的第一消息。可选地实现方式可为:服务器可调用第三组件通过第六组件的通知模块向第六组件发送第三消息,第三消息用于上报第三组件创建虚拟机的结果。而且通过第三组件向第六组件上报创建虚拟机的结果,有助于节省第六组件向第三组件周期性查询结果所浪费的时间和网络资源。相对应地,第六组件可以根据接收到的虚拟机的创建结果,更新第六组件的虚拟机状态,例如,第六组件接收到的虚拟机的创建结果为成功,则更新第六组件的虚拟机的状态为成功。若第六组件接收到虚拟的创建结果为失败,则更新第六组件的虚拟机的状态为失败,并进行相应资源的回滚。
进一步,为了提高第二组件与第五组件信息同步的可靠性,若第六组件在第三时长内未收到来自第三组件的第三消息,则服务器可以调用第六组件向第三组件发送第三请求消息,第三请求消息用于请求查询第三组件创建虚拟机的结果。如此,上级组件的主动查询和下级组件主动上报相结合,可进一步提高第三组件与第六组件的信息同步的可靠性。
一种可能的实现方式中,上述第一时长、第二时长和第三时长可以相等,也可以不相等,本申请不做限定。
在具体实现中,可以单独执行第一组件与第四组件之间信息的同步、或者单独执行第二组件与第五组件之间信息的同步、或者单独执行第三组件与第六组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也执行第二组件与第五组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。或者还可以既执行第二组件与第五组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。或者还可以既执行第一组件与第四组件之间信息的同步,也第二组件与第五组件之间信息的同步,也执行第三组件与第六组件之间信息的同步。
下面结合具体示例,对本申请提供的上述虚拟机的创建方法进行说明。
如图3a所示,为本申请提供的一种openstack集群的架构示意图。openstack集群包括第一openstack和至少一个第二openstack,第一openstack和第二openstack可以部署于同一服务器,也可以部署于不同的服务器。第一openstack可用于管理至少一个第二openstack中的每个第二openstack。图3a以包括两个第二openstack为例说明。
如图3a所示,openstack集群包括第一openstack20、两个第二openstack30。第一openstack20包括第二cinder组件、第二neutron组件、第二nova组件和通知模块104。第一openstack20也可以是在图1b所示的openstack10中增加通知模块104,也可以理解为第二cinder组件可以是上述图1a中的第四组件104,也可以是上述图1b中的cinder组件101a。第二neutron组件可以是上述图1a中的第五组件105,也可以是上述图1b中的neutron组件102a。第二nova组件可以是上述图1a中的第六组件106,也可以是上述图1b中的nova组件103a。第二openstack30包括第一cinder组件、第一neutron组件、第一nova组件。图3a所示的第一cinder组件可以与上述图1b所示的cinder组件101a相同,也可以是上述图1a中的第一组件101。第一neutron组件可以与上述图1b所示的neutron组件102a相同,也可以是上述图1a中的第二组件102。第一nova组件可以与上述图1b所示的nova组件101a相同,也可以是上述图1a中的第三组件103。此处不再赘述。在第二openstack30的同层增加了消息队列105。消息队列105可用于存储第一cinder组件、第一neutron组件、第一nova组件的相关信息。例如,第一cinder组件可以向消息队列105存储创建卷资源的结果,第一neutron组件可以向消息队列105存储创建的网络资源,第一nova组件可以向消息队列105存储虚拟机调度结果。第一cinder组件、第一neutron组件、第一nova组件可以在遵循高级消息队列协议(advanced message queuing protocol,AMQP)的基础上从消息队列105中获取信息,以实现相互之间的通信。
第一openstack20可以与至少两个第二openstack30中的任一个进行通信。图3a以与其中一个进行通信为例说明。一种可能的实现方式为,第一cinder组件可与第二cinder组件进行通信,第一neutron组件可与第二neutron组件进行通信,第一nova组件可与第二nova组件进行通信。具体的通信方式可为,第二cinder组件可调用第一cinder组件的接口,第一cinder组件通过通知模块104向第二cinder组件发消息;第二neutron组件可调用第一neutron组件的接口,第一neutron组件通过通知模块104向第二neutron组件发消息;第二nova组件可调用第一nova组件的接口,第一nova组件通过通知模块104向第二nova组件发消息。
基于上述图3a所示的openstack集群的架构,如图3b所示,为本申请提供的另一种虚拟机创建方法流程示意图,如图3b所示,该方法包括以下步骤:
步骤301,第二cinder组件、第二neutron组件和第二nova组件并行向第一cinder组件、第一neutron组件和第一nova组件分别下发第一指令、第二指令和第三指令。
其中,第一指令用于指示第一cinder组件为虚拟机创建卷资源,第二指令用于指示第一neutron组件为虚拟机创建网络资源,第三指令用于指示第一nova组件为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机,其中,第一指令、第二指令和第三指令均为异步消息。
此处,可以是第二nova组件接收来自客户端或命令行的虚拟机创建请求,之后第二nova组件分别调用第二cinder组件的接口和第二neutron组件的接口,向第二cinder组件发送卷资源相关的信息,向第二neutron组件发送网络资源相关的信息。
在一种可能的实现方式中,第二cinder组件通过调用第一cinder组件的接口,向第一cinder组件下发第一指令;第二neutron组件通过调用第一neutron组件的接口,向第一neutron组件下发第二指令;第二nova组件通过调用第一nova组件的接口,向第一nova组件下发第三指令。
相应地,第一cinder组件接收来自第二cinder组件的第一指令,第一neutron组件接收来自第二neutron组件的第二指令,第一nova组件接收来自第二nova组件的第三指令。
此处,第一cinder组件、第一neutron组件和第一nova组件可分别同步接收第一指令、第二指令和第三指令。
步骤302,第一cinder组件根据第一指令创建卷资源,第一neutron组件根据第二指令创建网络资源,第一nova组件根据第三指令调度宿主机。
步骤303,若第一nova组件调度宿主机失败,第一nova组件通知第一cinder组件终止创建卷资源、并通知第一neutron组件终止创建网络资源。
此处,第一nova组件通知第一cinder组件和第一neutron组件可以通过调用接口的方式实现。
结合图1b来说明,若第一nova组件调度宿主机失败,则第一nova组件可以将调度失败的结果存储至消息队列105,以便于后续第二nova组件在查询该虚拟机调度结果时,可以从消息队列105中获取到调度失败的结果。
步骤304,若第一nova组件调度宿主机成功、第一nova组件获取第一cinder组件创建的卷资源和第一neutron组件创建的网络资源,第一nova组件根据卷资源和网络资源在宿主机上创建虚拟机。
结合上述图1b说明,第一nova组件的nova API1031接收到第三指令后,向调度器(nova-schedule)1032请求创建虚拟机的资源。调度器(nova-schedule)1032通过查询数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需求的宿主机。若有符合虚拟机创建需求的宿主机,调度器(nova-schedule)1032向运算器(nova-compute)1033发送对应的创建虚拟机的第三指令,运算器(nova-compute)1033获取创建虚拟机的信息(包括宿主机的ID,第一cinder组件创建的卷资源、CPU配置、硬盘大小、镜像、第一neutron组件创建的网络资源等)。具体实现可以为,运算器(nova-compute)1033通过HTTP请求镜像服务(glance)获取创建虚拟机所需要镜像信息,即统一资源定位器(universal resourcelocator,URL),通过HTTP请求向第一neutron组件获取创建虚拟机所需要的网络资源,例如分配给该虚拟机的IP地址,通过HTTP请求向第一cinder组件获取创建虚拟机所需要的卷资源。运算器(nova-compute)1033将相应的获取到的创建虚拟机需要的信息发送至宿主机,调用底层虚拟机管理器(hypervior)在宿主机上创建虚拟机,hypervior也称为虚拟机监视器(virtual machine monitor)。
在一种可能的实现方式中,第一nova组件获取第一cinder组件创建的卷资源和第一neutron组件创建的网络资源包括如下两种实现方式。实现方式一,第一nova组件从消息队列获取卷资源和网络资源,并根据卷资源和网络资源在宿主机上创建虚拟机。结合上述图3a来说明,第一cinder组件可将创建的卷资源存储至消息队列105,第一neutron组件也可将创建的网络资源存储至消息队列105中。第一nova组件在宿主机调度成功后,可以从消息队列105中获取为该虚拟机创建的卷资源和网络资源,以实现虚拟机的创建。图3b以实现方式一为例说明。
实现方式二,第一cinder组件在完成卷资源的创建后,可直接向第一nova组件发送卷资源,第一neutron组件在完成网络资源的创建后,可直接向第一nova组件发送的网络资源。
上述步骤303和上述步骤304没有先后顺序,在上述步骤302之后,若第三组件调度宿主机成功,则执行步骤304;若第三组件调度宿主机失败,则执行步骤303。
步骤305,第一cinder组件通过第二cinder组件的通知模块向第二cinder组件发送第一消息,第一消息用于上报第一cinder组件创建卷资源的结果。
结合图1b来说明:第一cinder组件可以通过通知模块104向cinder组件101b发送创建卷资源的结果。
相对应地,第二cinder组件根据接收到的卷资源的结果更新第二cinder组件卷资源的状态。若第二cinder组件接收到的卷资源的结果为失败,则第二cinder组件为该虚拟机创建的卷资源的状态更新为失败,并对卷资源进行回滚。
步骤306,第一neutron组件通过第二neutron组件的通知模块向第二neutron组件发送第二消息,第二消息用于上报第一neutron组件创建网络资源的结果;
结合图1b来说明:第一neutron组件可以通过通知模块104向第二neutron组件发送创建网络资源的结果。
相对应地,第二neutron组件根据接收到的网络资源的结果更新第二neutron组件网络资源的状态。若第二neutron组件接收到的网络资源的结果为失败,则第二neutron组件为该虚拟机创建的网络资源的状态更新为失败,并对网络资源进行回滚。
步骤307,第一nova组件通过第二nova组件的通知模块向第二nova组件发送第三消息,第三消息用于上报第一nova组件创建虚拟机的结果。
结合图1b来说明:第一neutron组件可以通过通知模块104向第二neutron组件发送创建虚拟机的结果。
相对应地,第二nova组件根据接收到的虚拟机的创建结果更新第二nova组件虚拟机的信息。若第二nova组件接收到的虚拟机创建的结果为失败,则第二nova组件将该虚拟机创建的状态更新为失败,并对该虚拟机的资源进行回滚。
上述步骤305、步骤306和步骤307不表示先后顺序,可以仅执行上述步骤305、步骤306和步骤307中的任一个步骤,也可以执行其中任两个步骤,也可以三个步骤均执行。上述步骤305、步骤306和步骤307均可在上述步骤302之后执行。如此,可以使得第二cinder组件,第二neutron组件和第二nova组件分别及时获取到对应的第一cinder组件,第一neutron组件和第一nova组件的结果,并及时更新对应的信息。
步骤308,若第二cinder组件在第一时长内未收到来自第一cinder组件的第一消息,则第二cinder组件可以向第一cinder组件发送第一请求消息,第一请求消息用于请求查询第一cinder组件创建卷资源的结果。
步骤309,若第二neutron组件在第二时长内未收到来自第一neutron组件的第二消息,则第二neutron组件也可以向第一neutron组件发送第二请求消息,第二请求消息用于请求查询第一neutron组件创建网络资源的结果。
步骤310,若第二nova组件在第三时长内未收到来自第一nova组件的第三消息,则第二nova组件也可以向第一nova组件发送第三请求消息,第三请求消息用于请求查询第一nova组件创建虚拟机的结果。
此处,第二cinder组件向第一cinder组件发送第一请求消息可以通过调用第一cinder组件接口的方式,第二neutron组件向第一neutron组件发送第二请求消息也可以通过调用第一neutron组件接口的方式。第二nova组件向第一nova组件发送第三请求消息也可以通过调用第一nova组件接口的方式。
上述步骤308、步骤309和步骤310之间不表示先后顺序,可以仅执行其中一个步骤,也可以执行其中任两个步骤,或者三个步骤均执行。
若执行了上述步骤305,则不再执行上述步骤308;若执行了上述步骤306,则不再执行上述步骤309;若执行了上述步骤307,则不再执行上述步骤310。
在一种可能的实现方式中,步骤302、步骤304、步骤305、步骤306、步骤307、步骤308、步骤309和步骤310均是可选步骤。
基于上述内容和相同构思,本申请提供一种服务器400,用于执行上述方法中的服务器的任一个方案。图4示例性示出了本申请提供的一种服务器的结构示意图,如图4所示,服务器400包括处理器401、存储器402和通信接口403(通信接口也可以是网卡);其中,处理器401、存储器402和通信接口403通过总线相互连接。该示例中的服务器400可以执行上述图2中服务器对应执行的方案,也可以执行图3b中第一组件、第二组件和第三组件对应执行的方案。该服务器400也可以是上述图1a中的服务器101,也可以是部署有图1b所示的openstack的服务器,或者也可以是部署有图3a所示的openstack集群的服务器。
存储器402可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器402还可以包括上述种类的存储器的组合。
通信接口403可以为有线通信接入口,无线通信接口或其组合,其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为WLAN接口。
处理器401可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选地,存储器402还可以用于存储程序指令,处理器401调用该存储器402中存储的程序指令,可以执行上述方案中所示实施例中的一个或多个步骤,或其中可选的实施方式,使得服务器400实现上述方法中通信设备的功能。
处理器401用于执行存储器存储的指令,当处理器401执行存储器存储的指令时,可以调用第一组件、第二组件和第三组件来实现上述图2和图3b中所述的方法流程,具体阐述请参照上述方法实施例,这里不再过多赘述。
基于上述内容和相同构思,本申请提供一种虚拟机创建装置500,用于执行上述方法。图5示例性示出了本申请提供的一种虚拟机创建装置的结构示意图,如图5所示,装置500包括第一组件501、第二组件502、第三组件503和处理单元504。该示例中的装置500可以执行上述图2中服务器对应执行的方案,也可以执行图3b中第一组件、第二组件和第三组件对应执行的方案。该装置500也可以是上述图1a中的服务器101,也可以是部署有图1b所示的openstack的服务器,或者也可以是部署有图3a所示的openstack集群的服务器。
第一组件501,用于为虚拟机创建卷资源;第二组件502,用于接为虚拟机创建网络资源;第三组件503,用于为虚拟机调度宿主机并根据卷资源和网络资源在宿主机上创建虚拟机;处理单元504,用于在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件,若所述第三组件调度宿主机失败,调用所述第三组件通知所述第一组件终止创建卷资源、并通知所述第二组件终止创建网络资源。
应理解,以上装置的各组件和单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。本申请实施例中,图5涉及到的第一组件501、第二组件502、第三组件503可以为相应的软件程序,当然也可以基于硬件实现第一组件501、第二组件502、第三组件503的相应功能。处理单元504可以由上述图4的处理器401实现,用于控制第一组件501、第二组件502、第三组件503之间的相互交互和调动,从而使得该虚拟机创建装置500可以完成上述方法实施例中服务器的相应处理功能。
在上述实施例中,可以全部或部分地通过软件、硬件或者其组合来实现、当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。指令可以存储在计算机存储介质中,或者从一个计算机存储介质向另一个计算机存储介质传输,例如,指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机存储介质可以是计算机能够存取的任何介质或者是包含一个或多个介质集成的服务器、数据中心等数据存储设备。介质可以是磁性介质,(例如,软盘、硬盘、磁带、磁光盘(MO)等)、光介质(例如光盘)、或者半导体介质(例如ROM、EPROM、EEPROM、固态硬盘(solid state disk,SSD))等。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (16)
1.一种虚拟机创建方法,其特征在于,包括:
服务器在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件,所述第一组件用于为虚拟机创建卷资源,所述第二组件用于为虚拟机创建网络资源,所述第三组件用于为虚拟机调度宿主机并根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机;
若所述第三组件调度宿主机失败,所述服务器调用所述第三组件通知所述第一组件终止创建卷资源、并通知所述第二组件终止创建网络资源。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第三组件调度宿主机成功、所述第一组件创建卷资源成功且所述第二组件创建网络资源成功,所述服务器调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机。
3.如权利要求2所述的方法,其特征在于,所述服务器调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机之前,还包括:
所述服务器调用所述第一组件将创建的卷资源存储至消息队列、以及调用所述第二组件将创建的网络资源存储至所述消息队列;
所述服务器调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机,包括:
所述服务器调用所述第三组件从所述消息队列获取所述卷资源和所述网络资源,并根据所述卷资源和所述网络资源在所述宿主机上创建所述虚拟机。
4.如权利要求2所述的方法,其特征在于,所述服务器调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机之前,还包括:
所述服务器调用所述第一组件向所述第三组件发送所述卷资源,以及调用所述第二组件向所述第三组件发送所述网络资源。
5.如权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
所述服务器调用所述第一组件向第四组件发送第一消息,所述第一消息用于上报所述第一组件创建卷资源的结果,所述第四组件为所述第一组件的上级组件;和/或,
所述服务器调用所述第二组件向第五组件发送第二消息,所述第二消息用于上报所述第二组件创建网络资源的结果,所述第五组件为所述第二组件的上级组件;和/或,
所述服务器调用所述第三组件向第六组件发送第三消息,所述第三消息用于上报所述第三组件创建虚拟机的结果,所述第六组件为所述第三组件的上级组件。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
若所述第四组件在第一时长内未收到来自所述第一组件的所述第一消息,则所述服务器调用所述第四组件向所述第一组件发送第一请求消息,所述第一请求消息用于请求查询所述第一组件创建卷资源的结果;和/或,
若所述第五组件在第二时长内未收到来自所述第二组件的所述第二消息,则所述服务器调用所述第五组件向所述第二组件发送第二请求消息,所述第二请求消息用于请求查询所述第二组件创建网络资源的结果;和/或,
若所述第六组件在第三时长内未收到来自所述第三组件的所述第三消息,则所述服务器调用所述第六组件向所述第三组件发送第三请求消息,所述第三请求消息用于请求查询所述第三组件创建虚拟机的结果。
7.如权利要求1至6任一项所述的方法,其特征在于,所述第一组件为cinder组件、所述第二组件为neutron组件、所述第三组件为nova组件。
8.一种虚拟机创建装置,其特征在于,包括:
第一组件,用于为虚拟机创建卷资源;
第二组件,用于为虚拟机创建网络资源;
第三组件,用于为虚拟机调度宿主机并根据所述第一组件创建的卷资源和所述第二组件创建的网络资源在所述宿主机上创建虚拟机;
处理单元,用于在确定需要创建虚拟机时,同步调用第一组件、第二组件和第三组件,若所述第三组件调度宿主机失败,调用所述第三组件通知所述第一组件终止创建卷资源、并通知所述第二组件终止创建网络资源。
9.如权利要求8所述的装置,其特征在于,所述处理单元,还用于:
若所述第三组件调度宿主机成功、所述第一组件创建卷资源成功且所述第二组件创建网络资源成功,则调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机。
10.如权利要求9所述的装置,其特征在于,所述处理单元,还用于:在调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机之前,调用所述第一组件将创建的卷资源存储至消息队列、以及调用所述第二组件将创建的网络资源存储至所述消息队列;
所述处理单元调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机时,具体用于调用所述第三组件从所述消息队列获取所述卷资源和所述网络资源,并根据所述卷资源和所述网络资源在所述宿主机上创建所述虚拟机。
11.如权利要求9所述的装置,其特征在于,所述处理单元,还用于:在调用所述第三组件根据所述卷资源和所述网络资源在所述宿主机上创建虚拟机之前,调用所述第一组件向所述第三组件发送所述卷资源,以及调用所述第二组件向所述第三组件发送所述网络资源。
12.如权利要求8至11任一项所述的装置,其特征在于,所述处理单元,还用于:
调用所述第一组件向第四组件发送第一消息,所述第一消息用于上报所述第一组件创建卷资源的结果,所述第四组件为所述第一组件的上级组件;和/或,
调用所述第二组件向第五组件发送第二消息,所述第二消息用于上报所述第二组件创建网络资源的结果,所述第五组件为所述第二组件的上级组件;和/或,
调用所述第三组件向第六组件发送第三消息,所述第三消息用于上报所述第三组件创建虚拟机的结果,所述第六组件为所述第三组件的上级组件。
13.如权利要求12所述的装置,其特征在于,所述处理单元,还用于:
在所述第四组件在第一时长内未收到来自所述第一组件的第一消息时,调用所述第四组件向所述第一组件发送第一请求消息,所述第一请求消息用于请求查询所述第一组件创建卷资源的结果;和/或,
在所述第五组件在第二时长内未收到来自所述第二组件的第二消息时,调用所述第五组件向所述第二组件发送第二请求消息,所述第二请求消息用于请求查询所述第二组件创建网络资源的结果;和/或,
在所述第六组件在第三时长内未收到来自所述第三组件的第三消息时,调用所述第六组件向所述第三组件发送第三请求消息,所述第三请求消息用于请求查询所述第三组件创建虚拟机的结果。
14.如权利要求8至13任一项所述的装置,其特征在于,所述第一组件为cinder组件、所述第二组件为neutron组件、所述第三组件为nova组件。
15.一种服务器,其特征在于,包括存储器和处理器;
存储器,存储有计算机程序;
处理器,用于调用所述存储器存储的计算机程序,以使所述服务器执行如权利要求1至7任一项所述的虚拟机创建方法。
16.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811182127.4A CN111045778B (zh) | 2018-10-11 | 2018-10-11 | 一种虚拟机的创建方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811182127.4A CN111045778B (zh) | 2018-10-11 | 2018-10-11 | 一种虚拟机的创建方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045778A true CN111045778A (zh) | 2020-04-21 |
CN111045778B CN111045778B (zh) | 2023-09-12 |
Family
ID=70229016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811182127.4A Active CN111045778B (zh) | 2018-10-11 | 2018-10-11 | 一种虚拟机的创建方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045778B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209090A (zh) * | 2020-04-17 | 2020-05-29 | 腾讯科技(深圳)有限公司 | 一种云平台中虚拟机的创建方法、组件及服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231696A1 (en) * | 2010-03-17 | 2011-09-22 | Vmware, Inc. | Method and System for Cluster Resource Management in a Virtualized Computing Environment |
US20120240110A1 (en) * | 2011-03-16 | 2012-09-20 | International Business Machines Corporation | Optimized deployment and replication of virtual machines |
CN103703724A (zh) * | 2013-08-15 | 2014-04-02 | 华为技术有限公司 | 一种资源发放方法 |
CN106933646A (zh) * | 2015-12-29 | 2017-07-07 | 杭州华为数字技术有限公司 | 一种创建虚拟机的方法及装置 |
CN107515773A (zh) * | 2016-06-16 | 2017-12-26 | 北京易讯通信息技术股份有限公司 | 一种基于Openstack快速创建虚拟机的方法 |
-
2018
- 2018-10-11 CN CN201811182127.4A patent/CN111045778B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231696A1 (en) * | 2010-03-17 | 2011-09-22 | Vmware, Inc. | Method and System for Cluster Resource Management in a Virtualized Computing Environment |
US20120240110A1 (en) * | 2011-03-16 | 2012-09-20 | International Business Machines Corporation | Optimized deployment and replication of virtual machines |
CN103703724A (zh) * | 2013-08-15 | 2014-04-02 | 华为技术有限公司 | 一种资源发放方法 |
WO2015021629A1 (zh) * | 2013-08-15 | 2015-02-19 | 华为技术有限公司 | 一种资源发放方法 |
CN106933646A (zh) * | 2015-12-29 | 2017-07-07 | 杭州华为数字技术有限公司 | 一种创建虚拟机的方法及装置 |
CN107515773A (zh) * | 2016-06-16 | 2017-12-26 | 北京易讯通信息技术股份有限公司 | 一种基于Openstack快速创建虚拟机的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209090A (zh) * | 2020-04-17 | 2020-05-29 | 腾讯科技(深圳)有限公司 | 一种云平台中虚拟机的创建方法、组件及服务器 |
CN111209090B (zh) * | 2020-04-17 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 一种云平台中虚拟机的创建方法、组件及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111045778B (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809900B2 (en) | Method and system for migration of containers in a container orchestration platform between compute nodes | |
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
WO2020135799A1 (zh) | Vnf服务实例化方法及装置 | |
CN109565515B (zh) | 分布式资源管理系统中的动态租户结构调整的系统、设备和过程 | |
US8938510B2 (en) | On-demand mailbox synchronization and migration system | |
CN103999031B (zh) | 云服务器的虚拟私有存储阵列服务 | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
EP3584998B1 (en) | Method for virtual machine capacity expansion and reduction and virtual management device | |
CN106227582B (zh) | 弹性伸缩方法及系统 | |
CN112384895A (zh) | 使用函数检查点实现服务枢纽的函数可移植性 | |
JP6636142B2 (ja) | スケールアウト関連付けの方法および装置、ならびにシステム | |
US20110252137A1 (en) | Systems and Methods for Dynamically Provisioning Cloud Computing Resources | |
US11169846B2 (en) | System and method for managing tasks and task workload items between address spaces and logical partitions | |
US11706298B2 (en) | Multichannel virtual internet protocol address affinity | |
US10705740B2 (en) | Managing of storage resources | |
CN109960579B (zh) | 一种调整业务容器的方法及装置 | |
CN109905258B (zh) | PaaS的管理方法、装置及存储介质 | |
KR102623631B1 (ko) | Nfv 환경에서의 vnf 자동 설정 방법 및 이를 위한 nfv mano | |
CN111045778B (zh) | 一种虚拟机的创建方法、装置、服务器及存储介质 | |
CN114615268B (zh) | 基于Kubernetes集群的服务网络、监控节点、容器节点及设备 | |
CN110247937B (zh) | 弹性存储系统共享文件管理、访问方法及相关设备 | |
JP2017021667A (ja) | システム、及び制御方法 | |
US20220382601A1 (en) | Configuration map based sharding for containers in a machine learning serving infrastructure | |
CN112152988B (zh) | 用于异步nbmp请求处理的方法、系统以及计算机设备和介质 | |
CN114615263A (zh) | 集群在线迁移方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |