CN108063791A - 基于动态路由的应用部署方法 - Google Patents
基于动态路由的应用部署方法 Download PDFInfo
- Publication number
- CN108063791A CN108063791A CN201711062012.7A CN201711062012A CN108063791A CN 108063791 A CN108063791 A CN 108063791A CN 201711062012 A CN201711062012 A CN 201711062012A CN 108063791 A CN108063791 A CN 108063791A
- Authority
- CN
- China
- Prior art keywords
- dynamic routing
- concul
- host
- nginx
- dispositions method
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于动态路由的应用部署方法,首先,应用的部署以容器为载体,部署主机以集群为调度单位。被部署到集群的主机依据特定的调度的算法适时分配。同时,利用集群调度应用,使得可伸缩性得以体现。本发明可适时添加主机至集群,满足高峰期使用。其次,由于某一应用部署时依据当时集群内主机资源占用情况,灵活调度。本发明使用动态路由,让路由支持无宕机时间的更新,让它支持方便进行扩容与故障摘除,也让它支持能够对请求进行改写。本发明让研发基础开环境资源利用率更高,可伸缩性更强,使用成本更低。
Description
技术领域
本发明涉及计算机应用技术领域,具体涉及一种基于动态路由的应用部署方法。
背景技术
客户端与网站的交互,网站内部前端应用与后端应用的交互都涉及到对请求进行路由。现网站使用docker容器技术于研发基础环境,每套环境都可部署网站的全量应用,每个应用分别对应一个容器,所有容器集中部署至一台主机(计算机)。将应用运行环境闭合在容器内,而容器本身运行在宿主机上。这样的好处是:大大复用了单一主机的***资源,解耦与被部署宿主机的依赖,如监听端口,应用目录。所有的网站应用可全量部署于一台配置为4核16G内存的主机,同时运行一个Nginx(一种高性能的HTTP和反向代理服务器)容器用来路由指向到该主机(网站的)HTTP请求,值得一提的是,路由规则配置文件通过静态文件的方式管理。随着应用数量的上升,前述配置主机无法支撑全量的应用部署。对单一主机的配置要求愈发苛刻。
目前Web应用多结合反向代理技术共同部署配合使用。通过代理服务器接收客户端发送的连接请求,然后将连接请求转发给指定的内部服务器进行处理,并将内部服务器的处理结果返回给发送连接请求的客户端。反向代理服务器如Nginx,路由规则配置文件都是静态方式,即预先设置好,与主机一一绑定,无法实现规则的实时动态更新,灵活性较低。
发明内容
本发明提供了一种基于动态路由的应用部署方法,解决了现有技术无法实现规则的实时动态更新,灵活性较低的技术问题。
本发明首先使用集群为调度单位部署应用容器。将容器以集群为单位进行调度,降低了对单一主机的***要求,同时增加了开发测试环境可伸缩性。
其次,动态更新路由规则(指Nginx路由规则)配置。应用容器名称是什么,服务名称是什么,部署至集群的哪个主机,监听的端口又是哪个,这些主要的路由信息都是实时收集。最终,更新至Nginx配置目录。从而,官网应用与特定的单一主机解耦,可灵活的部署至集群的任一主机上。而通过动态路由,用户使用上无差异感知。
本发明采用的技术方案如下:
基于动态路由的应用部署方法,包括环境准备流程和用户使用流程,环境准备流程中设置动态路由,启动容器后进入用户使用流程,用户指定被部署应用并触发部署操作。
进一步地,Concul与Registrator、Concul-Template构成服务发现***,作用到Nginx之上构成动态路由***。
进一步地,所述环境准备流程中依次启动Concul容器、Registrator容器、Nginx容器和Concul-Template容器后进入用户使用流程。
进一步地,用户使用流程中对集群中的docker事件进行监听,具体如下:
Registrator监听到docker事件,向Concul注册服务,Concul-Template定时查询Concul中的服务目录,发现有服务变更,触发服务更新,使用预设置的Nginx模版,填充变量后覆盖已有Nginx的配置,并重启Nginx服务完成路由无宕机更新。
进一步地,所述用户使用流程具体包括以下步骤:
部署应用入口程序,由用户传入部署应用的参数;
基于集群调度容器,执行调度算法;
所有的信息获取完毕后,执行应用部署。
进一步地,所述参数包括应用名称、容器名称、服务名称、Nginx模版名称。
进一步地,依据规则执行调度算法,所述规则为:依据执行应用部署当时集群内主机可用***资源情况降序排序,选择第一排位主机为宿主机。
进一步地,依据规则执行调度算法后,返回给部署应用入口程序。
本发明让开发测试环境资源利用率更高,可伸缩性更强,使用成本更低,与现有技术相比,有益效果如下:
1、拥有服务发现***,结合Nginx实现动态路由功能,子***功能边界清晰,维护性高。
2、服务发现***支持分布式部署。
3、基于docker容器技术部署整套动态路由***,移植性高,友好性强。
4、基于docker容器技术部署应用容器,是的环境复用性高。
5、结合3、4优势,基于集群部署所有容器,有效降低研发成本。
6、提供了一整套应用部署的解决方案。
附图说明
图1是本发明基于动态路由的应用部署方法流程图。
图2是本发明***调用图。
具体实施方式
本发明使用Registrator+Concul+Concul-Template构成服务发现及更新***,结合Nginx应用场景,形成动态路由***;同时,基于docker容器部署应用,最终形成一种灵活、可伸缩、资源复用率高的基于动态路由的应用部署方法。
首先,应用的部署还是以容器为载体,但部署主机不仅限定于单一主机(虚拟主机),而是以集群为调度单位。被部署到集群的哪台主机依据特定的调度的算法适时分配。这样一来,对于集群内部的单一主机无较高要求,普通的2核4G主机亦可用。同时,利用集群调度应用,使得可伸缩性得以体现。可适时添加主机至集群,满足高峰期使用,如跨部门联调需求额外的网站全量应用。
其次,由于某一应用部署时依据当时集群内主机资源占用情况,灵活调度。可能每一次的部署都在不同的主机上,那就不能以静态路由的方式,即:预定义Nginx配置文件的方式达到路由某套官网应用HTTP请求的目的。这里使用动态路由方式解决该问题。让路由支持无宕机时间的更新,让它支持方便进行扩容与故障摘除,也让它支持能够对请求进行改写。
下文中,结合附图和实施例对本发明作进一步阐述。
图1是本发明基于动态路由的应用部署方法流程图,由两部分组成,分别为“环境准备”流程,主要设置动态路由相关配套容器;以及“用户使用”流程,主要涉及用户指定被部署应用并触发部署操作。本发明所有服务或应用均运行于容器内。
1、环境准备流程
Concul是一个服务管理软件,具有服务发现,健康检查等功能。支持多数据中心下,分布式高可用的,服务发现和配置共享。
Registrator是一个服务软件,监控docker容器事件,确认并将其提供的服务于服务管理软件进行注册登记。往往与服务管理软件一同使用,如Consul,etcd等。
Consul-Template是由Concul推出的模版***,结合Concul一同使用。提供了一个便捷的方式从Consul中获取存储的值,Consul-template守护进程会查询consul实例,来更新***上指定的任何模板,当更新完成后,模板可以选择运行一些任意的命令。
docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Concul与Registrator,Concul-Template构成服务发现***,作用到Nginx之上构成一套动态路由***。依次启动如下容器:
1)启动Concul容器;
2)启动Registrator容器;
3)启动Nginx容器;
4)启动Concul-Template容器。
2、用户使用流程
环境准备完成后,监听着集群中docker事件,即任意容器被部署于集群中。集群是指一组相互独立的计算机,利用高速通信网络组成一个计算机***,每个群集节点(即集群中的每台计算机)都是运行其自己进程的一个独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一***,协同起来向用户提供应用程序、***资源和数据,并以单一***的模式加以管理。
图2为***调用图。某个应用容器启动后,Registerator监听到该docker事件,向Concul注册该服务,Concul-Template定时查询consul中的服务目录,发现有服务变更,触发服务更新,使用预设置的Nginx模版,填充变量后覆盖已有Nginx的配置,并热重启Nginx服务完成路由无宕机更新。详细步骤如下所述:
1)部署应用入口
该入口指代入口程序,由用户传入部署应用必要的参数:如应用名称、容器名称、服务名称、Nginx模版名称等。应用名称、容器名称可以一致,用于标示,不可重名,如图2***调用图中所示tomcat-app-1。服务名称即注册于Concul中的服务,可以重名。重名场景一般作负载均衡。Nginx模版名称明确Concul-Template针对该类应用使用哪种Ngninx配置模版,不同类型可能存在差异。
2)执行调度算法
基于集群调度应用容器。由于一个应用容器最终只会被部署至一台主机之上,所以需要依据特定的规则执行调度。本发明依据执行部署当时集群内主机可用***资源情况降序排序,选择第一排位主机为宿主机。并返回给部署程序。
3)执行部署
所有的必要信息均获取完毕,执行应用部署。应用容器启动命令如docker run-name tomcat-app-l-e SERVICE_NAME=tomcat-app-1-d--network multi-host-networkregistry.cn-beijing.aliyuncs.com/xxx/sd-java。
本发明优选使用Python及Shell实现部署应用入口程序,结合开源软件Consul、Concul-Template、Registerator以及Nginx实现。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (8)
1.基于动态路由的应用部署方法,其特征在于,包括环境准备流程和用户使用流程,环境准备流程中设置动态路由,启动容器后进入用户使用流程,用户指定被部署应用并触发部署操作。
2.如权利要求1所述的基于动态路由的应用部署方法,其特征在于,Concul与Registrator、Concul-Template构成服务发现***,作用到Nginx之上构成动态路由***。
3.如权利要求1所述的基于动态路由的应用部署方法,其特征在于,所述环境准备流程中依次启动Concul容器、Registrator容器、Nginx容器和Concul-Template容器后进入用户使用流程。
4.如权利要求3所述的基于动态路由的应用部署方法,其特征在于,用户使用流程中对集群中的docker事件进行监听,具体如下:
Registrator监听到docker事件,向Concul注册服务,Concul-Template定时查询Concul中的服务目录,发现有服务变更,触发服务更新,使用预设置的Nginx模版,填充变量后覆盖已有Nginx的配置,并重启Nginx服务完成路由无宕机更新。
5.如权利要求4所述的基于动态路由的应用部署方法,其特征在于,所述用户使用流程具体包括以下步骤:
部署应用入口程序,由用户传入部署应用的参数;
基于集群调度容器,执行调度算法;
所有的信息获取完毕后,执行应用部署。
6.如权利要求5所述的基于动态路由的应用部署方法,其特征在于,所述参数包括应用名称、容器名称、服务名称和Nginx模版名称。
7.如权利要求5所述的基于动态路由的应用部署方法,其特征在于,依据规则执行调度算法,所述规则为:依据执行应用部署当时集群内主机可用***资源情况降序排序,选择第一排位主机为宿主机。
8.如权利要求7所述的基于动态路由的应用部署方法,其特征在于,依据规则执行调度算法后,返回给部署应用入口程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711062012.7A CN108063791A (zh) | 2017-11-01 | 2017-11-01 | 基于动态路由的应用部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711062012.7A CN108063791A (zh) | 2017-11-01 | 2017-11-01 | 基于动态路由的应用部署方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108063791A true CN108063791A (zh) | 2018-05-22 |
Family
ID=62134807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711062012.7A Pending CN108063791A (zh) | 2017-11-01 | 2017-11-01 | 基于动态路由的应用部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108063791A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379212A (zh) * | 2018-09-13 | 2019-02-22 | 广东电网有限责任公司信息中心 | Nginx路由配置信息更新方法及***、可读存储介质和终端 |
CN110633325A (zh) * | 2019-09-20 | 2019-12-31 | 四川长虹电器股份有限公司 | 一种基于Docker的数据库集群扩容方法及装置 |
CN111694639A (zh) * | 2020-05-28 | 2020-09-22 | 新浪网技术(中国)有限公司 | 进程容器地址的更新方法、装置和电子设备 |
CN112650662A (zh) * | 2019-10-10 | 2021-04-13 | 上海哔哩哔哩科技有限公司 | 测试环境部署方法及装置 |
CN113992748A (zh) * | 2021-09-18 | 2022-01-28 | 上海泛宥信息科技有限公司 | 反向代理方法、***、介质及终端 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4739236A (en) * | 1985-12-05 | 1988-04-19 | Russel H. Keyes | Portable helm |
CN102333029A (zh) * | 2011-06-23 | 2012-01-25 | 北京新媒传信科技有限公司 | 一种服务器集群***中的路由方法 |
CN105959179A (zh) * | 2016-06-08 | 2016-09-21 | 微梦创科网络科技(中国)有限公司 | 一种反向代理nginx测试***及方法 |
CN106331065A (zh) * | 2016-08-15 | 2017-01-11 | 众安在线财产保险股份有限公司 | 一种用于具有服务容器的主机***的代理应用以及*** |
CN106506703A (zh) * | 2016-12-28 | 2017-03-15 | 掌阅科技股份有限公司 | 基于共享内存的服务发现方法、装置及***、服务器 |
CN106953758A (zh) * | 2017-03-20 | 2017-07-14 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的动态配置管理方法及*** |
CN107256178A (zh) * | 2017-04-27 | 2017-10-17 | 北京数人科技有限公司 | 一种容器管理平台 |
-
2017
- 2017-11-01 CN CN201711062012.7A patent/CN108063791A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4739236A (en) * | 1985-12-05 | 1988-04-19 | Russel H. Keyes | Portable helm |
CN102333029A (zh) * | 2011-06-23 | 2012-01-25 | 北京新媒传信科技有限公司 | 一种服务器集群***中的路由方法 |
CN105959179A (zh) * | 2016-06-08 | 2016-09-21 | 微梦创科网络科技(中国)有限公司 | 一种反向代理nginx测试***及方法 |
CN106331065A (zh) * | 2016-08-15 | 2017-01-11 | 众安在线财产保险股份有限公司 | 一种用于具有服务容器的主机***的代理应用以及*** |
CN106506703A (zh) * | 2016-12-28 | 2017-03-15 | 掌阅科技股份有限公司 | 基于共享内存的服务发现方法、装置及***、服务器 |
CN106953758A (zh) * | 2017-03-20 | 2017-07-14 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的动态配置管理方法及*** |
CN107256178A (zh) * | 2017-04-27 | 2017-10-17 | 北京数人科技有限公司 | 一种容器管理平台 |
Non-Patent Citations (1)
Title |
---|
点融黑帮: "基于nginx和consul构建高可用及自动发现的docker服务架构", 《HTTPS://WWW.JIANSHU.COM/P/9976E874C099》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379212A (zh) * | 2018-09-13 | 2019-02-22 | 广东电网有限责任公司信息中心 | Nginx路由配置信息更新方法及***、可读存储介质和终端 |
CN109379212B (zh) * | 2018-09-13 | 2022-04-29 | 广东电网有限责任公司信息中心 | Nginx路由配置信息更新方法及***、可读存储介质和终端 |
CN110633325A (zh) * | 2019-09-20 | 2019-12-31 | 四川长虹电器股份有限公司 | 一种基于Docker的数据库集群扩容方法及装置 |
CN112650662A (zh) * | 2019-10-10 | 2021-04-13 | 上海哔哩哔哩科技有限公司 | 测试环境部署方法及装置 |
CN111694639A (zh) * | 2020-05-28 | 2020-09-22 | 新浪网技术(中国)有限公司 | 进程容器地址的更新方法、装置和电子设备 |
CN111694639B (zh) * | 2020-05-28 | 2023-11-24 | 新浪技术(中国)有限公司 | 进程容器地址的更新方法、装置和电子设备 |
CN113992748A (zh) * | 2021-09-18 | 2022-01-28 | 上海泛宥信息科技有限公司 | 反向代理方法、***、介质及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108063791A (zh) | 基于动态路由的应用部署方法 | |
Akkus et al. | {SAND}: Towards {High-Performance} serverless computing | |
CN106020930B (zh) | 一种基于应用容器的应用管理方法及*** | |
CN105224466B (zh) | 一种基于Docker的集成测试方法及*** | |
CN104011701B (zh) | 内容传送网络***和能够在内容传送网络中操作的方法 | |
CN106790483A (zh) | 基于容器技术的Hadoop集群***及快速构建方法 | |
CN109491776A (zh) | 任务编排方法和*** | |
CN106790660A (zh) | 一种实现分布式存储***的部署方法及装置 | |
CN109565515A (zh) | 分布式资源管理***中的动态租户结构调整的***、设备和过程 | |
CN112463375B (zh) | 一种数据处理的方法和装置 | |
CN105933137A (zh) | 一种资源管理方法、装置及*** | |
CN109684092A (zh) | 资源分配方法及装置 | |
CN107590072A (zh) | 一种应用开发和测试的方法和装置 | |
CN103747107B (zh) | 一种兼容式云操作平台及其实现方法 | |
CN103034541B (zh) | 一种分布式消息***及其中的设备和方法 | |
CN107291744A (zh) | 确定及运用应用程序之间的关系关联的方法及装置 | |
CN109951320A (zh) | 一种面向云平台的可扩展多层次监控框架及其监控方法 | |
Jain et al. | Performance analysis of various server hosting techniques | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
CN111130900A (zh) | 基于协调服务的分布式互联的数据采集方法与装置 | |
CN102790715A (zh) | 一种基于互联网的资源分配***及方法 | |
CN104054308A (zh) | 应用层资源选择的方法、装置和*** | |
CN112698930A (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
Peinl et al. | The Docker Ecosystem Needs Consolidation. | |
EP4202678A1 (en) | Remote storage for hardware microservices hosted on xpus and soc-xpu platforms |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180522 |