CN110445861B - 一种基于f5适配器的容器云平台服务注册发现方法 - Google Patents
一种基于f5适配器的容器云平台服务注册发现方法 Download PDFInfo
- Publication number
- CN110445861B CN110445861B CN201910725382.7A CN201910725382A CN110445861B CN 110445861 B CN110445861 B CN 110445861B CN 201910725382 A CN201910725382 A CN 201910725382A CN 110445861 B CN110445861 B CN 110445861B
- Authority
- CN
- China
- Prior art keywords
- application
- marathon
- adapter
- instance
- resource pool
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于F5适配器的实现容器云平台服务注册发现方法,包括以下步骤:1)在采用mesos+marathon+docker技术的容器云平台发布应用后,marathon触发事件,并为每个应用的容器实例分配IP端口作为对外提供服务的入口;2)F5适配器对接服务,并监听marathon事件,获取最新的应用实例的服务地址;3)F5适配器将获取的应用实例的服务地址批量注册到F5设备上,实现容器云平台的服务注册发现。与现有技术相比,本发明具有同时增强系统架构的稳定性、可靠性和安全性并提高系统的并发性能。
Description
技术领域
本发明涉及容器云平台技术领域,尤其是涉及一种基于F5适配器的容器云平台服务注册发现方法。
背景技术
目前容器云平台由软负载均衡服务HAproxy统一对外提供服务,发布流程如下:
1.通过容器云管理平台发布应用,产生全新的容器应用实例访问地址
2.通过Bamboo将最新的容器实例地址更新到HAproxy服务的配置文件里,
3.HAproxy服务通过重新加载配置文件,将最新的容器应用实例的访问地址,统一对外提供服务
目前以上方案有以下不足之处:
(1)现有技术采用bamboo+haproxy组合,在应用实例进行发布的时候,haproxy需重载配置,出现流量抖动现象,可能导致所有业务应用都发生瞬断。
(2)现有技术中存在F5和haproxy两个负载均衡,功能重复,新技术去重后仅使用F5作为负载均衡,满足现有需求,而且F5的硬件稳定性远远高于软负载haproxy的稳定性
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于F5适配器的容器云平台服务注册发现方法。
本发明的目的可以通过以下技术方案来实现:
一种基于F5适配器的容器云平台服务注册发现方法,包括以下步骤:
1)在采用mesos+marathon+docker技术的容器云平台发布应用后,marathon触发事件,并为每个应用的容器实例分配IP端口作为对外提供服务的入口;
2)F5适配器对接服务,并监听marathon事件,获取最新的应用实例的服务地址;
3)F5适配器将获取的应用实例的服务地址批量注册到F5设备上,实现容器云平台的服务注册发现。
所述的marathon为每个应用进行编排配置,包括docker启动参数、资源使用限制、编排约束条件和其他高级参数,将F5_POOL_NAME作为高级参数写入应用的编排配置中。
所述的每个应用包含多个实例,每个实例有对应的宿主机IP和Marathon为其分配的端口号,marathon针对应用和应用实例的所有操作,包括应用创建、发布、暂停、扩容、缩容和删除,均产生对应的事件流,即MarathonEvent。
所述的步骤2)具体包括以下步骤:
21)当用户在容器云平台发布应用操作时,容器实例数发生变化的请求发送到marathon;
22)F5适配器通过MarathonEventHandler处理机监听该Marathon事件,F5适配器接到通知后调用marathon应用接口,获取应用实例更新后的IP地址和端口信息。
所述的步骤22)中,F5适配器通过以下两种模式实现对Marathon事件的监听:
主动调用模式:F5适配器发起一个HTTP请求到Marathon的/v2/events接口,Marathon将应用的改变动作发送到建立的HTTP连接中;
回调模式:F5适配器向Marathon注册自己的地址,当Marathon上的应用发生改变时会主动向F5适配器发送HTTP请求从而通知F5适配器做出相应的动作。
F5适配器的两种监听模式通过环境变量MARATHON_USE_EVENT_STREAM切换,服务启动时默认开启回调模式将自身地址注册到Marathon从而接收Marathon的事件通知。
所述的步骤22)中,当F5适配器MarathonEventHandler处理机监听到Marathon上应用实例发生改变后通过调用handleF5Update方法触发更新F5资源池,具体包括以下步骤:
221)从MarathonEvent事件流中获取发生变化的应用详细信息,包括Marathon上的应用APP_ID和该应用对应的F5资源池名称F5_POOL_NAME;
222)解析Marathon发送的事件类型并执行对应操作,则有:
若此事件为应用实例停止,则根据该应用对应的F5资源池名称F5_POOL_NAME调用F5的接口获取其所有的资源池成员然后逐个删除;
若此事件为应用状态更新,则根据应用的APP_ID获取其在Marathon上的全部实例并循环获取每个应用实例对应的IP地址和端口号,然后根据该应用所对应的F5资源池名称F5_POOL_NAME调用F5接口更新资源池成员,包括IP地址和端口号。
所述的更新资源池成员的更新方法具体为:
遍历资源池成员并与Marathon上获取的实例IP和端口号作比对,若此实例已存在则不做操作,若此实例不存在则添加它到资源池成为新的资源池成员,若某资源池成员不存在对应实例则将它从资源池中删除。
与现有技术相比,本发明具有以下优点:
(1)现有技术采用bamboo+haproxy组合,在应用实例进行发布的时候,haproxy需重载配置,出现流量抖动现象,导致所有业务应用都发生瞬断,而新技术方案完全解决上述业务瞬断问题,保障业务的可用性和可靠性。
(2)现有技术中,由于marathon不支持中文、下划线等特殊字符,但是为了兼容需要手动修改bamboo的规则,会产生bamboo挂掉而无法启动以及多bamboo之间数据无法同步等连锁问题,而新技术方案采用F5的irule技术完全避免上述问题。
(3)现有技术中存在F5和haproxy两个负载均衡,功能重复,新技术去重后仅使用F5作为负载均衡,满足现有需求,而且F5的硬件稳定性远远高于软负载haproxy的稳定性。
(4)经性能测试发现F5性能达20万并发,而haproxy仅支持5万并发,根据瓶颈效应,现有技术仅支持5万并发,而新技术可支持20万并发,提高数倍并发性能。
附图说明
图1为本发明的方法流程图。
图2为实施例中的方法流程图。
图3为F5实例信息自动更新流程图。
图中标记说明:
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,本发明公开了一种基于F5适配器的容器云平台服务注册发现方法,主要包括marathon应用管理、对接F5自研服务和F5 Virtual Server Pool,
(1)组成元素。marathon用于应用的管理,包括应用创建、发布、暂停、扩容、缩容、删除等全生命周期的管理;对接F5自研服务是监听marathon事件,获取最新的应用实例的服务地址;F5 Virtual Server Pool获取的应用实例的服务地址批量注册到F5设备上,实现容器云平台的服务注册发现。
(2)采用mesos+marathon+docker技术的容器云平台发布应用后,marathon触发事件,为每个应用的容器实例分配IP端口作为对外提供服务的入口。
(3)通过组件F5适配器(F5-Adapter)对接服务,监听marathon事件,获取最新的应用实例的服务地址。
(4)通过组件F5适配器将获取的应用实例的服务地址批量注册到F5设备上,实现容器云平台的服务注册发现。
如图2所示,容器云计算平台在用户发布应用时(包括应用更新、扩容、缩容、停止、启动、重启等操作),容器实例数发生变化的请求发送到marathon,marathon执行相关操作并发送事件到自研组件F5-Adapter,F5-Adapter接到通知后调用marathon应用接口,获取应用实例更新的IP和端口信息,最后F5-Adapter根据事件类型,对接F5,将实例信息作为Pool Member更新(增加/删除)到VirtualServer的Pool中,更新的容器实例正常提供服务。
如图3所示,本发明提供的基于F5-Adapter自动更新F5上Marathon实例信息的方法包括如下步骤:
步骤S1:Marathon容器编排和管理平台对于托管在其上的每个应用有一个APP_ID,应用ID具有唯一性,不能重复。每个应用都有对应的Marathon编排配置,包括docker启动参数、资源使用限制、编排约束条件和其他高级参数,其中F5_POOL_NAME可作为高级参数写入应用编排配置。通过更改应用编排配置,可启动或更新对应的应用实例。每个应用可包含多个实例,每个实例有对应的宿主机IP和Marathon为其分配的端口号。针对应用和应用实例的所有操作,包括应用创建、启动、扩缩容、更新、删除,都会产生对应的事件流,也就是MarathonEvent。
步骤S2:F5自研服务启动,首先会声明一个EventBus然后通过注册MarathonEventHandler处理机来监听并处理Marathon上应用发生改变时的动作。
对于Marathon事件的监听,F5自研服务支持两种方式,即主动调用和回调模式。
主动调用:F5自研服务首先发起一个HTTP请求到Marathon的/v2/events接口,Marathon会将应用的改变动作发送到建立的HTTP连接中。
回调模式:F5自研服务向Marathon注册自己的地址,当Marathon上的应用发生改变时会主动向F5自研服务发送HTTP请求从而通知F5自研服务做出相应的动作。
以上两种监听模式可以通过环境变量MARATHON_USE_EVENT_STREAM切换,服务启动时默认开启回调模式将自身地址注册到Marathon从而接收Marathon的事件通知。
当Marathon上应用实例发生改变时通过向F5自研服务发送HTTP请求然后调用EventBus,EventBus接收到调用请求后会调用MarathonEventHandler处理机从而根据F5资源池名称触发更新F5上资源池成员的操作,即下述步骤S3。
步骤S3:当上述S2步骤中F5自研服务MarathonEventHandler处理机监听到Marathon上应用实例发生改变后会通过调用handleF5Update方法触发更新F5资源池的操作。
首先从MarathonEvent事件流中获取发生变化的应用详细信息,包括Marathon上的应用APP_ID和该应用对应的F5资源池名称(F5_POOL_NAME)。
然后解析Marathon发送的事件类型并执行对应操作:
1)若此事件为应用实例停止(app_terminated_event),则根据该应用对应的F5_POOL_NAME调用F5的接口获取其所有的资源池成员然后逐个删除。
2)若此事件为应用状态更新(status_update_event),则根据应用APP_ID获取其在Marathon上的全部实例并循环获取每个应用实例对应的IP地址和端口号。然后根据该应用所对应的F5资源池名称调用F5接口更新资源池成员(IP地址和端口号),更新逻辑为遍历资源池成员并与Marathon上获取的实例IP和端口号作比对:若此实例已存在则不做操作;若此实例不存在则添加它到资源池成为新的资源池成员;若某资源池成员不存在对应实例则将它从资源池中删除。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (4)
1.一种基于F5适配器的容器云平台服务注册发现方法,其特征在于,包括以下步骤:
1)在采用mesos+marathon+docker技术的容器云平台发布应用后,marathon触发事件,并为每个应用的容器实例分配IP端口作为对外提供服务的入口,所述的marathon为每个应用进行编排配置,包括docker启动参数、资源使用限制、编排约束条件和其他高级参数,将F5_POOL_NAME作为高级参数写入应用的编排配置中,所述的每个应用包含多个实例,每个实例有对应的宿主机IP和Marathon为其分配的端口号,marathon针对应用和应用实例的所有操作,包括应用创建、发布、暂停、扩容、缩容和删除,均产生对应的事件流,即MarathonEvent;
2)F5适配器对接服务,并监听marathon事件,获取最新的应用实例的服务地址,具体包括以下步骤:
21)当用户在容器云平台发布应用操作时,容器实例数发生变化的请求发送到marathon;
22)F5适配器通过MarathonEventHandler处理机监听该Marathon事件,F5适配器接到通知后调用marathon应用接口,获取应用实例更新后的IP地址和端口信息,当F5适配器MarathonEventHandler处理机监听到Marathon上应用实例发生改变后通过调用handleF5Update方法触发更新F5资源池,具体包括以下步骤:
221)从MarathonEvent事件流中获取发生变化的应用详细信息,包括Marathon上的应用APP_ID和该应用对应的F5资源池名称F5_POOL_NAME;
222)解析Marathon发送的事件类型并执行对应操作,则有:
若此事件为应用实例停止,则根据该应用对应的F5资源池名称F5_POOL_NAME调用F5的接口获取其所有的资源池成员然后逐个删除;
若此事件为应用状态更新,则根据应用的APP_ID获取其在Marathon上的全部实例并循环获取每个应用实例对应的IP地址和端口号,然后根据该应用所对应的F5资源池名称F5_POOL_NAME调用F5接口更新资源池成员,包括IP地址和端口号;
3)F5适配器将获取的应用实例的服务地址批量注册到F5设备上,实现容器云平台的服务注册发现。
2.根据权利要求1所述的一种基于F5适配器的容器云平台服务注册发现方法,其特征在于,所述的步骤22)中,F5适配器通过以下两种模式实现对Marathon事件的监听:
主动调用模式:F5适配器发起一个HTTP请求到Marathon的/v2/events接口,Marathon将应用的改变动作发送到建立的HTTP连接中;
回调模式:F5适配器向Marathon注册自己的地址,当Marathon上的应用发生改变时会主动向F5适配器发送HTTP请求从而通知F5适配器做出相应的动作。
3.根据权利要求2所述的一种基于F5适配器的容器云平台服务注册发现方法,其特征在于,F5适配器的两种监听模式通过环境变量MARATHON_USE_EVENT_STREAM切换,服务启动时默认开启回调模式将自身地址注册到Marathon从而接收Marathon的事件通知。
4.根据权利要求1所述的一种基于F5适配器的容器云平台服务注册发现方法,其特征在于,所述的更新资源池成员的更新方法具体为:
遍历资源池成员并与Marathon上获取的实例IP和端口号作比对,若此实例已存在则不做操作,若此实例不存在则添加它到资源池成为新的资源池成员,若某资源池成员不存在对应实例则将它从资源池中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910725382.7A CN110445861B (zh) | 2019-08-07 | 2019-08-07 | 一种基于f5适配器的容器云平台服务注册发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910725382.7A CN110445861B (zh) | 2019-08-07 | 2019-08-07 | 一种基于f5适配器的容器云平台服务注册发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110445861A CN110445861A (zh) | 2019-11-12 |
CN110445861B true CN110445861B (zh) | 2021-10-22 |
Family
ID=68433667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910725382.7A Active CN110445861B (zh) | 2019-08-07 | 2019-08-07 | 一种基于f5适配器的容器云平台服务注册发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110445861B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821327A (zh) * | 2021-10-14 | 2021-12-21 | 北京皮尔布莱尼软件有限公司 | 一种实例调度方法、系统及计算设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111874A (zh) * | 2014-02-13 | 2014-10-22 | 西安未来国际信息股份有限公司 | 一种云计算环境中虚拟主机的高并发高可靠负载均衡软件架构设计 |
CN106131213A (zh) * | 2016-08-17 | 2016-11-16 | 深圳市金证科技股份有限公司 | 一种服务管理方法和系统 |
CN106331065A (zh) * | 2016-08-15 | 2017-01-11 | 众安在线财产保险股份有限公司 | 一种用于具有服务容器的主机系统的代理应用以及系统 |
CN107229520A (zh) * | 2017-04-27 | 2017-10-03 | 北京数人科技有限公司 | 一种数据中心操作系统 |
CN107566184A (zh) * | 2017-09-22 | 2018-01-09 | 天翼电子商务有限公司 | 一种资源统一管理方法及其系统 |
CN107667517A (zh) * | 2015-06-03 | 2018-02-06 | 瑞典爱立信有限公司 | 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 |
CN108243055A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信集团浙江有限公司 | 一种容器云自动发现与注册系统及方法 |
CN109639818A (zh) * | 2018-12-27 | 2019-04-16 | 北京城市网邻信息技术有限公司 | 一种云环境下的服务发现方法、装置、服务器和存储介质 |
-
2019
- 2019-08-07 CN CN201910725382.7A patent/CN110445861B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111874A (zh) * | 2014-02-13 | 2014-10-22 | 西安未来国际信息股份有限公司 | 一种云计算环境中虚拟主机的高并发高可靠负载均衡软件架构设计 |
CN107667517A (zh) * | 2015-06-03 | 2018-02-06 | 瑞典爱立信有限公司 | 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 |
CN106331065A (zh) * | 2016-08-15 | 2017-01-11 | 众安在线财产保险股份有限公司 | 一种用于具有服务容器的主机系统的代理应用以及系统 |
CN106131213A (zh) * | 2016-08-17 | 2016-11-16 | 深圳市金证科技股份有限公司 | 一种服务管理方法和系统 |
CN108243055A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信集团浙江有限公司 | 一种容器云自动发现与注册系统及方法 |
CN107229520A (zh) * | 2017-04-27 | 2017-10-03 | 北京数人科技有限公司 | 一种数据中心操作系统 |
CN107566184A (zh) * | 2017-09-22 | 2018-01-09 | 天翼电子商务有限公司 | 一种资源统一管理方法及其系统 |
CN109639818A (zh) * | 2018-12-27 | 2019-04-16 | 北京城市网邻信息技术有限公司 | 一种云环境下的服务发现方法、装置、服务器和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于容器云的微服务系统;杨迪;《电信科学》;20180920;第34卷(第9期);正文第169-177页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110445861A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099918B (zh) | 容器化环境中的集群的实时迁移 | |
CN110377395B (zh) | 一种Kubernetes集群中的Pod迁移方法 | |
US10193977B2 (en) | System, device and process for dynamic tenant structure adjustment in a distributed resource management system | |
JP4637842B2 (ja) | クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知 | |
US11630692B2 (en) | Efficient worker utilization | |
US9253265B2 (en) | Hot pluggable extensions for access management system | |
EP2869197A1 (en) | Automated procedure for kernel change | |
CN108984266B (zh) | 一种虚拟机的管理方法、装置及系统 | |
RU2653292C2 (ru) | Перенос служб через границы кластеров | |
US20060020858A1 (en) | Method and system for minimizing loss in a computer application | |
US11190459B2 (en) | Connection pool management | |
US8380951B1 (en) | Dynamically updating backup configuration information for a storage cluster | |
CN109168328B (zh) | 虚拟机迁移的方法、装置和虚拟化系统 | |
US11366682B1 (en) | Automatic snapshotting for recovery of instances with local storage | |
US10666560B2 (en) | Maintaining apparent connectivity during virtual switch servicing | |
CN105357042B (zh) | 一种高可用集群系统及其主节点和从节点 | |
US7979867B2 (en) | Managing a device in a distributed file system, using plug and play | |
CN106331065A (zh) | 一种用于具有服务容器的主机系统的代理应用以及系统 | |
CN114064414A (zh) | 一种高可用的集群状态监控方法及系统 | |
WO2022037268A1 (zh) | 一种容器管理方法、设备以及介质 | |
CN110445861B (zh) | 一种基于f5适配器的容器云平台服务注册发现方法 | |
WO2019109948A1 (zh) | PaaS的管理方法、装置及存储介质 | |
US9032014B2 (en) | Diagnostics agents for managed computing solutions hosted in adaptive environments | |
CN110737510A (zh) | 块设备管理系统 | |
CN113626054A (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 |