一种跨主机、跨VLAN、跨集群的Docker容器导流方法与流程

文档序号:13882495阅读:629来源:国知局

本发明涉及云计算机领域,特别涉及一种跨主机、跨vlan、跨集群的docker容器导流方法。



背景技术:

目前,现有的容器网络方案有隧道方案、路由方案、cnm(dockerlibnetworkcontainernetworkmodel)阵营、cni(containernetworkinterface)阵营以及calico。

隧道方案:比如flannel的vxlan,特点是对底层的网络没有过高的要求,一般来说只要是三层可达就可以,只要是在一个三层可达网络里,就能构建出一个基于隧道的容器网络,但是随着节点规模的增长复杂度会提升,出了网络问题跟踪起来比较麻烦。

路由方案:路由技术从三层实现跨主机容器互通,没有nat,效率比较高,和目前的网络能够融合在一起,每一个容器都可以像虚拟机一样分配一个业务的ip。但路由网络也有问题,路由网络对现有网络设备影响比较大,路由器的路由表应该有空间限制一般是两三万条。而容器的大部分应用场景是运行微服务,数量集很大。如果几万新的容器ip冲击到路由表里,导致下层的物理设备没办法承受;而且每一个容器都分配一个业务ip,业务ip消耗会很快。

cnm(dockerlibnetworkcontainernetworkmodel)阵营:dockerlibnetwork的优势就是原生,而且和docker容器生命周期结合紧密,缺点也可以理解为是原生,被docker“绑架”,不能解决集群间的互通的问题。

cni(containernetworkinterface)阵营:cni的优势是兼容其他容器技术(例如rkt)及上层编排系统(kuberneres&mesos),而且社区活跃势头迅猛,kubernetes加上coreos主推,缺点是非docker原生会导致兼容性问题,不能保证稳定性,且不能解决集群间。

calico:calico仅支持tcp、udp、icmp和icmpv6协议,且没有加密数据路径,用不可信网络上的calico建立覆盖网络是不安全的,没有ip重叠支持,虽然calico社区正在开发一个实验功能,将重叠ipv4包放入ipv6包中,但这只是一个辅助解决方案,并不完全支持技术上的ip重叠,且其进行网络通讯时是直连通讯,并不能实现中途将流量导出并审计的功能。

因此,上述方案均不能稳定可靠的完成docker容器跨主机、vlan、集群的导流。



技术实现要素:

本发明的目的在于:提供一种跨主机、跨vlan、跨集群的docker容器导流方法,解决了目前难以实现docker容器跨主机、vlan、集群的导流的技术问题。

本发明采用的技术方案如下:

一种跨主机、跨vlan、跨集群的docker容器导流方法,一个集群包含一个或多个vlan,一个vlan包括一个或多个主机,一个主机内包括一个或多个docker容器,包括以下步骤:

步骤1:bgp客户端同步所述集群内docker容器的ip路由信息,实现集群内docker容器的全互联;

步骤2:prc客户端从策略路由表中同步导流相关ip路由信息,重定向docker容器间的流量发送至集群外的router/firewall;

步骤3:所述router/firewall对所述流量进行审计、控制、安全检测,并转发至目标docker容器,实现docker容器间的导流。

进一步的,所述bgp客户端与所述prc客户端均设置在集群内的主机上。

进一步的,所述步骤1中所述ip路由信息中的ip信息为虚拟ip信息。

进一步的,所述步骤1还包括将docker容器用于导流的通讯路由设置为r

综上所述,由于采用了上述技术方案,本outer/firewall。

进一步的,所述router/firewall中也设置有bgp客户端,用于同步集群内所有docker容器的ip路由信息,实现router/firewall至集群内docker容器间的流量转发。

进一步的,所述router/firewal的网口分别连接不同的vlan。

进一步的,所述router/firewall连接多个集群,所述router/firewall作为集群间docker容器相互通讯的网关。

发明的有益效果是:

1.可为域内和域间的网络可达性配置不同的策略,复杂度低,出问题后跟踪方便;

2.采用虚拟ip,支持ip重叠,避免业务ip消耗的问题;

3.传输采用可靠的tcp协议,能够实现信息的可靠传输;

4.利用dokcer原生环境,解决了cni的兼容性问题;

5实现了docker容器之间跨主机、跨vlan、跨集群的通讯流量导出;

6.导出的docker容器之间的通信流量可供目标服务器中的第三方流设备或软件进行分析,实现对关键应用(数据库、web、mail等)可以进行内容级的审计和控制,防止泄密、滥用和攻击,目标服务器还可基于应用和内容对流量进行流量限制、带宽保障和策略路由等管理控制。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1是本发明一种跨主机、跨vlan、跨集群的docker容器导流方法的拓扑图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合图1对本发明作详细说明。

为了方便对本发明的理解,首先介绍一下基本概念:

云计算:是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。狭义云计算指it基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是it和软件、互联网相关,也可以是其他服务。

容器:容器是伴随着轻量级虚拟化的发展而诞生的。在传统的虚拟化技术中,由于底层平台的不同,开发人员花费大量的精力去关注资源、网络等等细节配置,降低了开发效率,增加了复杂度和迁移壁垒。容器技术位于裸机或底层操作系统与上层应用之间,屏蔽了底层操作系统的细节,对于应用开发者展现出一致的接口。这样开发人员就不需要再关注与底层之间的调用对接、受限于不同的操作系统。

主机:可以提供资源运行多个容器的一个服务器主机实例,宿主机是一台物理服务器,也可以是一台虚拟服务器。

router/firewall:代表支持vlan通信的网络设备或者具有安全审计功能的设备,包括不限于路由器,防火墙,入侵检测,数据审计等。

bgp属于外部或域间路由协议。bgp的主要目标是为处于不同as中的路由器之间进行路由信息通信提供保障。bgp既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为bgp在发布到一个目的网络的可达性的同时,包含了在ip分组到达目的网络过程中所必须经过的as的列表。通路向量信息时十分有用的,因为只要简单地查找一下bgp路由更新的as编号就能有效地避免环路的出现。

bgp客户端:用于将本机的路由信息通告给其他bgp客户端,并接受其他bgp客户端的通告,更新本机路由。

prc客户端:用于同步策略路由配置并维护本机额外的策略路由表,用于重写bgp客户端维护的路由信息。

策略路由表:定制化的路由规则,用于定义需要导流容器的ip以及router/firewall设备的地址。

为了图片和文字表述的清晰,图片和文字中的容器均为docker容器。其中图1中的集群、vlan、容器、主机、router/firewall及网口的个数仅为解释本发明方法而设置,并非本方法的限制。

一种跨主机、跨vlan、跨集群的docker容器导流方法,一个集群包含一个或多个vlan,一个vlan包括一个或多个主机,一个主机内包括一个或多个docker容器,所述集群内所有主机和docker容器默认为全互联结构,包括以下步骤:

现有技术能实现的准备工作s0,步骤包括:

s01:在主机安装docker环境后执行dockerrun–p命令;创建导出了指定端口的docker容器;

s02:在安装了docker环境的主机上调用创建docker容器的api接口;

s03:根据需求,选择性添加指定端口,创建所对应的docker容器;

s04:该主机或docker容器尝试能否与其他主机或容器进行ping通,测试集群内所有容器和主机是否为全互连结构。

步骤1:在所述集群内主机中设置bgp客户端,运行bgp客户端,执行neighbor{ip-address|peer-group-name}命令激活其与邻居的bgp客户端的会话,同步所述集群内docker容器的ip路由信息,所述ip路由信息中的ip信息为虚拟ip信息;

集群容器网络默认依赖二层网络通信,vlan的容器互联互通,需要依靠router/firewall实现,所述集群与集群之间设置有router/firewall,所述router/firewall的第一网口连接集群内的vlan1,所述router/firewall的第二网口连接集群内的vlan2,所述router/firewall的第三网口连接集群外的vlan3;

docker容器用于导流的通讯路由设置为router/firewall。

步骤2:在所述集群内主机中设置prc客户端,prc客户端打破容器间默认的ip路由信息,从策略路由表中同步导流相关ip路由信息,重定向docker容器间的流量发送至集群外的router/firewall。

步骤3:在所述router/firewall中设置bgp客户端,用于同步集群内所有docker容器的ip路由信息,因为容器的ip是虚拟的,router/firewall也需要知道发往目标容器虚拟ip的路由,router/firewall对所述流量进行审计、控制、安全检测后根据所述目标地址转发至目标docker容器,实现docker容器间的导流。

当容器在主机内部通信时,如图1中所示第一主机中的第一容器与第二容器之间通信时,需要将第一容器的通讯路由设置为router/firewall,所述第一容器中的通信信息经过第一网口到达router/firewall,router/firewall进行流量的审计或控制完毕后通过第一网口将流量转发给目标容器即第二容器。

当容器跨主机通信时,如图1中所示的第三主机中的第五容器与第四主机中的第八容器进行通信时,需要将第五容器的通讯路由设置为router/firewall,所述第五容器中的通信信息经过第二网口到达router/firewall,router/firewall进行流量的审计或控制完毕后通过第二网口将流量转发给目标容器即第八容器。

当容器跨vlan通信时,如图1中所示的vlan1中的第三容器与vlan2中的第六容器之间通信时,需要将第三容器的通讯路由设置为router/firewall,所述第三容器中的通信信息经过第一网口到达router/firewall,router/firewall进行流量的审计或控制完毕后通过第二网口将流量转发给目标容器即第六容器。

当容器跨集群通信时,如图1中所示的vlan2中的第七容器与vlan3中的第十容器之间通信时,需要将第七容器的通讯路由设置为router/firewall,所述第七容器中的通信信息经过第二网口到达router/firewall,进行流量的审计或控制完毕后通过第三网口将流量转发给目标容器即第十容器。

如此,经过上述实施后,可实现docker容器之间的通信流量跨主机、跨vlan跨集群的导流。

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