虚拟机与容器混合嵌套架构的虚拟网络管理方法及系统与流程

文档序号:15202517发布日期:2018-08-19 20:29阅读:368来源:国知局

本发明涉及云计算领域和计算机网络领域,尤其涉及一种虚拟机与容器混合嵌套架构的虚拟网络管理方法。



背景技术:

基于虚拟机的虚拟化和基于容器的虚拟化是当前云计算领域两种典型的服务器虚拟化技术,前者的优势在于资源的隔离性较好、安全性高、客户机操作系统与宿主机操作系统解耦,而后者的优势在于虚拟化平台的轻量化、业务部署的便捷性和高效的资源弹性伸缩,这两种虚拟化技术分别有着不同的应用场景,在可预见的一段相当长时间内将并存。

对于虚拟机来说,目前最流行的虚拟网络解决方案是openstack的neutron方案,控制平面由控制节点上的neutronserver服务实现,数据平面的虚拟网络管理则由各计算节点上的agent实现,如用ovsagent实现ovsbridge(br-int、br-eth、br-tun等)流表管理,这种方式的缺陷包括:1)集中式的虚拟网络管理导致性能较低,不适用容器网络的快速弹性伸缩;2)不支持虚拟机与容器嵌套的虚拟化场景。

对于容器来说,目前比较流行的虚拟网络解决方案有calico、flannel、weave、libnetwork等,但这些解决方案只是针对容器,不提供虚拟机的网络支持,更不支持虚拟机与容器嵌套的虚拟化场景。

由于虚拟机技术与容器技术是独立发展的两个技术路线,其虚拟网络的实现方式也是各自独立演进的,难以满足虚拟化和容器混合部署特别是嵌套部署的场景,因此需要一套新的网络管理方法来提供虚拟机和容器的统一网络管理能力。



技术实现要素:

针对当前虚拟机和容器混合部署特别是嵌套部署场景,本发明提出了一种虚拟机与容器混合嵌套架构的虚拟网络管理方法。实现虚拟机网络与容器网络的统一融合管理。

本发明综合了集中式与分布式控制器的优点,采用两级控制器结构,将控制平面部分功能下沉到hypervisor服务器上的本地控制器里,集中式控制器负责全局数据维护以及与第三方运管平台接口,本地控制器负责本地虚拟机交换机上的流表维护,能够有效降低全局集中式控制器的压力,提升虚拟网络管理的性能。

具体操作步骤为:

1)在服务器内部引入本地网络控制器(localcontroller),简称lc;

2)服务器上的虚拟机和容器均连接到内部的虚拟交换机(virtualswitch-l0);

3)对于容器运行在虚拟机上的嵌套场景,容器网卡连接到虚拟机内的虚拟交换机(virtualswitch-l1);

4)lc从统一网络控制器(unifiednetworkcontroller,简称unc)中获取必要的全局信息,如各租户虚拟机、容器的基本信息及其物理分布等;

5)创建虚拟机或容器时,lc根据本地虚拟机、容器的基本信息向virtualswitch-l0下发流表,打通本地虚拟机或容器的进出通道,租户之间用vlan隔离;

6)当虚拟机或容器删除时,lc删除virtualswitch-l0上与该虚拟机相关的流表;

7)当虚拟机或容器发生迁移时,lc删除迁移前宿主机上virtualswitch-l0上与该虚拟机相关的流表,迁移完成后由目标宿主机的lc重新下发相关流表;

8)对于容器运行在虚拟机内的嵌套场景,在虚拟机内创建、删除、迁移容器时,宿主机的lc将向virtualswitch-l0下发或删除相应流表,而虚拟机内的虚拟交换机virtualswitch-l1则为普通二层交换模式;

9)虚拟机或容器跨节点通信时,virtualswitch-l0将根据租户网络的类型将其封装为其对应的格式发送出去,如vlan类型的网络封装为vlan报文、vxlan类型的网络则封装为vxlan报文;

10)若租户网络为vlan类型,则首先需要进行物理网络的vlan配置;

11)若租户网络为vxlan类型,则各服务器之间的vxlan全连接隧道由unc负责建立。

由于unc本身并不负责虚拟机和容器的虚拟化管理工作,因此unc需要与第三方云管平台交互,接管其虚拟网络管理服务,并监听虚拟机和容器的创建、删除、迁移等事件。

当创建虚拟机时,unc将该虚拟机相关的信息以及当前租户网络的其他相关虚拟机及容器的基本信息及分布情况通告给该虚拟机所在hypervisor服务器上的lc,由该lc向其本地虚拟交换机virtualswitch-l0下发流表,打通该虚拟机到租户网络内其它虚拟机或容器的通信通道。此外,还需要将该虚拟机的信息及分布情况通告给本租网络户内其它虚拟机或容器所在的hypervisor服务器上的lc,由这些lc向其本地虚拟交换机virtualswitch-l0下发流表,打通这些虚拟机到新建虚拟机的通信通道,至此新建虚拟机与租户网络内其它虚拟机或容器的双向通信通道就建立起来了。

当删除虚拟机时,unc将该虚拟机相关的信息通告给租户网络内所有虚拟机或容器所在的hypervisor服务器上的lc,由这些lc删除本地虚拟交换机virtualswitch-l0上与该虚拟机相关的流表。

但虚拟机迁移时,unc将该虚拟机迁移前的相关位置信息通告给租户网络内所有虚拟机或容器所在的hypervisor服务器上的lc,由这些lc删除本地虚拟交换机virtualswitch-l0上与该虚拟机相关的流表,同时将虚拟机迁移后的位置信息通告给迁移后目标hypervisor服务器上的lc和租户网络内其它虚拟机和容器所在的hypervisor服务器上的lc,由这些lc向各自的本地虚拟交换机virtualswitch-l0上添加与该虚拟机相关的流表。

容器的创建、删除、迁移流程与上述虚拟机的创建、删除、迁移流程基本类似,此处不再赘述,下面介绍一下容器运行在虚拟机内的嵌套虚拟化场景。

当创建嵌套容器时,首先需新建虚拟机,其创建过程如上所述,当虚拟机创建完成后,在该虚拟机内部创建容器(由容器管理平台创建,如kubernetes),unc监听容器创建事件,将容器相关的信息以及当前租户网络的其他容器和虚拟机信息通告给其所在的hypervisor服务器上的lc,由该lc向其本地虚拟交换机virtualswitch-l0下发流表,打通该容器到租户网络内其它虚拟机或容器的通信通道。此外,还需要将该容器的信息及分布情况通告给本租户网络内其它虚拟机或容器所在的hypervisor服务器上的lc,由这些lc向其本地虚拟交换机virtualswitch-l0下发流表,打通这些虚拟机到新建虚拟机的通信通道,至此新建虚拟机与租户网络内其它虚拟机或容器的双向通信通道就建立起来了。

容器运行在虚拟机内的嵌套虚拟化场景下的容器删除和迁移与非嵌套环境下的流程基本一致,此处不再赘述。

租户内虚拟机或容器之间的通信过程也分为多种场景,具体包括如下:

1)虚拟机内容器之间的通信。由于虚拟机内的容器属于同一租户,因此又可分为两种情况,一是通信双方位于同一子网,则可直接通过virtualswitch-l1进行通信,另一种是双方位于不同子网(不同子网之间无法直接通信,需经过网关),则需通过virtualswitch-l0将报文送到网关,再由网关将报文目的mac地址改为目标容器网卡的mac地址后送回virtualswitch-l0,并由virtualswitch-l0送到virtualswitch-l1,并最终交到目标容器。

