CN111190698A - 一种在docker swarm群集下隔离网络的方法 - Google Patents
一种在docker swarm群集下隔离网络的方法 Download PDFInfo
- Publication number
- CN111190698A CN111190698A CN201911401080.0A CN201911401080A CN111190698A CN 111190698 A CN111190698 A CN 111190698A CN 201911401080 A CN201911401080 A CN 201911401080A CN 111190698 A CN111190698 A CN 111190698A
- Authority
- CN
- China
- Prior art keywords
- application
- docker
- network
- daemon
- swap
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种在docker swarm群集下隔离网络的方法,涉及容器技术、网络技术及代理原理技术领域。通过给每个需要监控的应用容器绑定代理,强制将容器的网络请求经过代理转发,通过给应用建立专属网络已经绑定代理程序,可以将应用所有的请求经过代理路由转发,这样代理就可以记录下应用所有的动作;而且我们可以控制代理程序控制访问权限,通过设置应用的专属网络,保证了该应用的所有活动只限制在专属网络中,所有对公有网络的操作都是通过代理程序转发,有效的控制了应用的安全性,避免产生一些不可控的现象。记录每个应用对公有网络所有操作,后期可以通过大数据分析每个应用对于公有网络的依赖以及对于公有网络产生的影响。
Description
技术领域
本发明涉及容器、算法及网络代理领域,尤其涉及一种在docker swarm群集下隔离网络的方法。
背景技术
目前swarm群集中,一般情况下,所有的应用都在一个网络中,对于有些我们需要做特殊控制(如网络调用,权限控制,智能路由)的应用就不能做有效的把控。在依赖很多额外组件的情况下,可以实现上述所说的部分功能,但是对于应用的自身的应用来说,依赖组件过多会增加自身的负担,且很多组件会侵入代码,及其不友好。本发明通过在安装应用的过程中,绑定对应的代理与其一起运行在专属网络中,由代理对应用进行控制,以达到监控的效果。
发明内容
本发明的目的是针对现有技术的不足提供了一种在docker swarm群集下隔离网络的方法,通过给应用建立专属网络已经绑定代理程序,可以将应用所有的请求经过代理路由转发,这样代理就可以记录下应用所有的动作。而且我们可以控制代理程序控制访问权限,来达到给应用进行隔离的目的。
一种在docker swarm群集下隔离网络的方法,具体包括如下步骤:
步骤1,基于与docker守护进程交互,调用守护进程提供的相关服务docker swarmapi构建应用发布系统;
步骤2,将待发布的应用容器镜像、容器环境变量、资源限定、服务名称的相关信息通过消息队列客户端程序推送至kafka消息队列;
步骤3,发布系统拉取kafka消息,准备发布,通过类似拓扑排序算法确定待发布应用的关联关系,确定安装的先后顺序;
步骤4,通过docker api创建应用的专属网络启动链接docker守护进程程序,调用docker底层的createservice方法,将应用的镜像,环境变量,参数信息传递给守护进程,docker守护进程创建对应应用;
步骤5,通过docker api创建具体应用以及对应的代理程序和网络,应用置于步骤5的专属网络中,代理程序置于步骤5的专属网络和公用网络中;
步骤6,在专属网络和公用网络中,分别对应用和代理程序设置网络下别名。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,在步骤1中,在安装docker swarm的机器上,生成docker.sock Unix域套接字,通过该套接字,可与docker守护进程通信,调用docker底层的各种服务;基于docker创建容器服务构建发布应用系统,进而通过调用docker底层功能创建相应的应用。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,所述步骤5具体包括:
步骤5.1,通过docker守护进程提供的发布服务的功能创建代理程序;
步骤5.2,通过docker守护进程提供的创建网络功能创建应用的私有网络。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,所述步骤6具体包括:
步骤6.1,设置代理程序在应用私有网络下的别名为固定名称;
步骤6.2,设置代理程序在公有网络下的别名为应用自身的名称。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,调用docker api的方式采用绑定Unix域套接字docker.sock来实现。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,采用消息队列来现实交互,保证了交互的时序性以及稳定性。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,创建私有网络,创建应用,以及设置网络下别名的都是通过调用dockerr底层服务来api实现。
作为本发明一种在docker swarm群集下隔离网络的方法的进一步优选方案,通过图类似拓扑排序算法来确定应用安装的依赖性。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明通过给应用建立专属网络已经绑定代理程序,可以将应用所有的请求经过代理路由转发,这样代理就可以记录下应用所有的动作;而且我们可以控制代理程序控制访问权限,来达到给应用进行隔离的目的。
2、本发明通过设置应用的专属网络,保证了该应用的所有活动只限制在专属网络中,所有对公有网络的操作都是通过代理程序转发,有效的控制了应用的安全性,避免产生一些不可控的现象。
3、通过记录每个应用对公有网络所有操作,后期可以通过大数据分析每个应用对于公有网络的依赖以及对于公有网络产生的影响。
附图说明
图1本发明应用关系图;
图2本发明spring cloud zuul架构图;
图3本发明应用间调用效果图;
图4本发明整个方法流程图。
具体实施方式
本发明的方法的几个主要解决步骤如下:
一种在docker swarm群集下隔离网络的方法,如图4所示,具体包括如下步骤:
步骤1,基于与docker守护进程交互,调用守护进程提供的相关服务docker swarmapi构建应用发布系统;
步骤2,将待发布的应用容器镜像、容器环境变量、资源限定、服务名称的相关信息通过消息队列客户端程序推送至kafka消息队列;
步骤3,发布系统拉取kafka消息,准备发布,通过类似拓扑排序算法确定待发布应用的关联关系,确定安装的先后顺序;
步骤4,通过docker api创建应用的专属网络启动链接docker守护进程程序,调用docker底层的createservice方法,将应用的镜像,环境变量,参数信息传递给守护进程,docker守护进程创建对应应用;
步骤5,通过docker api创建具体应用以及对应的代理程序和网络,应用置于步骤5的专属网络中,代理程序置于步骤5的专属网络和公用网络中;
步骤6,在专属网络和公用网络中,分别对应用和代理程序设置网络下别名
基于以上的步骤,采用的具体实施过程如下:
第1步,在安装docker的机器上,找到docker运行产生的docker.sock文件,创建dockerClient客户端,用来发布应用,创建专属网络,创建代理程序。如果需要docker镜像仓库用户名密码健全,则设定鉴权参数。
第2步,通过kafka consumer不断拉取消息队列中的消息,来不断获取用户需要隔离的应用信息。
第3步,将拉取到的各个应用信息通过如下算法进行排序
算法描述:
A.有ABCDEFG这7个应用,假设C必须在A完成之后做,我们把这种关系定义为"依赖",用符号"A-->C"标识,这7个应用如图1所示
B.列出所有的关联关系,生成依赖关系清单R,左右两边分别标记为RL关系清单和RR关系清单,如下:
A-->C
A-->D
A-->G
B-->C
D-->B
D-->E
F-->E
G-->F
B-->G
C.约定左边为依赖关系清单R,右边为事情清单,分隔符号“|”前边的事情表示已经排好,后边是等待排的事情
第一步:开始时,分隔符号在事情清单开始,表示所有事情均等待排序。将等待排序的清单中划掉RR关系清单中出现过的事情,将未划掉的放到分隔符前边,然后从依赖关系清单中同时划掉分隔符前边出现过的关系对,得到第二步图,此时事情A已经排好
第二步:重复第一步,得到第三步图,此时AD已经排序好。
第三步:重复第一步,得到第四步图,此时事情ADB已经排好。
第四步:重复第一步,得到第五步图,此时事情ADBCG已经排好。
第五步:重复第一步,得到第六步图,此时事情ADBCGF已经排好。
第六步:重复第一步,得到第七步图,此时事情ADBCGFE已经排好。
第六步图:--A D B C G F|E
第七步图:--A D B C G F E|
第4步,通过dockerClient提供的方法创建应用以及创建网络,具体实现步骤如下:
通过createservice方法创建应用:
根据应用的相关信息,组装成dockerClient需要的参数,调用创建应用方法创建应用,设置应用的相关属性。
通过createnetwork方法创建网络:创建过程中,会判断可用网段,以及之前创建过的记录,防止冲突。
第5步,创建代理程序,代理程序使用spring cloud zuul来实现,zuul的架构图如下图2所示。FilterFileManager管理目录和轮询修改和新的Groovy过滤器,其中的startPoller方法负责轮询。
ZuulRunner会初始化一个RequestContext对象,该对象持有整个请求过程中的上下文数据,被所有过滤器锁共享。ZuulRunner会执行具体的pre、routing、post以及error类型的过滤器,执行完成之后,返回返回具体的HttpResponse对象。
代理程序通过设置自定义routing,日志记录过滤器,来实现将应用的请求智能转发,将请求进行记录,转发的示意图如图3所示,后期还可以设置其他过滤器来实现其他定制功能。主要实现逻辑如下:当应用访问公共网络中的其他服务的时候,修改专属网络内应用访问的url,使之强制转换为对应其他应用在公共网络中代理的地址,再通过代理的转发,真正访问到具体的服务。且记录每次请求的信息输入到日志文件,以供filebeat采集。
第6步,设置网络下别名;
在第4,5步下,已经实现了应用,代理,网络的安装,这一步中,通过设置应用,代理在不同网络下的endpoint。
有应用serviceA serviceB;
eg:调用过程serviceA->serviceB,通过代理后,调用过程为serviceA->proxyA->proxyB->serviceB,如下图3所示。
设置过程:通过设置service和proxy在每个网络下的别名aliases,这样,在对应的网络中,就可以通过aliases来访问应用。
proxyA在公用网络和专属网络A中,serviceA只在专属网络A中,proxyB在公用网络和专属网络B中,serviceB只在专属网络B中
设置proxyA在专属网络A中的别名为proxyA,在公用网络中别名为serviceA,proxyB在专属网络B中的别名为proxyB,在公用网络中的别名为serviceB。
调用过程经过spring cloud zuul的自定义路由,路由过程如上面所描述,来完成serviceA到serviceB的调用。
Claims (8)
1.一种在docker swarm群集下隔离网络的方法,其特征在于,具体包括如下步骤:
步骤1,基于与docker守护进程交互,调用守护进程提供的相关服务docker swarm api构建应用发布系统;
步骤2,将待发布的应用容器镜像、容器环境变量、资源限定、服务名称的相关信息通过消息队列客户端程序推送至kafka消息队列;
步骤3,发布系统拉取kafka消息,准备发布,通过类似拓扑排序算法确定待发布应用的关联关系,确定安装的先后顺序;
步骤4,通过docker api创建应用的专属网络启动链接docker守护进程程序,调用docker底层的createservice方法,将应用的镜像,环境变量,参数信息传递给守护进程,docker守护进程创建对应应用;
步骤5,通过docker api 创建具体应用以及对应的代理程序和网络,应用置于步骤5的专属网络中,代理程序置于步骤5的专属网络和公用网络中;
步骤6,在专属网络和公用网络中,分别对应用和代理程序设置网络下别名。
2. 根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,在步骤1中,在安装docker swarm的机器上,生成docker.sock Unix域套接字,通过该套接字,
可与docker守护进程通信,调用docker底层的各种服务;基于docker创建容器服务构建发布应用系统,进而通过调用docker底层功能创建相应的应用。
3.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,所述步骤5具体包括:
步骤5.1,通过docker守护进程提供的发布服务的功能创建代理程序;
步骤5.2,通过docker守护进程提供的创建网络功能创建应用的私有网络。
4.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,所述步骤6具体包括:
步骤6.1,设置代理程序在应用私有网络下的别名为固定名称;
步骤6.2,设置代理程序在公有网络下的别名为应用自身的名称。
5.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,调用docker api的方式采用绑定Unix域套接字 docker.sock来实现。
6.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,采用消息队列来现实交互,保证了交互的时序性以及稳定性。
7.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,创建私有网络,创建应用,以及设置网络下别名的都是通过调用dockerr底层服务来api 实现。
8.根据权利要求1所述的一种在docker swarm群集下隔离网络的方法,其特征在于,在一个实施方式中,通过图类似拓扑排序算法来确定应用安装的依赖性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911401080.0A CN111190698B (zh) | 2019-12-30 | 2019-12-30 | 一种在docker swarm群集下隔离网络的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911401080.0A CN111190698B (zh) | 2019-12-30 | 2019-12-30 | 一种在docker swarm群集下隔离网络的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190698A true CN111190698A (zh) | 2020-05-22 |
CN111190698B CN111190698B (zh) | 2022-07-08 |
Family
ID=70707980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911401080.0A Active CN111190698B (zh) | 2019-12-30 | 2019-12-30 | 一种在docker swarm群集下隔离网络的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190698B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656980A (zh) * | 2016-10-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种自动化配置Docker容器访问控制的方法 |
CN107070717A (zh) * | 2017-04-17 | 2017-08-18 | 成都精灵云科技有限公司 | 一种跨主机的Docker容器通讯的方法 |
CN110188574A (zh) * | 2019-06-06 | 2019-08-30 | 上海帆一尚行科技有限公司 | 一种Docker容器的网页防篡改系统及其方法 |
-
2019
- 2019-12-30 CN CN201911401080.0A patent/CN111190698B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656980A (zh) * | 2016-10-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种自动化配置Docker容器访问控制的方法 |
CN107070717A (zh) * | 2017-04-17 | 2017-08-18 | 成都精灵云科技有限公司 | 一种跨主机的Docker容器通讯的方法 |
CN110188574A (zh) * | 2019-06-06 | 2019-08-30 | 上海帆一尚行科技有限公司 | 一种Docker容器的网页防篡改系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111190698B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111866191B (zh) | 消息事件的分发方法、分发平台、系统及服务器 | |
WO2021017301A1 (zh) | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 | |
CN109889575B (zh) | 一种边缘环境下的协同计算平台系统及方法 | |
CN108989066B (zh) | 设备管理方法及装置 | |
US9038082B2 (en) | Resource abstraction via enabler and metadata | |
CN113342478B (zh) | 资源管理方法、设备、网络系统及存储介质 | |
CN105745867B (zh) | 用于在无线通信系统中管理特定资源的方法和设备 | |
CN109756559B (zh) | 面向嵌入式机载系统分布式数据分发服务的构建及使用方法 | |
CN111371679A (zh) | 一种基于kubernetes与Kong实现API网关的方法 | |
CN111741134A (zh) | 一种网络靶场大规模场景中虚拟机快速构建系统与方法 | |
JP4205323B2 (ja) | 配信システム、配信サーバとその配信方法、配信プログラム | |
CN113709810B (zh) | 一种网络服务质量的配置方法、设备和介质 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和系统 | |
US20200264937A1 (en) | Integration of software applications with infrastructure | |
CN116048467A (zh) | 微服务开发平台及业务系统开发方法 | |
CN116489214A (zh) | 一种基于微服务网关的统一服务调度方法、装置、介质及设备 | |
CN110990025B (zh) | 一种实例部署方法及系统 | |
WO2014019545A1 (zh) | 内容发布系统及其内容发布方法 | |
CN111190698B (zh) | 一种在docker swarm群集下隔离网络的方法 | |
CN110636073A (zh) | 一种分布式异步远程服务编排与调用技术 | |
CN115617487A (zh) | 一种容器重调度方法、装置、设备、存储介质 | |
JP2003283514A (ja) | 星状ネットワーク上でのグループ管理方法及び装置 | |
CN113986423A (zh) | 一种弹框显示方法、系统及存储介质和终端设备 | |
CN113297158B (zh) | 一种云安全产品管理方法、装置、设备及存储介质 | |
CN114675842B (zh) | 一种基于freemarker模板引擎的应用自动发布系统 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 211100 floor 5, block a, China Merchants high speed rail Plaza project, No. 9, Jiangnan Road, Jiangning District, Nanjing, Jiangsu (South Station area) Applicant after: JIANGSU AIJIA HOUSEHOLD PRODUCTS Co.,Ltd. Address before: 211100 No. 18 Zhilan Road, Science Park, Jiangning District, Nanjing City, Jiangsu Province Applicant before: JIANGSU AIJIA HOUSEHOLD PRODUCTS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |