本发明涉及云计算网络领域,特别是一种融合物理机、虚拟机与容器网络设置的系统及方法。
背景技术:
随着云计算的发展,很多物理机上业务迁移到了虚拟机、容器上。目前很多云平台都是管理虚拟机或者容器的分离的平台,而容器的网络是由容器平台自身管理、虚拟机的网络管理也是由虚拟机的平台管理,这样会有一下问题:
(1)容器的网络、虚拟机的网络由两大平台进行管理,管理比较复杂;
(2)容器、虚拟机的网络数据没有交互,导致业务系统的网络受到限制;
(3)传统的物理机运行的业务网络也没有和虚拟机、容器的业务网络进行统一的对接,需要交互时,需要慎重的考虑。
技术实现要素:
本发明解决的技术问题之一在于提出了一种融合物理机、虚拟机与容器网络设置系统;解决现有技术中物理机、虚拟机与容器网络设置各自独立管理存在的问题。
本发明解决的技术问题之二在于提出一种融合物理机、虚拟机与容器网络设置的方法。
本发明解决上述技术问题之一的技术方案是:
所述的系统主要包括网络控制器、计算控制器和计算组件;
所述网络控制器实现:
(11)负责整个网络数据的持久化记录,其中包括网络上的端口,端口上的限速设置记录;
(12)将数据通过消息通道发送至网络其他组件,并提供消息通道让网络其他组件获取其数据;
(13)对外提供api调用,api包含新建、关联、更新、查询网络端口接口;
所述计算控制器实现:
(21)主要负责物理机、容器、虚拟机的相关网络参数设置,以及容器、虚拟机的创建控制;
(22)调用网络控制器的端口创建、端口关联相关api、并将端口的关联状态为“关联中”;
(23)和计算组件通过消息通道或api方式进行通信;
所述计算组件实现:
(31)接受计算控制器的设置网络消息或对外提供关联物理机、容器或虚拟机的设置网络接口;
(32)根据网络端口标识获取端口的网络信息,其中包含mac、ip、域名服务器、网关地址网络信息;
(33)根据mac、端口标识建立物理机、容器或虚拟机的网络接口;
(34)根据端口关联的物理机、容器或虚拟机类型,调用物理机、容器、虚拟机的网络驱动模块建立网络接口;
(35)在按照统一关联的方式将网络接口和虚拟交换机的端口进行关联。
物理机的网络驱动模块实现:
(1)建立veth对,其中veth对的名称为“前端/后端物理机的标识”,“前端物理机的标识”的网络接口,其mac地址设置为端口中的mac;
(2)根据网络端口的信息设置前端网络接口的ip地址信息。
容器的网络驱动模块实现:
(1)根据容器的标识获取容器网络所在的命名空间;
(2)在容器的命名空间中建立veth对,其中veth对的名称为“前端/后端容器的标识”,“前端/后端容器的标识”的网络接口在命名空间内部;
(3)根据网络端口的信息设置前端网络接口的网络,包括mac、ip地址、域名、网关。
虚拟机的网络驱动模块实现配置libvirt中的网络参数的mac地址为端口的mac地址;网络后端接口名称为“后端虚拟机的标识”。
本发明解决上述技术问题之一的技术方案是:
所述方法主要步骤如下:
(1)在网络控制器上新建物理机、容器或虚拟机需要使用的网络端口信息;
(2)计算控制器调用网络控制器的关联接口将物理机、容器或虚拟机的标识与网络端口进行关联;
(3)计算控制器发送网络端口标识给计算组件,计算组件收到端口标识后,向网络控制器获取网络端口的信息,根据端口信息创建物理机、虚拟机或容器需要使用的网络接口,将网络接口和本地的交换机建立端口连接;根据网络ip信息设置物理机、容器或虚拟机的通信的网络地址信息;
(4)交换机控制器在检查到有新增端口连接后,将向网络控制器获取对应的端口信息并设置相关的网络规则。
网络控制器新建网络端口信息包括:
(1)提供api新建网络端口,请求参数中包含了端口的名称、网络的标识以及子网的标识,其中标识具有唯一性;
(2)创建端口的过程包含了端口的ip、mac地址分配,以及设置端口的关联状态为“未关联”;
(3)创建成功后,接口反馈端口标识;创建失败,则反馈错误信息。
所述的关联接口包括:
(1)关联接口请求参数中包含了关联物理机、容器或者虚拟机的标识,端口标识,以及物理机或宿主机的主机名称;
(2)关联信息包含被关联的端口标识、主机名称、关联的标识、关联的状态会持久化存储;
(3)关联状态包含关联中、关联成功、关联失败、未关联。
网络接口和虚拟交换机进行关联,包括:
(1)将后端标识的网络接口添加到虚拟交换机的端口上;
(2)其端口名称为“后端标识”,其附加的mac地址为端口mac,外部的id为端口标识。
(3)如果第2步操作成功,则调用网络控制器的更新端口接口更新关联状态为“关联成功”;否则,调用网络控制器的更新端口接口关联更新关联状态为“关联失败”。
交换机控制器设置端口的vlan标识以及端口的流规则信息。
本发明方案的有益效果如下:
(1)建立一种通用的设置物理机、虚拟机、容器的网络方法;
(2)在此基础上实现物理机、虚拟机、容器的统一网络管控;
(3)方便物理机、虚拟机、容器上的业务系统通信与安全保护。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
如图1所示,本发明系统的实施方法如下:
1、在网络控制器上新建网络端口信息
(1)其网络控制器采用开源neutron组件二次开发实现,在新增端口接口上添加参数使用标识参数,支持compute:machine,compute:docker,compute:vm或者compute:none标识,对外提供api,其中compute:machine为物理机使用端口标识,compute:docker容器使用标识,compute:vm虚拟机使用标识或者compute:none没有使用的端口;
(2)将标识保存至ports表的device_owner中,反馈新建的端口id,新增联状态字段bond,其状态为“unbonding”。
2、计算控制器调用网络控制器的关联接口将物理机、容器或虚拟机的标识与网络端口进行关联
采用开源neutron组件二次开发关联接口二次开发,更新端口的标识状态为“bonding”,device_id为物理机、容器、虚拟机的id,其中bonding为关联中的状态。
3、计算控制器发送网络标识给计算组件
通过直接调用计算组件的api接口,发送请求参数为端口id;计算组件采用tomcat下的服务发布。
4、计算组件创建网络接口
调用neutron组件查询端口api,获取到device_owner的类型,一下以device_owner为物理机网络接口compute:machine为例说明:
首先建立veth对:
iplinkaddpre_machineidtypepeernameaft_machineid
设置pre_machineid的网络信息
ifconfigpre_machineid192.168.10.20/24
设置pre_machineid的mac地址为端口mac
这样物理机就可以拥有192.168.10.20网络了。
5、添加网络接口到虚拟交换机上
ovs-vsctl--timeout=120----if-existsdel-portaft_machineid--add-portbr-intpre_machineid--setinterfaceaft_machineidexternal-ids:iface-id=portidexternal-ids:iface-status=activeexternal-ids:attached-mac=macaddrexternal-ids:vm-uuid=machineid
其中macaddr为port的mac地址。