2)虚拟机内的容器与同hypervisor服务器上的虚拟机或容器之间的通信。与1)类似,也分为同子网和不同子网两种情况,若源和目的属于同一子网内,则可直接通过virtualswitch-l0上的相关流表转发直接建立通信,若源和目的属于不同子网,则报文首先由virtualswitch-l0送给网关,由网关将目的mac改为目标虚拟机或容器的mac后送回virtualswitch-l0,再由virtualswitch-l0根据流表转发送到具体虚拟机或容器。

3)同hypervisor服务器上虚拟机与虚拟机之间、虚拟机与容器之间、容器与容器之间的通信。通信过程与2)类似,不再赘述。

4)跨节点通信。跨节点通信与不跨节点通信本质过程是一样的,最大的区别就是,在不跨节点通信时,源和目的之间直接通过本地的虚拟机网络建立通信,无需额外封装(如vlan和vxlan封装),而夸节点通信时,无论源和目的是否位于同一子网,均需要经过额外的封装才能建立通信过程,除此之外其它过程基本一致。

本发明还提供了一种虚拟机与容器混合嵌套架构的虚拟网络管理系统,主要包括集中式控制器和分布式控制器。

集中式控制器负责维护全局信息并与第三方云管平台交互获取虚拟机、容器等相关信息及分布情况,监听虚拟机和容器的相关事件,如创建、删除、迁移等。

分布式控制器(或本地控制器)负责从集中式控制器中获取相关信息并维护本地虚拟机或容器相关的转发流表。

虚拟化服务器内由两级虚拟机交换机连接构成内部虚拟网络连接,第l0级虚拟交换机virtualswitch-l0为流表转发模式,运行在hypervisor上,第l1级虚拟交换机virtualswitch-l1为普通转发模式,运行在虚拟机内部。

虚拟机和容器的租户隔离由第l0虚拟交换机virtualswitch-l0在各虚拟端口上用vlan隔离实现,第l1级交换机virtualswitch-l1上的各容器由于属于同租户容器,故不做隔离。

虚拟机或容器创建时,unc将虚拟机或容器基本信息与分布位置信息通告给所在租户网络内的所有hypervisor服务器上的lc,由各lc维护本地虚拟交换机virtualswitch-l0上新建虚拟机或容器与租户网络内其它虚拟机和容器的通信流表。

虚拟机或容器删除时,unc将虚拟机或容器相关的信息通告给租户网络内所有hypervisor服务器上的lc,由各lc删除本地虚拟交换机virtualswitch-l0上与该虚拟机或容器相关的流表。

虚拟机或容器迁移时,unc将虚拟机或容器迁移前的相关信息通告给租户网络内所有hypervisor服务器上的lc,由各lc删除本地虚拟交换机virtualswitch-l0上与该虚拟机或容器相关的流表,此外unc将虚拟机或容器迁移后的相关信息通告给租户网络内所有hypervisor服务器上的lc,由各lc维护本地虚拟交换机virtualswitch-l0上该虚拟机或容器与租户网络内其它虚拟机和容器的通信流表。

本发明的有益效果是

1)虚拟机与容器同等对待,能够实现虚拟机与容器的统一网络管理;

2)支持容器运行在虚拟机内的嵌套虚拟化场景的虚拟网络管理;

3)控制平面部分下层到hypervisor服务器上,能够提升虚拟网络管理性能。

附图说明

图1虚拟机与容器混合部署的典型场景图;

图2服务器内部虚拟网络连接关系图;

图3统一网络管理架构图。

具体实施方式

下面对本发明的内容进行更加详细的阐述:

虚拟机与容器的混合部署分为以下几种场景:1)虚拟机运行在物理服务器上;2)容器运行在物理服务器上;3)容器嵌套运行在虚拟机中;4)虚拟机嵌套运行在容器中;5)虚拟机嵌套运行在虚拟机中;6)容器嵌套运行在容器中。从当前云计算业务的需求及应用的价值来看,1和2属于最典型的应用场景,场景3可满足某些特殊的应用需求,例如对资源隔离性和安全性要求较高的容器可考虑部署在独立的虚拟机里面,而4、5、6的场景当前实际应用较少,其应用价值也不大,暂时可以不必考虑,本发明提出的统一网络管理方法主要是针对1、2、3场景,如图1所示。

