基于docker的网络高可用方法及装置与流程

文档序号:12131852阅读:365来源:国知局
基于docker的网络高可用方法及装置与流程

本发明涉及用于执行专门程序的装置或方法技术领域,尤其涉及一种基于docker的网络高可用方法及装置。



背景技术:

容器网络的高可用技术方法主要用于给系统中docker服务和运行容器提供固定的IP地址,以及网络链路冗余、负载均衡的安全机制。

目前市面上docker容器虚拟化关于链路冗余的方案,大多是由传统硬件厂商完成在硬件层面,在驱动层面,通过内置的管理控制器完成链路的冗余,让操作系统直接识别虚拟化后的网卡设备。通常这种支持硬件虚拟化的高端服务器与通用服务器相比都价格昂贵。导致在目前大量建设企业化的互联网平台时,增加很多成本用于采购高端服务器,而且利用旧的服务器时网络链路没有安全保障。

随着企业的互联网业务的发展,在技术上需要保证互联网业务7x24小时不间断服务。另外企业需要充分利用IT资源,降低采购成本。在此背景之上企业通过自己的方案来完成基于虚拟化技术的私用云平台。那么如何只购买低成本的通用服务器,而且能够利用旧的服务器资源前提下,来完成虚拟化服务通过服务器网络设备与网络设备之间的链路高可用性就是一个比较突出的问题了。而通过基于docker服务与网络高可用的技术方法则可以很好的解决此问题。

