CN111124601A - 一种基于自动初始化的主机容器自动发现方法 - Google Patents

一种基于自动初始化的主机容器自动发现方法 Download PDF

Info

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
Application number
CN201911174006.XA
Other languages
English (en)
Other versions
CN111124601B (zh
Inventor
陈旋
吕成云
朱召文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Aijia Household Products Co Ltd
Original Assignee
Jiangsu Aijia Household Products Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Aijia Household Products Co Ltd filed Critical Jiangsu Aijia Household Products Co Ltd
Priority to CN201911174006.XA priority Critical patent/CN111124601B/zh
Publication of CN111124601A publication Critical patent/CN111124601A/zh
Application granted granted Critical
Publication of CN111124601B publication Critical patent/CN111124601B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, 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分钟。
CN201911174006.XA 2019-11-26 2019-11-26 一种基于自动初始化的主机容器自动发现方法 Active CN111124601B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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容器的应用服务访问系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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