本发明所提出的统一网络管理方法,包括:

12)在服务器内部引入本地网络控制器(localcontroller),简称lc;

13)服务器上的虚拟机和容器均连接到内部的虚拟交换机(virtualswitch-l0);

14)对于容器运行在虚拟机上的嵌套场景,容器网卡连接到虚拟机内的虚拟交换机(virtualswitch-l1);

15)lc从统一网络控制器(unifiednetworkcontroller,简称unc)中获取必要的全局信息,如各租户虚拟机、容器的基本信息及其物理分布等;

16)创建虚拟机或容器时,lc根据本地虚拟机、容器的基本信息向virtualswitch-l0下发流表,打通本地虚拟机或容器的进出通道,租户之间用vlan隔离;

17)当虚拟机或容器删除时,lc删除virtualswitch-l0上与该虚拟机相关的流表;

18)当虚拟机或容器发生迁移时,lc删除迁移前宿主机上virtualswitch-l0上与该虚拟机相关的流表,迁移完成后由目标宿主机的lc重新下发相关流表;

19)对于容器运行在虚拟机内的嵌套场景,在虚拟机内创建、删除、迁移容器时,宿主机的lc将向virtualswitch-l0下发或删除相应流表,而虚拟机内的虚拟交换机virtualswitch-l1则为普通二层交换模式;

20)虚拟机或容器跨节点通信时,virtualswitch-l0将根据租户网络的类型将其封装为其对应的格式发送出去,如vlan类型的网络封装为vlan报文、vxlan类型的网络则封装为vxlan报文;

21)若租户网络为vlan类型,则首先需要进行物理网络的vlan配置;

22)若租户网络为vxlan类型,则各服务器之间的vxlan全连接隧道由unc负责建立。

图2是服务器内部虚拟网络的连接关系,hypervisor服务器上的容器和虚拟机均通过tap口或虚拟口(如veth)连接到本地虚拟交换机virtualswitch-l0,virtualswitch-l0工作在流表转发模式,其流表规则由本地控制器lc下发。虚拟机内的容器则通过tap口虚拟口(如veth)连接到虚拟机内部的虚拟交换机virtualswitch-l1,virtualswitch-l1工作在普通l2转发模式(因为一个虚拟机内的容器属于一个租户,因此虚拟机内的容器之间无需vlan隔离),由于虚拟机的tap挂接到virtualswitch-l0上了,因此virtualswitch-l0与virtualswitch-l1连通,由于hypervisor服务器上可能存在多个租户的虚拟机或容器,因此在virtualswitch-l0的虚拟端口上需开启租户虚拟机或容器的vlan隔离,给不同租户分配一个唯一的本地vlan号,当虚拟机或容器跨物理节点通信时,需要将报文中的本地vlan号替换为实际物理网络的vlan号(vlan封装)或vxlan的vni(vxlan封装)。

图3是统一虚拟网络管理系统的总体架构,与传统虚拟网络解决方案(如neutron)不同的是,本发明采用的是集中式与分布式相结合的控制平面,系统中维护一个全局的中央控制器unc,unc负责维护数据中心网络的全局信息及虚拟机和容器的基本信息(调用相关接口从第三方平台获取,如openstack或kubernetes等),此外还在各hypervisor服务器上开启一个轻量级的本地控制器lc,lc负责维护虚拟交换机virtualswitch-l0上本地虚拟机和容器相关的流表规则,隐藏lc需要从unc获取足够的全局信息,如租户的容器与虚拟机基本信息及分布情况等。

本发明所提的统一虚拟机网络管理方法,将虚拟机与容器一视同仁、同等对待,提供了容器与虚拟机融合的虚拟网络管理能力,并且能够支持容器运行在虚拟机内的嵌套虚拟化场景,丰富了虚拟化的应用场景。

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