docker是一个开源的应用容器引擎,旨在提供一种应用程序的自动化部署解决方案,在Linux系统上迅速创建一个容器container(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。docker虚拟出多个容器,每个容器之间相互隔离没有接口,可以将彼此的生产环境和开发环境分开,互不影响。如果同时创建多个容器均需要使用固定IP和相同的端口,因此docker网络优化的解决方法显得尤为重要。

docker server创建docker容器时,支持指定容器的网络模式,docker有以下4种网络模式:host模式、container模式、none模式、bridge模式。

host模式:docker容器会分配一个独立的Network Namespace。这是与宿主机共用的一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。此模式的问题主要在于宿主机的复用性差,仅能支持一个容器对外服务。

container模式:这个模式指定新创建的容器和已经存在的一个host模式的容器共享一个Network Namespace,共享指定IP地址和端口范围,此模式仅支持容器对外服务,受限严重。

none模式:此模式启动的容器没有网卡设备、IP、路由等信息。需要自己添加网卡、IP、路由信息。

bridge模式:此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的docker容器连接到一个虚拟网桥上。但是此模式必须绑定宿主机IP地址和端口,容器映射服务端口不能相同。

以上4种docker官方提供网络模式都不能支持容器拥有独立IP地址、相互之间能够访问并且不限制服务端口,同时网络链路是冗余高可用、流量负载均衡需求。



技术实现要素:

本发明所要解决的技术问题是提供一种基于docker的网络高可用方法及装置,所述方法支持多个容器享有独立网络、独立IP、不用共享的端口,并且链路冗余、流量负载均衡,增加了流量带宽。

为解决上述技术问题,本发明所采取的技术方案是:一种基于docker的网络高可用方法,其特征在于所述方法包括如下步骤:

设置虚拟网卡设备;

添加docker容器网络设备;

通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

进一步的技术方案在于,所述方法还包括:

启动虚拟网络确认虚拟网卡设备是否可用,能否传输。

进一步的技术方案在于,所述方法还包括:

清除虚拟网络设备IP地址,添加桥接网卡br0,添加IP地址、掩码、默认路由网关的步骤。

进一步的技术方案在于,所述的设置虚拟网卡设备的方法如下:

添加构造虚拟网卡设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并关闭IPV6支持;

加载虚拟网卡工作模块,配置每个物理网卡的启动模式;

启动网络服务,绑定后的虚拟网卡启动完毕,完成bonding绑定过程,虚拟网卡名称为bond2网卡。

进一步的技术方案在于,所述的配置每个物理网卡的启动模式的方法如下:

物理网卡设备1设置MASTER=bond0;

物理网卡设备2设置MASTER=bond0;

物理网卡设备3设置MASTER=bond1;

物理网卡设备4设置MASTER=bond1。

进一步的技术方案在于,所述的添加构造虚拟网卡设备配置文件包括配置每个网卡的启动模式和主网卡名称。

进一步的技术方案在于,所述的完成bonding绑定过程的方法如下:

物理网卡设备1、物理网卡设备2聚合成虚拟网卡设备0,物理网卡设备3、物理网卡设备4聚合成虚拟网卡设备1,虚拟网卡设备0、虚拟网卡设备1聚合成虚拟网卡设备2,虚拟网卡设备2设置MASTER=bond2。

进一步的技术方案在于,所述的添加docker容器网络设备的步骤如下:

启动docker server服务,设置为none模式,关闭bridge模式;

通过网络插件检查是否存在网桥设备存在,若不存在,自动创建Linux bridge网桥设备;

为容器创建veth pair设备,用于为容器提供网卡并连接到br0网桥设备;

使用docker inspect找到容器在宿主机中的进程ID,然后通过进程ID将容器的网络命名空间链接到网络设备目录下,宿主机上通过ip netns命令配置容器的网络。

进一步的技术方案在于,所述的通过网桥网卡将容器网卡桥接到虚拟网卡设备上的方法如下:

将创建的veth pair设备分别加入容器和网桥设备中,在容器中的名称默认为eth1,eth0与docker0都被禁用;

为容器eth1的网卡设置独立IP地址,添加默认的路由网关地址,容器内部的应用程序,即可通过容器内的eth1,经过网桥br0,搭载虚拟绑定的网卡bond2完成网络数据传输。

本发明还公开了一种基于docker的网络高可用装置,其特征在于包括:

虚拟网卡设备,用于将物理网卡设备1、物理网卡设备2聚合成虚拟网卡设备0,物理网卡设备3、物理网卡设备4聚合成虚拟网卡设备1,并将虚拟网卡设备0、虚拟网卡设备1聚合成虚拟网卡设备2,虚拟网卡设备2设置MASTER=bond2;

docker容器网络设备,用于为容器创建veth pair设备,提供网卡并连接到br0网桥设备;使用docker inspect找到容器在宿主机中的进程ID,然后通过进程ID将容器的网络命名空间链接到网络设备目录下,宿主机上通过ip netns命令配置容器的网络;

网桥网卡,用于将创建的veth pair设备分别加入容器和网桥设备中,在容器中的名称默认为eth1,eth0与docker0都被禁用;为容器eth1的网卡设置独立IP地址,添加默认的路由网关地址,容器内部的应用程序,即可通过容器内的eth1,经过网桥br0,搭载虚拟绑定的网卡bond2完成网络数据传输。

采用上述技术方案所产生的有益效果在于:本发明所述方法和装置基于docker的none网络模式,通过网络插件的方式添加桥网卡,通过桥网卡链接端口绑定的虚拟网卡方式,支持多个容器享有独立网络、独立IP、不用共享的端口,并且链路冗余、流量负载均衡,增加了访问带宽。通过这种方法节省了企业建设容器虚拟化的系统平台的采购成本,同时提高了服务器资源在应用运行上的复用性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明第一个实施例所述方法的流程图;

图2是本发明第二个实施例所述方法的流程图;

图3是本发明第三个实施例所述方法的流程图;

图4是本发明第四个实施例所述方法中设置虚拟网卡设备的方法流程图;

图5是本发明第六个实施例所述方法中添加docker容器网络设备的方法流程图;

图6是本发明第七个实施例所述方法中通过网桥网卡将容器网卡桥接到虚拟网卡设备上的方法流程图;

图7是本发明第八个实施例所述方法的流程图;

图8是本发明实施例所述装置的原理框图;

其中:101、虚拟网卡设备;102、docker容器网络设备;103、网桥网卡。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

如图1所示,本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S101:设置虚拟网卡设备;

S102:添加docker容器网络设备;

S103:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

如图2所示,本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S201:设置虚拟网卡设备;

S202:启动虚拟网络确认虚拟网卡设备是否可用,能否传输;

S203:添加docker容器网络设备;

S204:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

如图3所示,本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S301:设置虚拟网卡设备;

S302:启动虚拟网络确认虚拟网卡设备是否可用,能否传输;

S303:清除虚拟网络设备IP地址,添加桥接网卡br0,添加IP地址、掩码、默认路由网关;

S304:添加docker容器网络设备;

S305:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S401:设置虚拟网卡设备;

具体的,如图4所示,所述的设置虚拟网卡设备的方法如下:

S4011:添加构造虚拟网卡设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并关闭IPV6支持;

S4012:加载虚拟网卡工作模块,配置每个物理网卡的启动模式;

S4013:启动网络服务,绑定后的虚拟网卡启动完毕,完成bonding绑定过程,虚拟网卡名称为bond2网卡。

S402:添加docker容器网络设备;

S403:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S501:设置虚拟网卡设备;

具体的,所述的设置虚拟网卡设备的方法如下:

S5011:添加构造虚拟网卡设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并关闭IPV6支持,所述的添加构造虚拟网卡设备配置文件包括配置每个网卡的启动模式和主网卡名称。

S5012:加载虚拟网卡工作模块,配置每个物理网卡的启动模式;

所述的配置每个物理网卡的启动模式的方法如下:

物理网卡设备1设置MASTER=bond0;

物理网卡设备2设置MASTER=bond0;

物理网卡设备3设置MASTER=bond1;

物理网卡设备4设置MASTER=bond1。

S5013:启动网络服务,绑定后的虚拟网卡启动完毕,完成bonding绑定过程,虚拟网卡名称为bond2网卡。

所述的完成bonding绑定过程的方法如下:

物理网卡设备1、物理网卡设备2聚合成虚拟网卡设备0,物理网卡设备3、物理网卡设备4聚合成虚拟网卡设备1,虚拟网卡设备0、虚拟网卡设备1聚合成虚拟网卡设备2,虚拟网卡设备2设置MASTER=bond2。

S502:添加docker容器网络设备;

S503:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S601:设置虚拟网卡设备;

所述的设置虚拟网卡设备的方法如下:

S6011:添加构造虚拟网卡设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并关闭IPV6支持;

S6012:加载虚拟网卡工作模块,配置每个物理网卡的启动模式;

S6013:启动网络服务,绑定后的虚拟网卡启动完毕,完成bonding绑定过程,虚拟网卡名称为bond2网卡。

S602:添加docker容器网络设备,如图5所示,具体步骤如下:

S6021:启动docker server服务,设置为none模式,关闭bridge模式;

S6022:通过网络插件检查是否存在网桥设备存在,若不存在,自动创建Linux bridge网桥设备;

S6023:为容器创建veth pair设备,用于为容器提供网卡并连接到br0网桥设备;

S6024:使用docker inspect找到容器在宿主机中的进程ID,然后通过进程ID将容器的网络命名空间链接到网络设备目录下,宿主机上通过ip netns命令配置容器的网络。

S603:通过网桥网卡将容器网卡桥接到虚拟网卡设备上。

本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S701:设置虚拟网卡设备;

所述的设置虚拟网卡设备的方法如下:

S7011:添加构造虚拟网卡设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并关闭IPV6支持;

S7012:加载虚拟网卡工作模块,配置每个物理网卡的启动模式;

S7013:启动网络服务,绑定后的虚拟网卡启动完毕,完成bonding绑定过程,虚拟网卡名称为bond2网卡。

S702:添加docker容器网络设备,具体步骤如下:

S7021:启动docker server服务,设置为none模式,关闭bridge模式;

S7022:通过网络插件检查是否存在网桥设备存在,若不存在,自动创建Linux bridge网桥设备;

S7023:为容器创建veth pair设备,用于为容器提供网卡并连接到br0网桥设备;

S7024:使用docker inspect找到容器在宿主机中的进程ID,然后通过进程ID将容器的网络命名空间链接到网络设备目录下,宿主机上通过ip netns命令配置容器的网络。

S703:通过网桥网卡将容器网卡桥接到虚拟网卡设备上,如图6所示,具体步骤如下:

S7031:将创建的veth pair设备分别加入容器和网桥设备中,在容器中的名称默认为eth1,eth0与docker0都被禁用;

S7032:为容器eth1的网卡设置独立IP地址,添加默认的路由网关地址,容器内部的应用程序,即可通过容器内的eth1,经过网桥br0,搭载虚拟绑定的网卡bond2完成网络数据传输。

如图7所示,本发明实施例公开了一种基于docker的网络高可用方法,所述方法包括如下步骤:

S801:添加构造虚拟网络设备配置文件,设置一个检测链路状态的时间和网络设备的工作模式,并且关闭IPV6支持;加载虚拟网络工作模块,配置每个网卡的启动模式和主网卡名称,设置虚拟化网卡IP地址192.168.1.100掩码255.255.255.0网关地址192.168.1.1;

S802:启动虚拟网络确认虚拟网卡设备是否可用能否传输;

S803:清除虚拟网络设备IP地址添加桥接网卡br0,添加IP地址、掩码、默认路由网关;

S804:设置docker server启动模式为none模式屏蔽默认网卡eth0与docker0网卡,创建没有网络设备的应用容器开启容器内部应用服务;

S805:通过插件为宿主机添加veth pair设备通过veth pair设备将容器与桥接网卡链接起来;

S806:最后为应用容器网络添加容器IP地址、掩码和默认网关地址。通过以上程序操作即可完成容器网络的冗余负载均衡的支持了。

本发明所述方法基于docker的none网络模式,通过网络插件的方式添加桥网卡,通过桥网卡链接端口绑定的虚拟网卡方式,支持多个容器享有独立网络、独立IP、不用共享的端口,并且链路冗余、流量负载均衡,增加了访问带宽。通过这种方法节省了企业建设容器虚拟化的系统平台的采购成本,同时提高了服务器资源在应用运行上的复用性。

如图8所示,本发明还公开了一种基于docker的网络高可用装置,包括:

虚拟网卡设备101,用于将物理网卡设备1、物理网卡设备2聚合成虚拟网卡设备0,物理网卡设备3、物理网卡设备4聚合成虚拟网卡设备1,并将虚拟网卡设备0、虚拟网卡设备1聚合成虚拟网卡设备2,虚拟网卡设备2设置MASTER=bond2;

docker容器网络设备102,用于为容器创建veth pair设备,提供网卡并连接到br0网桥设备;使用docker inspect找到容器在宿主机中的进程ID,然后通过进程ID将容器的网络命名空间链接到网络设备目录下,宿主机上通过ip netns命令配置容器的网络;

网桥网卡103,用于将创建的veth pair设备分别加入容器和网桥设备中,在容器中的名称默认为eth1,eth0与docker0都被禁用;为容器eth1的网卡设置独立IP地址,添加默认的路由网关地址,容器内部的应用程序,即可通过容器内的eth1,经过网桥br0,搭载虚拟绑定的网卡bond2完成网络数据传输。

本发明所述装置基于docker的none网络模式,通过网络插件的方式添加桥网卡,通过桥网卡链接端口绑定的虚拟网卡方式,支持多个容器享有独立网络、独立IP、不用共享的端口,并且链路冗余、流量负载均衡,增加了访问带宽。通过这种装置节省了企业建设容器虚拟化的系统平台的采购成本,同时提高了服务器资源在应用运行上的复用性。

本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。

本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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