CN107332775B - 基于docker容器的跨宿主机互访系统及其控制方法 - Google Patents
基于docker容器的跨宿主机互访系统及其控制方法 Download PDFInfo
- Publication number
- CN107332775B CN107332775B CN201710690484.0A CN201710690484A CN107332775B CN 107332775 B CN107332775 B CN 107332775B CN 201710690484 A CN201710690484 A CN 201710690484A CN 107332775 B CN107332775 B CN 107332775B
- Authority
- CN
- China
- Prior art keywords
- host
- information
- node
- address
- server
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
Abstract
本发明公开了一种基于docker容器的跨宿主机互访系统及其控制方法,包括通过网络相连的宿主机和多个节点主机,所述宿主机上设有数据库,并周期性检测每个节点主机的连接运行状态,下发更新消息,分配IP地址或网段;每个节点主机上都接收配置有其他节点容器所使用的IP地址段的路由,该路由的下一跳地址为该节点主机的接口IP地址,同时每个节点主机对其连接的网络设备进行路由配置,从而使得整个跨宿主机互访系统形成纯静态路由配置,并可对各节点路由进行直接查看和修改。本发明中的docker容器既能与传统物理网络互访,又能进行跨宿主机之间互访,安全可靠,易于维护,大大减少服务器对数据包的封装,降低封装引起的性能消耗。
Description
技术领域
本发明涉及一种跨宿主机互访系统及其控制方法,尤其涉及一种基于docker容器的跨宿主机互访系统及其控制方法。
背景技术
目前对于docker容器之间互访归根到底分别有以下两种方案:
1、路由方案
路由方案以calico为代表,通过在各容器的宿主机上运行BGP路由协议,从而行成一个可传递容器IP路由的网络,然后不同宿主机之间的容器通信通过查询宿主机本地的BGP路由来进行数据路径的寻址。
如要容器与物理网络,如交换机、路由器,或其他不为容器的设备通信则需要在网络设备上开启BGP路由协议,并与其他容器的宿主机进行BGP邻居建连。
2、隧道方案
隧道方案以flannel为代表,其通过在容器所在的宿主机上安装flannel软件,然后到键值数据库etcd上去获取一个分配于容器的IP地址段(不同容器的宿主机将获取到不同网段的地址),然后容器将使用所获取到的地址段中的其中一个地址。
不同宿主机上的容器通信先查询宿主机上的路由,然后路由到flannel所创建的网卡,然后对容器的源始数据包进行vxlan或UDP的封装,再通过物理网络传递到对方容器所在的宿主机,最后对方宿主机对vxlan或UDP封装的数据包进行解封装,并根据本地的路由和mac地址表转发到相应的容器。
此类隧道方案中容器要与物理网络进行通信则需要在宿主机所在网关设备上根据容器的位置情况人工添加路由来实现。
由上可见,现有技术的缺点如下:
1、一般数据中心的内部网络设备只用于高速转发不支持BGP路由协议,故无法与物理网络结合;
2、服务器之间或与网络设备建立BGP增加网络的复杂度;
3、使用隧道方案由于多一层的数据封装和解封,性能有所下降。
发明内容
本发明所要解决的技术问题是提供一种基于docker容器的跨宿主机互访系统及其控制方法,能够充分利用路由方案与隧道方案的优点,解决数据中心因BGP或其他路由协议不支持而导致的跨宿主机之间无法互访的问题。
本发明为解决上述技术问题而采用的技术方案是提供一种基于docker容器的跨宿主机互访系统及其控制方法,包括宿主机和多个节点主机,所述宿主机和多个节点主机通过物理网络相连,其中,所述宿主机上设有数据库D_Server,所述宿主机上的数据库D_Server存储着整个数据中心容器地址和分配地址的组件,所述宿主机周期性检测每个节点主机的连接运行状态,下发更新消息,并分配IP地址或网段;每个节点主机上都接收配置有其他节点容器所使用的IP地址段的路由,该路由的下一跳地址为该节点主机的接口IP地址,同时每个节点主机对其连接的网络设备进行路由配置,从而使得整个跨宿主机互访系统形成纯静态路由配置,并可对各节点主机上所生成的路由进行直接查看和修改。
上述的基于docker容器的跨宿主机互访系统,其中,每个节点主机上设有信息接收模块和命令执行模块;所述宿主机周期性检测信息接收模块的连接运行状态,下发更新消息,并分配IP地址或网段;所述信息接收模块在部署后将会连接D_Server,并向其报告该节点的状态,然后向D_Server申请给予容器的IP地址段;同时信息接收模块会等待接收来自D_Server的更新信息,然后通过本地socket端口将更新信息发送给命令执行模块;所述命令执行模块通过socket接收来自信息接收模块的信息,将其转换成路由配置命令;并连接到数据中心中指定网络设备,或者向本地主机写入路由条目。
本发明为解决上述技术问题还提供一种基于上述docker容器的跨宿主机互访系统的控制方法,包括如下步骤:
步骤S1:预先在容器的宿主机上定义IP地址使用范围,然后信息接收模块D_Client部署完毕后将自动连接D_Server,向D_Server进行注册和申请可用的IP地址段;
步骤S2:D_Client将申请到的地址段信息进行记录和存档,并通过linux socket发送到同属主机上的命令执行模块H_Confd;
步骤S3:H_Confd收到D_Client发送的信息将其转换为linux下的配置命令,然后修改bridge网桥的地址,从而改变容器获取的IP地址;
步骤S4:当有其他节点主机加入到D_Server时,D_Server会记录D_Client申请到的地址段和D_Client的IP,并向其他所有的主机节点发下更新信息;
步骤S5:D_Client收到D_Server发来的触发式更新信息后进行记录和存档,并通过linux socket发送到同属主机上的H_Confd;
步骤S6:H_Confd收到D_Client发送的信息,发现其是节点更新信息,便将其转换成linux的路由配置命令,并写入linux的route table。
上述的基于docker容器的跨宿主机互访系统的控制方法,其中,所述节点主机连接网络设备,所述节点主机上设有信息接收模块RD_Client和命令执行模块R_Confd,所述RD_Client只会到D_Server上进行注册而不会申请地址,所述R_Confd收到RD_Client发送的信息,则将其转换成网络设备的路由配置命令,并连接到网络设备上进行数据配置。
本发明对比现有技术有如下的有益效果:本发明提供的基于docker容器的跨宿主机互访系统及其控制方法,使docker容器既能与传统物理网络互访,又能进行跨宿主机之间互访,安全可靠,易于维护,大大减少服务器对数据包的封装,降低封装引起的性能消耗。
附图说明
图1为本发明基于docker容器的跨宿主机互访系统架构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明基于docker容器的跨宿主机互访系统架构示意图。
请参见图1,本发明提供的基于docker容器的跨宿主机互访系统,包括宿主机和多个节点主机,所述宿主机和多个节点主机通过物理网络相连;
宿主机上设有键值数据库D_Sever,节点主机上设有信息接收模块D_Client和/或RD_Client,节点主机还设有命令执行模块R_Confd和/或H_Confd;其中DB_Server作为IP地址库,统一纳管着整个数据中心容器的情况。D_Client和RD_Client用于与数据库D_Sever进行数据的交互和健康检查。R_Confd和H_Confd分别从D_Client中获取容器的信息,并向宿主机或网络设备写入相关路由命令。各组件作用如下:
一、数据库D_Server
数据库D_Server,是存储着整个数据中心容器地址和分配地址的组件,其作用分为以下三点:
1)周期性检测D_Client和RD_Client的健康情况;
2)下发更新消息;
3)分配IP地址或网段。
二、信息接收模块D_Client、RD_Client
信息接收模块D_Client,在部署后将会连接D_Server,并向其报告该节点的状态,然后向D_Server申请给予容器的IP地址段。同时D_Client会等待接收来自D_Server的更新信息,然后通过本地socket端口将更新信息发送给R_Cond或H_Cond。
三、命令执行模块R_Confd、H_Confd
R_Cond,通过socket接收RD_Client的信息,并将其转换成路由配置命令并连接到数据中心中指定网络设备。
H_Cond,通过socket接收D_Client的信息,并将其转换成路由配置命令向本地主机写入路由条目。
本发明为解决上述技术问题还提供一种基于上述docker容器的跨宿主机互访系统的控制方法,具体步骤如下:
步骤S1:用户预先在linux主机A(即容器的宿主机)上定义IP地址使用范围,然后D_Client部署完毕后将自动连接D_Server,向D_Server进行注册和申请可用的IP地址段。RD_Client则只会到D_Server上进行注册不会申请地址。
步骤S2:D_Client将申请到的地址段信息进行记录和存档,并通过linux socket发送到同属主机上的H_Confd。
步骤S3:H_Confd收到D_Client发送的信息将其转换为linux下的配置命令,然后修改bridge网桥的地址,从而改变容器获取的IP地址。
步骤S4:当有其他节点主机加入到D_Server时,D_Server会记录D_Client申请到的地址段和D_Client的IP,并向其他所有的主机节点发下更新信息。
步骤S5:D_Client收到D_Server发来的触发式更新信息后进行记录和存档,并通过并通过linux socket发送到同属主机上的H_Confd(和R_Confd)。
步骤S6:H_Confd收到D_Client发送的信息,发现其是节点更新信息,便将其转换成linux的路由配置命令,并写入linux的route table。
R_Confd收到RD_Client发送的信息,则将其转换成网络设备的路由配置命令,并连接到网络设备上进行数据配置。
由上可见,本发明每台linux节点上都会有其他节点容器所使用的IP地址段的路由,其路由的下一跳地址为linux节点的接口IP地址。同样由于R_Confd会对网络设备进行路由配置,所以网络设备上也会存在每个linux节点上容器的地址路由。由此docker网络环境由一个由静态路由所组成,并可通过linux命令来查看其路由信息。具体优点如下:1)全网无任何动态路由协议纯静态路由实现,降低网络复杂度低;2)各节点上所生成的路由可直接查看和修改,提高可维护性;3)无数据包隧道的封装,减少服务器对数据包的封装和封装的性能消耗。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (1)
1.一种基于docker容器的跨宿主机互访系统的控制方法,所述互访系统包括宿主机和多个节点主机,所述宿主机和多个节点主机通过物理网络相连,其特征在于,所述宿主机上设有数据库D_Server,所述宿主机上的数据库D_Server存储着整个数据中心容器地址和分配地址的组件,所述宿主机周期性检测每个节点主机的连接运行状态,下发更新消息,并分配IP地址或网段;
每个节点主机上都接收配置有其他节点容器所使用的IP地址段的路由,该路由的下一跳地址为该节点主机的接口IP地址,同时每个节点主机对其连接的网络设备进行路由配置,从而使得整个跨宿主机互访系统形成纯静态路由配置,并可对各节点主机上所生成的路由进行直接查看和修改;
每个节点主机上设有信息接收模块和命令执行模块;
所述宿主机周期性检测信息接收模块的连接运行状态,下发更新消息,并分配IP地址或网段;
所述信息接收模块在部署后将会连接D_Server,并向其报告该节点的状态,然后向D_Server申请给予容器的IP地址段;同时信息接收模块会等待接收来自D_Server的更新信息,然后通过本地socket端口将更新信息发送给命令执行模块;
所述命令执行模块通过socket接收来自信息接收模块的信息,将其转换成路由配置命令;并连接到数据中心中指定网络设备,或者向本地主机写入路由条目;
所述控制方法包括如下步骤:
步骤S1:预先在容器的宿主机上定义IP地址使用范围,然后信息接收模块D_Client部署完毕后将自动连接D_Server,向D_Server进行注册和申请可用的IP地址段;
步骤S2:D_Client将申请到的地址段信息进行记录和存档,并通过linux socket发送到同属主机上的命令执行模块H_Confd;
步骤S3:H_Confd收到D_Client发送的信息将其转换为linux下的配置命令,然后修改bridge网桥的地址,从而改变容器获取的IP地址;
步骤S4:当有其他节点主机加入到D_Server时,D_Server会记录D_Client申请到的地址段和D_Client的IP,并向其他所有的主机节点发下更新信息;
步骤S5:D_Client收到D_Server发来的触发式更新信息后进行记录和存档,并通过linux socket发送到同属主机上的H_Confd;
步骤S6:H_Confd收到D_Client发送的信息,发现其是节点更新信息,便将其转换成linux的路由配置命令,并写入linux的route table;
所述节点主机连接网络设备,所述节点主机上设有信息接收模块RD_Client和命令执行模块R_Confd,所述RD_Client只会到D_Server上进行注册而不会申请地址,所述R_Confd收到RD_Client发送的信息,则将其转换成网络设备的路由配置命令,并连接到网络设备上进行数据配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710690484.0A CN107332775B (zh) | 2017-08-14 | 2017-08-14 | 基于docker容器的跨宿主机互访系统及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710690484.0A CN107332775B (zh) | 2017-08-14 | 2017-08-14 | 基于docker容器的跨宿主机互访系统及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107332775A CN107332775A (zh) | 2017-11-07 |
CN107332775B true CN107332775B (zh) | 2020-07-31 |
Family
ID=60226035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710690484.0A Active CN107332775B (zh) | 2017-08-14 | 2017-08-14 | 基于docker容器的跨宿主机互访系统及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107332775B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108111513B (zh) * | 2017-12-21 | 2020-10-27 | 泰康保险集团股份有限公司 | 应用于前置装置的数据管理方法、装置、介质及电子设备 |
CN108777661A (zh) * | 2018-06-06 | 2018-11-09 | 亚信科技(中国)有限公司 | 一种数据传输方法、装置及系统 |
CN108989248B (zh) * | 2018-06-11 | 2020-07-07 | 华为技术有限公司 | 传输报文的方法、网络边缘设备与报文传输系统 |
CN109639511B (zh) * | 2019-01-27 | 2021-07-23 | 中国人民解放军国防科技大学 | 一种自适应的容器组网方法 |
CN111541651B (zh) * | 2020-03-31 | 2022-10-21 | 新华三技术有限公司 | 一种通信方法及装置 |
CN113259503B (zh) * | 2021-06-24 | 2021-10-08 | 浩鲸云计算科技股份有限公司 | 基于Infiniband实现不同容器之间的跨网络通信方法和系统 |
CN113467897B (zh) * | 2021-09-02 | 2021-12-07 | 北京安华金和科技有限公司 | 一种用于监控容器内数据库的系统和方法 |
CN113791864B (zh) * | 2021-09-08 | 2024-03-26 | 国电南瑞科技股份有限公司 | 一种基于容器和微服务化功能的监控系统及其构建方法 |
CN114629845B (zh) * | 2022-03-16 | 2024-02-02 | 新浪技术(中国)有限公司 | 一种基于容器的路由型数据中心网络管理方法及系统 |
CN114979076B (zh) * | 2022-05-23 | 2024-03-29 | 杭州仟金顶信息科技有限公司 | 一种面向跨主机容器的扁平化通讯方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468219A (zh) * | 2014-12-11 | 2015-03-25 | 杭州华三通信技术有限公司 | 虚拟组网网络拓扑发现方法和设备 |
CN105491123A (zh) * | 2015-12-04 | 2016-04-13 | 北京航空航天大学 | 容器间通信方法及装置 |
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN105978781A (zh) * | 2016-06-28 | 2016-09-28 | 浪潮电子信息产业股份有限公司 | 建立Docker容器的网络连接的方法、系统以及客户端 |
CN106789327A (zh) * | 2017-01-10 | 2017-05-31 | 携程旅游信息技术(上海)有限公司 | 自动为云平台添加宿主机的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10050939B2 (en) * | 2015-12-15 | 2018-08-14 | Vmware, Inc. | Techniques for communication in hybrid cloud system |
-
2017
- 2017-08-14 CN CN201710690484.0A patent/CN107332775B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468219A (zh) * | 2014-12-11 | 2015-03-25 | 杭州华三通信技术有限公司 | 虚拟组网网络拓扑发现方法和设备 |
CN105491123A (zh) * | 2015-12-04 | 2016-04-13 | 北京航空航天大学 | 容器间通信方法及装置 |
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN105978781A (zh) * | 2016-06-28 | 2016-09-28 | 浪潮电子信息产业股份有限公司 | 建立Docker容器的网络连接的方法、系统以及客户端 |
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN106789327A (zh) * | 2017-01-10 | 2017-05-31 | 携程旅游信息技术(上海)有限公司 | 自动为云平台添加宿主机的方法及系统 |
Non-Patent Citations (2)
Title |
---|
"基于Docker的跨主机容器集群宿主机调度策略研究";何松林,等;《工业控制计算机》;20170731;62-64 * |
"基于Docker的跨主机容器集群自动伸缩设计与实现";肖俊;《中国优秀硕士学位论文全文数据库》;20160630;I139-55 * |
Also Published As
Publication number | Publication date |
---|---|
CN107332775A (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107332775B (zh) | 基于docker容器的跨宿主机互访系统及其控制方法 | |
CN107070691B (zh) | Docker容器的跨主机通信方法和系统 | |
CN108449282B (zh) | 一种负载均衡方法及其装置 | |
CN102710509B (zh) | 一种数据中心自动配置方法及其设备 | |
CN103944768B (zh) | 为受管计算机网络提供逻辑联网功能 | |
CN105591982B (zh) | 一种报文传输的方法和装置 | |
CN107579900B (zh) | 从vlan网络接入vxlan网络的方法、装置及系统 | |
US20160261496A1 (en) | Packet forwarding in data center network | |
JP2019033534A (ja) | データパケット転送 | |
US10574570B2 (en) | Communication processing method and apparatus | |
CN106209557B (zh) | 报文转发方法及装置 | |
CN105591907B (zh) | 一种路由获取方法和装置 | |
CN107404436A (zh) | 用于虚拟可扩展局域网的通信方法和装置 | |
CN110213148B (zh) | 一种数据传输的方法、系统及装置 | |
JP4789425B2 (ja) | 経路テーブル同期方法、ネットワーク機器および経路テーブル同期プログラム | |
CN105827495A (zh) | Vxlan网关的报文转发方法和设备 | |
CN104468368A (zh) | 配置bgp邻居的方法及装置 | |
CN109150638A (zh) | 一种路由管理方法及装置 | |
CN104243427A (zh) | 虚拟机在线迁移方法、数据包传输方法和设备 | |
CN103957161A (zh) | 一种报文转发方法及其装置 | |
US10764234B2 (en) | Method and system for host discovery and tracking in a network using associations between hosts and tunnel end points | |
CN109246016B (zh) | 跨vxlan的报文处理方法和装置 | |
US11245623B2 (en) | Method and apparatus for collecting data in network communication using concealed user address | |
CN111654559B (zh) | 一种容器数据传输方法及装置 | |
CN111130978B (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 |