CN111124601A - 一种基于自动初始化的主机容器自动发现方法 - Google Patents
一种基于自动初始化的主机容器自动发现方法 Download PDFInfo
- Publication number
- CN111124601A CN111124601A CN201911174006.XA CN201911174006A CN111124601A CN 111124601 A CN111124601 A CN 111124601A CN 201911174006 A CN201911174006 A CN 201911174006A CN 111124601 A CN111124601 A CN 111124601A
- Authority
- CN
- China
- Prior art keywords
- service
- nginx
- consul
- automatic
- host
- 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
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
Abstract
本发明公开了一种基于自动初始化的主机容器自动发现方法,涉及主机容器自动初始化技术领域,基于docker和机器自动初始化,完成服务容器的自动发现和注册,并且让外部调用可以直接从调用服务,并在服务扩容之后不需要额外的nginx修改。减少nginx的配置工作,不需要人为去对upstream进行配置,减少出错率;只需要关心nginx业务层面的location配置;有效的分离内外部访问访问限制,只允许外部访问的在zookeeper上进行限制,只允许内部访问的在nginx上进行接口层级的限制。
Description
技术领域
本发明属于分布式容器服务自动发现方法技术领域,尤其涉及一种基于自动初始化的主机容器自动发现方法。
背景技术
automatic initialization(以下称为自动初始化)是一种为了让全新的空闲服务器根据用途安装所需要的最少基础依赖服务和进行自动分区的技术。自动初始化会根据客户对当前机器的规划不同,先获取所需要安装的服务和分配所需要的磁盘,并在机器上进行自动安装。这过程通常分为三步:确认服务器用途,获取服务器所需的最少基础依赖服务和磁盘分区,然后对服务器进行服务安装和磁盘分区。
主机无状态容器是指把容器部署在主机上,然后利用端口暴露的方式使其他地方服务可以从外部访问到容器中的服务,利用本机安装fannel,calico可以使多个主机之间容器可以互相访问,一些必要的日志可以挂载存储在主机上,然后通过日志手机工具如splunk,elk等进行日志收集。
现有的服务大都基于ip端口请求来完成,服务依赖各种基础服务,初始化过于麻烦,而利用docker可以解决服务依赖的问题,但是docker的扩展性和容器节点失效漂移不确定性又会使得扩容和水平扩展之后的前端nginx upstream代理产生问题。
发明内容
本发明所要解决的技术问题在于克服现有技术的缺点与不足提供一种基于自动初始化的主机容器自动发现方法,基于docker和机器自动初始化,完成服务容器的自动发现和注册,并且让外部调用可以直接从调用服务,并在服务扩容之后不需要额外的nginx修改。
本发明为解决上述技术问题采用以下技术方案:
一种基于自动初始化的主机容器自动发现方法,具体包含如下步骤:
步骤1,搭建nginx并且编译加入nginx_upstream_check_module模块和nginx-upsync-module模块,设置服务的upstream选项;
步骤2,搭建consul,镜像启动,若在docker集群内部搭建consul,则通过cluster_name进行访问;若在集群外部搭建consul,则通过域名访问;
步骤3,安装docker和fannel,利用本地文件yum安装,设置私有镜像库,搭建docker私有镜像库registry,镜像启动;
步骤4,制作服务镜像,在服务启动脚本中先获取到服务的宿主机地址和启动端口,在服务启动时,加入curl -X PUT端口,把服务的IP+端口注册到consul上,提供给步骤1中的nginx做upstream;
步骤5,将步骤4中制作的服务镜像上传到私有镜像库,发布到docker主机上;
步骤6,主机容器启动后,容器内启动的服务一时间自动注册到consul和zookeeper上,nginx获取consul相关信息做反向代理可直接访问主机容器服务,并通过location限制不允许外部访问的接口,然后服务内部互相调用时读取zookeeper上对应服务所在地址的ip端口进行对应服务的调用;
步骤7,编写定时清理脚本,根据自身需求,每隔一定时间对注册到consul上的服务进行接口层面的检活,若不通时,则使用curl-X DELETE端口删除不通的服务,进而减少nginx的轮询时间。
2、作为本发明一种基于自动初始化的主机容器自动发现方法的进一步优选方案,在步骤7中,一定时间为10分钟。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明减少nginx的配置工作,不需要人为去对upstream进行配置,减少出错率,具体改造效果见图2;
2、本发明只需要关心nginx业务层面的location配置;
3、本发明有效的分离内外部访问访问限制,只允许外部访问的在zookeeper上进行限制,只允许内部访问的在nginx上进行接口层级的限制;
4、本发明提高了服务的可扩充性,和水平扩容能力,在需要扩充服务实例的时候只需要多发布几个容器就能做到负载能力的增加;
5、本发明自动初始化服务器,减少人为操作,减少出错概率,减少人力成本和时间
对服务器分类明了,只安装最基础依赖。
附图说明
图1是本发明的方法流程图。
图2是图1中的步骤5的注册之后产生的consul上注册的节点图。
具体实施方式
本发明公开了一种基于自动初始化的主机容器自动发现方法,基于docker和机器自动初始化,完成服务容器的自动发现和注册,并且让外部调用可以直接从调用服务,并在服务扩容之后不需要额外的nginx修改。减少nginx的配置工作,不需要人为去对upstream进行配置,减少出错率;只需要关心nginx业务层面的location配置;有效的分离内外部访问访问限制,只允许外部访问的在zookeeper上进行限制,只允许内部访问的在nginx上进行接口层级的限制;提高了服务的可扩充性,和水平扩容能力,在需要扩充服务实例的时候只需要多发布几个容器就能做到负载能力的增加;自动初始化服务器,减少人为操作,减少出错概率,减少人力成本和时间对服务器分类明了,只安装最基础依赖。
下面结合附图对本发明的技术方案做进一步的详细说明:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的在于克服现有技术的缺点与不足,基于docker和机器自动初始化,完成服务容器的自动发现和注册,并且让外部调用可以直接从调用服务,并在服务扩容之后不需要额外的nginx修改。
自动初始化依赖于公司自有的cmdb系统,先获取系统类型并根据类型分配对应的ip地址,例如windows,esxi,centos,Redhat,ubantu等,通过管理口从私有ftp上下载镜像或模板修改其中ip地址并进行安装。然后在系统中获取需要的服务器类型,比如GPU型,CPUDOCKER型,CPU NGINX型,CPU数据库型等,用于区分所有公司业务所需要的服务器类型,并定义每种类型的服务器需要安装的服务,把每个安装步骤封装成一个ansible的推送命令或者推送脚本,除了每个服务器依赖的基础服务外,在推送时在每台服务器上的相同位置生成一个共有的服务器信息文件,包括服务器ip,服务器从属环境,服务器mac等信息,并给文件加保护,保证文件只读。
Docker保证服务容器化发布,在镜像制作时,每个容器挂载服务器信息文件,启动脚本中加入一行命令,通过读取服务器信息文件,向公共服务注册中心consul注册主机和端口,通过定时任务定时检查注册的端口是否畅通,提出不通的老节点,防止机器过多时,nginx轮询消耗过多时间,同时服务启动时通过程序向zookeeper注册服务信息,通过心跳机制保证节点存活率。
Nginx服务通过nginx_upstream_check_module模块和nginx-upsync-module模块提供http反向代理,其中不需要配置固定的upstream通过upsync从公共服务注册中心consul中获取已有的服务节点,并通过upsync_dump保存信息,保证在连接不上consul时,也能通过留存的本地信息进行反向代理,实现对配置中心的弱依。
本发明的目的通过以下技术方案实现包括以下步骤:一种基于自动初始化的主机容器自动发现方法,如图1所示,具体包含如下步骤;
步骤1,搭建nginx并且编译加入nginx_upstream_check_module模块和nginx-upsync-module模块,设置服务的upstream选项,花时2分钟以内;
全部设置为upstream backend_XXX {
least_conn;
server 127.0.0.1:11111;
Upsync consul:8500/v1/kv/env/upstreams/backend_XXX/ upsync_timeout=6mupsync_interval=500ms upsync_type=consul strong_dependency=off;
upsync_dump_path /usr/local/nginx/conf/XXX.conf;
upsync_lb least_conn;
}
步骤2,搭建consul,镜像启动,花时1分钟以内,若在docker集群内部搭建consul,则通过cluster_name进行访问;若在集群外部搭建consul,则通过域名访问;
步骤3,安装docker和fannel,利用本地文件yum安装,花时1分钟以内,设置私有镜像库,搭建docker私有镜像库registry,镜像启动,花时1分钟;
步骤4,制作服务镜像,在服务启动脚本中先获取到服务的宿主机地址和启动端口,根据服务包大小,通常200M以内的包打包时间在1分30秒以内;
在服务启动时,加入curl -X PUT端口,把服务的IP+端口注册到consul上,提供给步骤1中的nginx做upstream;
步骤5,将步骤4中制作的服务镜像上传到私有镜像库,发布到docker主机上,发布时间根据镜像大小而定,一般第一次发布需要拉取基础镜像,花时2-3分钟,之后每次发布时间控制在30秒以内;如图2所示。
步骤6,主机容器启动后,服务第一时间自动注册到consul和zookeeper上,nginx获取consul相关信息做反向代理可直接访问主机容器服务,并通过location限制不允许外部访问的接口,然后服务内部互相调用时读取zookeeper上对应服务所在地址的ip端口进行对应服务的调用;
步骤7,编写定时清理脚本,根据自身需求,每隔一定时间对注册到consul上的服务进行接口层面的检活,若不通时,则使用curl-X DELETE端口删除不通的服务,进而减少nginx的轮询时间。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。上面对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (2)
1.一种基于自动初始化的主机容器自动发现方法,其特征在于:具体包含如下步骤:
步骤1,搭建nginx并且编译加入nginx_upstream_check_module模块和nginx-upsync-module模块,设置服务的upstream选项;
步骤2,搭建consul,镜像启动,若在docker集群内部搭建consul,则通过cluster_name进行访问;若在集群外部搭建consul,则通过域名访问;
步骤3,安装docker和fannel,利用本地文件yum安装,设置私有镜像库,搭建docker私有镜像库registry,镜像启动;
步骤4,制作服务镜像,在服务启动脚本中先获取到服务的宿主机地址和启动端口,在服务启动时,加入curl -X PUT端口,把服务的IP+端口注册到consul上,提供给步骤1中的nginx做upstream;
步骤5,将步骤4中制作的服务镜像上传到私有镜像库,发布到docker主机上;
步骤6,主机容器启动后,容器内启动的服务一时间自动注册到consul和zookeeper上,nginx获取consul相关信息做反向代理可直接访问主机容器服务,并通过location限制不允许外部访问的接口,然后服务内部互相调用时读取zookeeper上对应服务所在地址的ip端口进行对应服务的调用;
步骤7,编写定时清理脚本,在一个优选的实施方式中,根据自身需求,每隔一定时间对注册到consul上的服务进行接口层面的检活,若不通时,则使用curl-X DELETE端口删除不通的服务,进而减少nginx的轮询时间。
2.根据权利要求1所述的一种基于自动初始化的主机容器自动发现方法,其特征在于:在一个优选的实施方式中,在步骤7中,一定时间为10分钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911174006.XA CN111124601B (zh) | 2019-11-26 | 2019-11-26 | 一种基于自动初始化的主机容器自动发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911174006.XA CN111124601B (zh) | 2019-11-26 | 2019-11-26 | 一种基于自动初始化的主机容器自动发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124601A true CN111124601A (zh) | 2020-05-08 |
CN111124601B CN111124601B (zh) | 2022-07-08 |
Family
ID=70496704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911174006.XA Active CN111124601B (zh) | 2019-11-26 | 2019-11-26 | 一种基于自动初始化的主机容器自动发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124601B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930441A (zh) * | 2020-08-10 | 2020-11-13 | 上海熙菱信息技术有限公司 | 一种基于consul的配置文件管理系统及方法 |
CN112468314A (zh) * | 2020-10-29 | 2021-03-09 | 贵州新致普惠信息技术有限公司 | 基于服务网格实现的日志服务自动化部署的方法 |
CN113497830A (zh) * | 2021-06-25 | 2021-10-12 | 浙江大华技术股份有限公司 | 一种云网络通信的方法、平台、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN106657248A (zh) * | 2016-11-01 | 2017-05-10 | 山东大学 | 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法 |
CN107395762A (zh) * | 2017-08-30 | 2017-11-24 | 四川长虹电器股份有限公司 | 一种基于Docker容器的应用服务访问系统及方法 |
-
2019
- 2019-11-26 CN CN201911174006.XA patent/CN111124601B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN106657248A (zh) * | 2016-11-01 | 2017-05-10 | 山东大学 | 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法 |
CN107395762A (zh) * | 2017-08-30 | 2017-11-24 | 四川长虹电器股份有限公司 | 一种基于Docker容器的应用服务访问系统及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930441A (zh) * | 2020-08-10 | 2020-11-13 | 上海熙菱信息技术有限公司 | 一种基于consul的配置文件管理系统及方法 |
CN111930441B (zh) * | 2020-08-10 | 2024-03-29 | 上海熙菱信息技术有限公司 | 一种基于consul的配置文件管理系统及方法 |
CN112468314A (zh) * | 2020-10-29 | 2021-03-09 | 贵州新致普惠信息技术有限公司 | 基于服务网格实现的日志服务自动化部署的方法 |
CN112468314B (zh) * | 2020-10-29 | 2022-11-04 | 贵州新致普惠信息技术有限公司 | 基于服务网格实现的日志服务自动化部署的方法 |
CN113497830A (zh) * | 2021-06-25 | 2021-10-12 | 浙江大华技术股份有限公司 | 一种云网络通信的方法、平台、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111124601B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124601B (zh) | 一种基于自动初始化的主机容器自动发现方法 | |
US9900213B2 (en) | Startup configuration file deployment | |
CN107547654B (zh) | 一种分布式对象存储集群、部署、服务方法及系统 | |
US9813374B1 (en) | Automated allocation using spare IP addresses pools | |
KR102024694B1 (ko) | 블록체인 기반의 다수의 서비스 노드를 사용하는 탈중앙화 서비스 플랫폼 | |
CN112035216B (zh) | 一种Kubernetes集群网络和OpenStack网络的打通方法 | |
US10678657B1 (en) | Reversion operations for virtual computing environments | |
US20100042991A1 (en) | Business-in-a-box integration server and integration method | |
CN102833344A (zh) | 基于本地启动映像文件的无盘计算机启动方法 | |
CN115150419B (zh) | 一种混合云对象存储的配置和访问方法及系统 | |
CN111930396B (zh) | 一种基于notify机制的4G路由器中通讯模组的升级方法 | |
CN113810230A (zh) | 对容器集群中的容器进行网络配置的方法、装置及系统 | |
US10545909B2 (en) | Computing system management using shared memory | |
US10552404B2 (en) | Retrospective snapshots in log-structured storage systems | |
CN111459619A (zh) | 一种基于云平台实现服务的方法和装置 | |
CN109560954B (zh) | 设备配置方法及装置 | |
CN109495298B (zh) | 在OpenStack系统中管理节点的方法和装置 | |
CN111404978A (zh) | 一种数据存储方法及云存储系统 | |
CN112181049B (zh) | 集群时间同步方法、装置、系统、设备及可读存储介质 | |
CN109451093B (zh) | 一种环回口地址分配方法及装置 | |
CN111580942A (zh) | 分布式系统定时任务的处理方法、装置及存储介质 | |
WO2016179960A1 (zh) | 域名系统dns解析处理方法及装置 | |
CN116991541B (zh) | 一种镜像访问请求处理方法、装置、设备及存储介质 | |
US20230208803A1 (en) | Ip address control system | |
CN111988446B (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 | ||
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. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |