CN115801799A - 基于kubernetes多集群管理中间件生命周期的系统 - Google Patents
基于kubernetes多集群管理中间件生命周期的系统 Download PDFInfo
- Publication number
- CN115801799A CN115801799A CN202211329224.8A CN202211329224A CN115801799A CN 115801799 A CN115801799 A CN 115801799A CN 202211329224 A CN202211329224 A CN 202211329224A CN 115801799 A CN115801799 A CN 115801799A
- Authority
- CN
- China
- Prior art keywords
- middleware
- cluster
- resources
- module
- resource
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于kubernetes多集群管理中间件生命周期的系统,中间件管控单元:协调整个中间件集群的生命周期,通过调用缓存单元监听各类中间件CR资源,然后调用多集群API和中间件扩展模块接口,完成对中间件集群声明周期的管理;中间件计算单元:负责管理MWS资源的生命周期,通过调用kubernetes的api,为中间件管控单元提供中间件实例状态汇聚管理和上报;缓存单元:封装元信息与资源。本发明通过多kubernetes管理技术将中间件的高可用能力扩展至kubernetes多集群,提供在kubernetes多集群上架、部署、扩容中间件服务的能力。
Description
技术领域
本发明涉及中间件管理技术领域,具体地,涉及基于kubernetes多集群管理中间件生命周期的系统。
背景技术
专利文献CN114489686A公开了一种多云部署下的中间件解耦方法,包括:在应用代码运行时,中间件解耦框架获得应用代码对第一中间件接口的请求信息;所述应用代码是根据第一中间件接口对应用进行编程获得的;根据应用程序提供的解耦配置信息,将所述对第一中间件接口的请求信息转发到第二中间件接口;其中,解耦配置信息指用于将应用使用的中间件从第一中间件转换为第二中间件的配置信息;应用程序和中间件解藕框架在一个应用中进行部署运行。专利文献CN114489686A主要用于解耦中间件服务和不同的云环境的网络、存储的抽象和适配,
专利文献CN113849266A公开了一种多Kubernetes集群的业务部署方法及装置,通过获取业务部署的配置信息,根据配置信息,从多个Kubernetes集群中确定进行业务部署的目标Kubernetes集群,在目标Kubernetes集群为多个的情况下,在多个目标Kubernetes集群中同时进行业务部署,业务部署包括部署至少一种资源,业务部署的配置信息包括至少一种资源的配置信息。专利文献CN113849266A是在多个目标Kubernetes集群同时进行业务部署,避免了分别在多个Kubernetes集群上逐一进行业务部署,而产生大量的重复工作的问题,提高业务部署的效率。
但是上述专利文献均没有关注中间件的多集群部署调度以及故障恢复。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于kubernetes多集群管理中间件生命周期的系统。
根据本发明提供的一种基于kubernetes多集群管理中间件生命周期的系统,包括:
中间件管控单元:协调整个中间件集群的生命周期,通过调用缓存单元监听各类中间件CR资源,然后调用多集群API和中间件扩展模块接口,完成对中间件集群声明周期的管理;
中间件计算单元:负责管理MWS资源的生命周期,通过调用kubernetes的api,为中间件管控单元提供中间件实例状态汇聚管理和上报;
缓存单元:封装元信息与资源。
优选地,所述中间件管控单元,包括:中间件产品模块、多集群控制模块、多集群扩展模块、实例管理模块;
所述中间件产品模块:进行中间件产品上架、修改、下架;
所述多集群控制模块:维护中间件服务的生命周期,包括:中间件创建、中间件删除、中间件扩容、中间件升级和故障恢复;
所述多集群扩展模块:维护中间件服务在不同kubernetes集群的差异点,对中间件进行配置;
所述实例管理模块:定义不同类型中间件控制接口,供各类中间件通过插件部署至中间件管控单元,通过k8s api封装为接口,为中间件管控单元提供统一的运维原语,提供接口包含:实例重启、实例配置修改;
优选地,所述中间件创建:监听中间件服务资源对象和MWC资源,并创建MWS资源对象调用缓存模块,在中间件计算单元创建MWS资源对象,然后调用实例管理模块,对创建的MWS资源对象的实体进行协调、通信,完成中间件集群的建立,然后更新中间件服务资源对象并分发到中间件计算单元;
中间件删除:监听中间件服务资源对象,监听到删除事件后,获取对应的MWC资源,然后调用中间件管控单元的缓存模块,在中间件计算单元删除MWS资源对象;
所述中间件扩容:监听MWO资源,监听到创建事件后,获取MWO资源类型,如获取类型为横向扩容,则依次则创建运维分片资源对象,由中间件计算单元创建新的节点并加入集群;如果获取类型为纵向扩容,则先选择一个中间件计算单元创建运维分片资源对象,由中间件计算单元复制新节点后进行数据复制和服务切换。
优选地,所述多集群扩展模块,包括:
CAR模块:进行在不同架构kubernetes集群的差异化配置,通过自定义CAR资源定义中间件计算单元集群的镜像架构、内核配置、权限配置,中间件计算单元将集群内CAR资源与MWS资源进行merge,生成对应的workload资源配置和服务接入资源配置,完成部署;
NAR模块:进行不同网络架构的kubernetes集群的差异化配置,通过自定义NAR资源定义MWS资源创建的网络相关的配置,定义使用网络负载资源暴露服务接口的集群,与MWS资源进行merge生成对应的中间件集群的网络配置;
SAR模块:进行不同存储架构的kubernetes集群的差异化配置,根据自定义SAR资源处理storageClass以及存储备份接口;
SSR模块:进行不同调度策略的kubernetes集群的差异化配置,不同的集群选择不同的scheduler策略。
优选地,所述插件定义了以下接口:
接口ClusterMeet:定义了MWS资源对应中间件实例相互通信并组成集群的功能,中间件服务根据中间件网络协议实现该接口,中间件选择以下模式实现该接口:A)中间件原生调用:调用对应集群的网络接口,组成集群,组成集群;B)修改对应分片的配置文件,中间件实例完成配置更新后加载配置,组成集群;C)自动发现组成集群,只需实现空接口;
接口Election:定义了MWI资源中间件选主的功能,在集群创建之后如需手动触发选主的中间件需要实现该接口,自动选主的中间件只需实现空接口;
接口Sync:定义了中间件实例间同步数据的能力,组成集群后自动同步数据的中间件只需实现空接口;
接口Restart:定义了中间件实例重启的功能,调用对应集群的网络接口或者通过中间件计算单元的实例管理模块完成重启;
接口Rebuild:定义了中间件实例重新创建的功能,调用对应集群的网络接口或者通过中间件计算单元实例管理模块完成实例重建Pod并加入集群;
接口Rebalance:定义了中间件实例平衡分片的功能;
接口Backup:定义了中间件实例备份数据的功能,该接口会调用对应中间件计算单元的存储扩展模块;
接口HealthCheck:定义了MWI资源是否正常运行;
接口Recover:聚合接口,定义了中间件实例恢复服务的功能,根据HealthCheck的状态和MWI资源的状态事件进行对应的服务恢复实现;
接口Failover:定义了中间件实例故障转移的功能;
接口ClusterFailover:定义了MWS资源实例故障,需要迁移至故障所在中间件计算单元之外的其他中间件计算单元的功能。
优选地,所述中间件计算单元,包括:中间件控制器模块、网络扩展模块、存储扩展模块;
所述中间件控制器模块:对中间件资源进行管理,创建和维护所需的存储、网络和计算资源,并完成实例状态更新;
所述网络扩展模块:对中间件计算单元所在集群的网络负载进行统一管理,在创建、更新MWS资源时,调用网络扩展模块来创建不同类型的网络负载,并提供接口进行网络地址查询;
所述存储扩展模块:对中间件计算单元所在集群的storageclass和存储备份接口,在创建、更新MWS资源时,创建不同类型的存储pvc,在MWS备份数据时完成存储备份和恢复接口。
优选地,所述缓存单元,包括:元数据缓存模块、资源缓存模块;
所述元数据缓存模块:封装元数据对象;启动时调用多集群APIServer获取全量资源对象元信息存储于缓存中,然后通过http长连接监听多集群API事件,通过list-watch模式增量更新缓存元信息,提供多集群APIServer的调用接口;
所述资源缓存模块:封装MWI资源和MWE资源;启动时资源缓存模块调用元数据缓存模块,获取所有Cluster资源,建立多个进程获取该集群的MWI资源、MWS资源、MWE资源、MWC资源、MWO资源存储于缓存,监听多集群API事件,通过list-watch模式增量更新缓存;其中,缓存单元数据存储于Redis中,Redis采用集群模式部署在多套kubernetes集群中。
优选地,所述MWS资源定义以下状态:
状态Creating:MWS资源创建中,需要等待中间件控制器模块完成对应资源的创建;
状态WaitForOperation:MWS资源完成基础资源的创建,等待中间件控制单元进行服务协调;
状态Coordinating:中间件控制单元协调中间件服务;
状态Running:MWS资源正常运行;
状态Failed:MWS资源出现故障;
状态Offline:集群宕机下线状态;
MWS资源中status对每个中间件实例进行状态管理,包含以下字段:
字段NAME:中间件实例POD名称;
字段ADDR:中间件实例节点IP和端口;
字段EXTERNALADDR:中间件实例负载均衡IP和端口;
字段ROLE:Standby、Master、Slave三个状态,分别表示待定角色、主角色、从角色;
字段STATUS:RUNNING、ERROR、UNKOWN三个状态,分别表示运行中、错误、未知。
优选地,在中间件管控单元添加中间件计算单元,创建Cluster、CAR、NAR、SAR、SSR资源;
在中间件管控单元添加中间件服务,创建MWD资源,部署中间件管控单元服务;
在中间件管控单元创建中间件实例,并维持中间件实例的正常运行。
优选地,所述在中间件管控单元创建中间件实例,并维持中间件实例的正常运行,含创建中间件服务,并服务各实例节点部署至中间件计算单元中,包括:
模块A:创建REDISMWI资源对象,输入部署模式、资源大小、参数模板、自定义配置、安全认证配置、服务版本的参数;
模块B:创建REDISMWE资源对象,输入中间件计算单元ID、内核参数配置、选择引用的CAR、NAR、SAR、SSR资源对象;其中,根据NAR对象,选择网络负载均衡类型、输入IP资源池对象名称、输入服务的端口;根据SAR对象,选择存储pvc的读写类型和删除策略、输入需要的存储资源池大小、备份接口需要备份数据的目录;
模块C:创建MWC资源对象,中间件管控单元完成对应中间件服务的部署并创建REDISMWS资源对象到中间件计算单元;其中,
多集群控制模块通过缓存模块监听REDISMWC资源,在监听到ADD事件后,读取REDISMWC资源及关联的REDISMWI和REDISMWE资源;
多集群控制模块组装REDISMWS资源,在控制集群创建相关分片资源,由于控制集群没有部署中间件计算控制模块,不会创建对应的副本集、存储、网络资源;
多集群控制模块调用缓存模块,向对应中间件计算节点部署REDISMWS资源,将REDISMWS资源状态修改为Creating;
中间件控制器模块监听REDISMWS资源,在监听到ADD事件后,根据REDISMWS资源创建副本集资源、配置文件资源、Service资源;
中间件控制器模块调用网络扩展模块根据负载均衡类型创建负载均衡资源,调用存储扩展模块根据存储类型、大小创建pvc资源;
中间件控制器模块检查对应资源;
中间件控制器模块检查副本集、配置文件、Service、负载均衡资源、PVC资源是否正常创建,如创建成功将状态修改为WaitForOperation,否则将状态修改为Failed;
中间件控制器模块调用缓存模块,更新REDISMWS中间件实例信息,包括以下信息:实例节点Pod名称、实例节点负载均衡地址名称、实例节点状态Standby;
多集群控制模块调用缓存模块监听REDISMWS资源,当所有资源状态变为WaitForOperation,则将所有REDISMWS资源修改为Coordinating,然后调用Redis实例管理模块创建集群;
实例管理模块的ClusterMeet接口,通过REDIS客户端连接到各个REDIS实例,通过REDIS API调用组成服务集群,对于没有实现网络管理API的中间件通过实例管理模块直接调用k8s API操作配置文件或进入实例副本执行命令;
实例管理模块调用Election、Sync接口,REDIS为空接口;
多集群控制模块调用实例管理模块的HealthCheck接口,如果集群状态健康,则调用缓存模块更新REDISMWS的状态为RUNNING,同时更新REDIS实例的状态,修改ROLE为master或slave,修改status为RUNNING;如果调用HealthCheck接口状态故障则修改REDISMWS的状态为Failed,然后记录健康检查接口错误事件;
多集群控制模块调用缓存模块查询,如REDISMWS状态为Failed则根据错误事件进行处理。
与现有技术相比,本发明具有如下的有益效果:
1、本发明主要针对在多kubernetes集群部署管理中间件集群,并提供集群级别的高可用和故障恢复能力。
2、本发明通过在多kubernetes集群分别部署controller,通过管控单元和计算单元控制器分别控制中间件生命周期,解决了单个中间件在多kubernetes集群的生命周期管理和高可用问题。
3、本发明达到了中间件服务集群级别的高可用,提升了中间件服务的可用性,能够应对路由器故障等kubernetes全局级别的故障。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为系统模块结构原理示意图。
图2为自定义资源原理示意图。
图3为服务部署状态示意图。
图4为故障恢复状态示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明提出一种基于kubernetes多集群管理中间件生命周期的方案,通过多kubernetes管理技术将中间件的高可用能力扩展至kubernetes多集群,提供在kubernetes多集群上架、部署、扩容中间件服务的能力。
本发明涉及多类CRD(Customer Resouce Definition)和对应的控制器,通过CRD承载不同的中间件管理能力:
Cluster:kubernetes的Cluster资源,用于管理中间件计算单元kubernetest集群的元数据。
集群管理资源对象:CAR(Cluster Arch Resource):实现了在不同架构kubernetes集群的差异化配置、NAR(Network Arch Resource):实现了不同网络架构的kubernetes集群的差异化配置、SAR(Storage Arch Resource):实现了不同存储架构的kubernetes集群的差异化配置、SSR(Scheduling Score Resource):实现了不同调度策略的kubernetes集群的差异化配置。
MWD(MiddleWareDefinition):MWD资源,每类中间件需要定义各自的CRD资源,实现以下能力:描述中间件服务的元数据,并负责该中间件控制器和插件控制器的生命周期管理。
MWI(MiddleWareInstance):中间件的资源对象,声明该中间件在多集群公用定义,不同种类中间件需要生命不同的MWI资源。
MWE(MiddleWareExtension):MWE资源,每个中间件所在中间件计算单元需要声明一个该资源,定义了该中间件在不同集群的差异定义,选择集群管理资源对象类型指定。
MWS(MiddleWareShared):MWS资源对象,每个中间件在中间件计算单元所在集群声明一个该资源,承载了该中间件在本集群的定义。
MWC(MiddleWareCopy):中间件MWC资源,每个中间件声明一个该资源,定义了中间件在哪几个中间件计算单元部署,声明了副本、权重、优先级。
MWO(MiddleWareOperation):MWO资源,每类中间件的每类运维操作需要声明一个该资源,定义了中间件运维操作。
根据本发明提供的基于kubernetes多集群管理中间件生命周期的系统,包括:
1、缓存单元,包括:元数据缓存模块、资源缓存模块。
所述元数据缓存模块,封装了元数据对象,如Cluster资源、MWD资源等元信息;启动时,元数据缓存模块调用多集群APIServer获取全量资源对象信息,将数据存储于缓存中,然后通过http长连接监听多集群API事件,通过list-watch模式增量更新缓存元信息,提供多集群APIServer的调用接口;
所述资源缓存模块,封装了各类MWI资源和MWE资源;启动时资源缓存模块调用元数据缓存模块,获取所有Cluster资源,建立多个进程获取该集群的MWI资源、MWS资源、MWE资源、MWC资源、MWO资源存储于缓存,监听多集群API事件,通过list-watch模式增量更新缓存。缓存单元数据存储于Redis中,Redis采用集群模式部署在多套kubernetes集群中,确保缓存高可用。
2、中间件管控单元,负责协调整个中间件集群的生命周期,通过调用缓存单元监听各类中间件CR资源,然后调用多集群API和中间件扩展模块接口,完成对中间件集群声明周期的管理。所述中间件管控单元,包括:中间件产品模块、多集群控制模块、多集群扩展模块、实例管理模块。
2.1、所述中间件产品模块,提供了进行中间件产品上架、修改、下架,中间件计算单元部署的能力。
2.2、所述多集群控制模块,负责维护中间件服务的生命周期,包括:中间件创建、中间件删除、中间件扩容、中间件升级和故障恢复等。
2.2.1、中间件创建:监听中间件服务资源对象和MWC资源,并创建MWS资源对象调用缓存模块,在中间件计算单元创建MWS资源对象,然后调用实例管理模块,对创建的MWS资源对象的实体进行协调、通信,完成中间件集群的建立,然后更新中间件服务资源对象并分发到中间件计算单元。
2.2.2、中间件删除:监听中间件服务资源对象,监听到删除事件后,获取对应的MWC资源,然后调用缓存模块,在中间件计算单元删除MWS资源对象。
2.2.3、中间件扩容:监听MWO资源,监听到创建事件后,获取MWO资源类型,如获取类型为横向扩容,则依次则创建运维分片资源对象,由中间件计算单元创建新的节点并加入集群;如果获取类型为纵向扩容,则先选择一个中间件计算单元创建运维分片资源对象,由中间件计算单元复制新节点后进行数据复制和服务切换。
2.2.4、中间件升级:与中间件纵向扩容相同。
2.3、所述多集群扩展模块,负责维护中间件服务在不同kubernetes集群的差异点,通过多集群扩展模块对中间件在不同集群的镜像、配置、启动命令、内核配置、网络配置、存储配置,多集群扩展模块主要分为以下几种:
CAR(Cluster Arch Resource):实现了在不同架构kubernetes集群的差异化配置,通过自定义CAR资源定义中间件计算单元集群的镜像架构、内核配置、权限配置,中间件计算单元将集群内CAR资源与MWS资源进行merge,生成对应的workload资源配置和服务接入资源配置,完成部署。
NAR(Network Arch Resource):实现了不同网络架构的kubernetes集群的差异化配置,通过自定义NAR资源定义MWS资源创建的网络相关的配置,定义使用网络负载资源暴露服务接口的集群,与MWS资源进行merge生成对应的中间件集群的网络配置。
SAR(Storage Arch Resource):实现了不同存储架构的kubernetes集群的差异化配置,根据自定义SAR资源处理storageClass以及存储备份接口。
SSR(Scheduling Score Resource):实现了不同调度策略的kubernetes集群的差异化配置,不同的集群可以选择不同的scheduler策略。
2.4、所述实例管理模块,定义不同类型中间件控制接口,各类中间件需要实现自定义控制接口,通过插件部署至中间件管控单元,提供中间件控制接口的管理能力,并且提供了丰富的运维管理接口,并通过k8s api封装为接口,通过实例管理模块的接口可以为中间件管控单元提供统一的运维原语,提供接口包含:实例重启、实例配置修改等;该插件定义了以下接口:
2.4.1、接口ClusterMeet:该接口定义了MWS资源对应中间件实例如何相互通信并组成集群的功能,中间件服务根据中间件网络协议实现该接口,中间件选择以下模式实现该接口:
A)中间件原生调用:调用对应集群的网络接口,组成集群:如redis通过rediscluster命令,组成集群;
B)通过中间件计算单元实例管理模块,修改对应分片的配置文件,中间件实例完成配置更新后加载配置,组成集群;
C)NONE:自动发现组成集群,只需实现空接口。
2.4.2、接口Election:该接口定义了MWI资源中间件选主的功能,在集群创建之后如需手动触发选主的中间件需要实现该接口,自动选主的中间件只需实现空接口。
2.4.3、接口Sync:该接口定义了中间件实例间同步数据的能力,组成集群后自动同步数据的中间件只需实现空接口。
2.4.4、接口Restart:该接口定义了中间件实例重启的功能,通过缓存模块调用对应集群的网络接口或者通过中间件计算单元实例管理模块完成重启。
2.4.5、接口Rebuild:该接口定义了中间件实例重新创建的功能,通过缓存模块调用对应集群的网络接口或者通过中间件计算单元实例管理模块完成实例重建Pod并加入集群。
2.4.6、接口Rebalance:该接口定义了中间件实例平衡分片的功能。
2.4.7、接口Backup:该接口定义了中间件实例备份数据的功能,该接口会调用对应中间件计算单元的存储扩展模块。
2.4.8、接口HealthCheck:该接口定义了MWI资源是否正常运行。
2.4.9、接口Recover:该接口为聚合接口,定义了中间件实例恢复服务的功能,根据HealthCheck的状态和MWI资源的状态事件进行对应的服务恢复实现。
2.4.10、接口Failover:该接口定义了中间件实例故障转移的功能。
2.4.11、接口ClusterFailover:该接口定义了MWS资源实例故障,需要迁移至其他中间件计算单元的功能。
各中间件实现上述接口后可以在多集群中管理整个中间件的生命周期。
3、中间件计算单元,负责管理MWS资源的生命周期,通过调用kubernetes的api,为中间件管控单元提供中间件实例状态汇聚管理和上报;所述中间件计算单元,包括:中间件控制器模块、网络扩展模块、存储扩展模块。
3.1、所述中间件控制器模块,负责对中间件基本的资源进行管理,与网络扩展模块、存储扩展模块通过创建和维护所需的存储、网络和计算资源,并完成实例状态更新。
MWS资源定义以下状态:
状态Creating:MWS资源创建中,需要等待中间件控制器模块完成对应资源的创建;
状态WaitForOperation:MWS资源完成基础资源的创建,等待中间件控制单元进行服务协调;
状态Coordinating:中间件控制单元协调中间件服务,进行中;
状态Running:MWS资源正常运行;
状态Failed:MWS资源出现故障,服务运行故障;
状态Offline:集群宕机下线状态。
MWS资源中status对每个中间件实例进行状态管理,包含以下字段:
字段NAME:中间件实例POD名称;
字段ADDR:中间件实例节点IP和端口;
字段EXTERNALADDR:中间件实例负载均衡IP和端口;
字段ROLE:Standby、Master、Slave三个状态,分别表示待定角色、主角色、从角色;
字段STATUS:RUNNING、ERROR、UNKOWN三个状态,分别表示运行中、错误、未知。
3.2、所述网络扩展模块,对中间件计算单元所在集群的网络负载进行统一管理,在创建、更新MWS资源时,调用网络扩展模块来创建不同类型的网络负载,包括loadbalanceservice、nodeport或者underlay类型的负载资源配置,并提供接口进行网络地址查询。
3.3、所述存储扩展模块,对中间件计算单元所在集群的storageclass和存储备份接口,在创建、更新MWS资源时,调用存储扩展模块来创建不同类型的存储pvc,在MWS备份数据时调用存储扩展模块完成存储备份和恢复接口。
本发明支持中间件服务在多集群的生命周期管理,分为以下关键场景:
在中间件管控单元纳管中间件计算单元,创建Cluster、CAR、NAR、SAR、SSR资源。中间件管控单元通过调用可以管理控制计算单元;
在中间件管控单元添加中间件服务,创建MWD资源,部署中间件管控单元服务。
在中间件管控单元创建中间件实例,并维持中间件实例的正常运行。
下面以远程字典服务Redis集群为例,将对中间件管控单元创建中间件实例,并维持中间件实例的正常运行步骤进行详细描述:
步骤1:创建REDIS中间件服务,并将服务各实例节点部署至中间件计算单元中。
步骤1.1:创建REDISMWI资源对象,输入部署模式、资源大小、参数模板、自定义配置、安全认证配置、服务版本等参数;
步骤1.2:创建REDISMWE资源对象,输入中间件计算单元ID、内核参数配置、选择引用的CAR、NAR、SAR、SSR资源对象;
步骤1.2.1:根据NAR对象,选择网络负载均衡类型、输入IP资源池对象名称、输入服务的端口;
步骤1.2.2:根据SAR对象,选择存储pvc的读写类型和删除策略、输入需要的存储资源池大小、备份接口需要备份数据的目录;
步骤1.3:创建MWC资源对象,中间件管控单元完成对应中间件服务的部署并创建REDISMWS资源对象到中间件计算单元;
步骤1.3.1:多集群控制模块通过缓存模块监听REDISMWC资源,在监听到ADD事件后,读取REDISMWC资源及关联的REDISMWI和REDISMWE资源;
步骤1.3.2:多集群控制模块组装REDISMWS资源,在控制集群创建相关分片资源,由于控制集群没有部署中间件计算控制模块,不会创建对应的副本集、存储、网络资源;
步骤1.3.3:多集群控制模块调用缓存模块,向对应中间件计算节点部署REDISMWS资源,将REDISMWS资源状态修改为Creating;
步骤1.3.4:REDIS中间件控制器模块监听REDISMWS资源,在监听到ADD事件后,根据REDISMWS资源创建副本集资源、配置文件资源、Service资源;
步骤1.3.5:REDIS中间件控制器模块调用网络扩展模块根据负载均衡类型创建负载均衡资源,调用存储扩展模块根据存储类型、大小创建pvc资源;
步骤1.3.6:REDIS中间件控制器模块检查对应资源;
步骤1.3.7:REDIS中间件控制器模块检查副本集、配置文件、Service、负载均衡资源、PVC资源是否正常创建,如创建成功将状态修改为WaitForOperation,否则将状态修改为Failed;
步骤1.3.8:REDIS中间件控制器模块调用缓存模块,更新REDISMWS中间件实例信息,包括以下信息:实例节点Pod名称、实例节点负载均衡地址名称、实例节点状态Standby;
步骤1.3.8:多集群控制模块调用缓存模块监听REDISMWS资源,当所有资源状态变为WaitForOperation,则将所有REDISMWS资源修改为Coordinating,然后调用Redis实例管理模块创建集群;
步骤1.3.9:Redis实例管理模块的ClusterMeet接口,通过REDIS客户端连接到各个REDIS实例,通过REDIS API调用组成服务集群,对于没有实现网络管理API的中间件可以通过实例管理模块直接调用k8s API操作配置文件或进入实例副本执行命令;
步骤1.3.10:Redis实例管理模块调用Election、Sync接口,REDIS为空接口;
步骤1.3.11:多集群控制模块调用调用Redis实例管理模块的HealthCheck接口,如果集群状态健康,则调用缓存模块更新REDISMWS的状态为RUNNING,同时更新REDIS实例的状态,修改ROLE为master或slave,修改status为RUNNING;如果调用HealthCheck接口状态故障则修改REDISMWS的状态为Failed,然后记录健康检查接口错误事件;
步骤1.3.12:多集群控制模块调用缓存模块查询,如REDISMWS状态为Failed则根据错误事件进行处理;
步骤1.3.12.1:如REDISMWS事件为NOCLUSTERROLE,则调用实例管理模块查看各节点的运行状态,如存在实例节点未启动则调用Restart接口重启对应节点服务,然后调用CLUSTERMEET接口建立集群,然后将status修改为RUNNING;
步骤1.3.12.2:如REDISMWS事件为NOMASTER,则调用CLUSTERMEET接口建立集群,然后将status修改为RUNNING;
步骤1.3.12.3:如REDISMWS事件为NOBALANCE,则调用实例管理接口Rebalance接口,将集群主节点重新负载,然后将status修改为RUNNING;
步骤1.3.12.4:如REDISMWS事件为NETWORKERROR,则通过实例管理接口检查网络联通性,如网络访问失败,则调用REBUILD接口重建服务,通过调用网络负载接口重新创建节点负载均衡地址,检查网络正常后修改EXTERNALADDR,重复执行1.3.9至1.3.11步骤,如重建服务后访问不通,则创建事件NETWORKFAILED事件;
步骤1.3.12.5:如REDISMWS事件为HALFMASTERDOWN,则通过缓存接口获取故障服务节点,恢复服务;
步骤1.3.12.5.1:如SLAVE实例正常运行则通过实例管理接口调用FAILOVER接口,通过调用REDIS API接口执行cluster node、cluster failover切换主节点,再选择故障主节点执行REBUILD接口重建服务,服务节点确认为RUNNING后,重复执行1.3.9至1.3.11步骤,如中途故障无法重新建立集群,则创建事件CLUSERFAILED事件;
步骤1.3.12.5.2:如SLAVE实例故障,则选择故障主节点执行REBUILD接口重建服务,服务节点确认为RUNNING后,重复执行1.3.9至1.3.11步骤,主节点恢复后将自动恢复slave节点,如中途故障无法重新建立集群,则创建事件CLUSERFAILED事件;
步骤1.3.12.6:如多集群控制模块调用实例管理模块查询报错,通过缓存模块调用中间件计算单元发现整个单元集群宕机,则添加REDISMWS事件COMPUTEOFFLINE事件;
步骤1.3.12.6.1:多集群控制模块查询REDISMWS,如参数clusterautofailover为true;则多集群控制模块调用缓存模块修改REDISMWS、REDISMWC资源,重新生产一个REDISMWS分片,集群地址根据clusterfailovername所选中间件计算单元确定,同时复制REDISMWS中的存储、网络、配置生产新的REDISMWS对象,然后重复执行步骤1.3.3至步骤1.3.11完成分片的集群级别迁移;
步骤1.3.12.6.2:多集群控制模块查询REDISMWS,如参数clusterautofailover为false,则将REDISMWS实例状态修改为Offline,然后通过实例管理模块查询故障分片的主节点及其Slave节点,在Slave调用Failover接口,然后重复执行步骤1.3.12.5.1。
上述详细说明了kubernetes多集群部署中间件服务,完成服务自愈的步骤,中间件服务在中间件集群的删除、更新、升级的统一管理通过利用本发明能够实现。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于kubernetes多集群管理中间件生命周期的系统,其特征在于,包括:
中间件管控单元:协调整个中间件集群的生命周期,通过调用缓存单元监听各类中间件CR资源,然后调用多集群API和中间件扩展模块接口,完成对中间件集群声明周期的管理;
中间件计算单元:负责管理MWS资源的生命周期,通过调用kubernetes的api,为中间件管控单元提供中间件实例状态汇聚管理和上报;
缓存单元:封装元信息与资源。
2.根据权利要求1所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述中间件管控单元,包括:中间件产品模块、多集群控制模块、多集群扩展模块、实例管理模块;
所述中间件产品模块:进行中间件产品上架、修改、下架;
所述多集群控制模块:维护中间件服务的生命周期,包括:中间件创建、中间件删除、中间件扩容、中间件升级和故障恢复;
所述多集群扩展模块:维护中间件服务在不同kubernetes集群的差异点,对中间件进行配置;
所述实例管理模块:定义不同类型中间件控制接口,供各类中间件通过插件部署至中间件管控单元,通过k8s api封装为接口,为中间件管控单元提供统一的运维原语,提供接口包含:实例重启、实例配置修改。
3.根据权利要求2所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,
所述中间件创建:监听中间件服务资源对象和MWC资源,并创建MWS资源对象调用缓存模块,在中间件计算单元创建MWS资源对象,然后调用实例管理模块,对创建的MWS资源对象的实体进行协调、通信,完成中间件集群的建立,然后更新中间件服务资源对象并分发到中间件计算单元;
中间件删除:监听中间件服务资源对象,监听到删除事件后,获取对应的MWC资源,然后调用中间件管控单元的缓存模块,在中间件计算单元删除MWS资源对象;
所述中间件扩容:监听MWO资源,监听到创建事件后,获取MWO资源类型,如获取类型为横向扩容,则依次则创建运维分片资源对象,由中间件计算单元创建新的节点并加入集群;如果获取类型为纵向扩容,则先选择一个中间件计算单元创建运维分片资源对象,由中间件计算单元复制新节点后进行数据复制和服务切换。
4.根据权利要求2所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述多集群扩展模块,包括:
CAR模块:进行在不同架构kubernetes集群的差异化配置,通过自定义CAR资源定义中间件计算单元集群的镜像架构、内核配置、权限配置,中间件计算单元将集群内CAR资源与MWS资源进行merge,生成对应的workload资源配置和服务接入资源配置,完成部署;
NAR模块:进行不同网络架构的kubernetes集群的差异化配置,通过自定义NAR资源定义MWS资源创建的网络相关的配置,定义使用网络负载资源暴露服务接口的集群,与MWS资源进行merge生成对应的中间件集群的网络配置;
SAR模块:进行不同存储架构的kubernetes集群的差异化配置,根据自定义SAR资源处理storageClass以及存储备份接口;
SSR模块:进行不同调度策略的kubernetes集群的差异化配置,不同的集群选择不同的scheduler策略。
5.根据权利要求2所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述插件定义了以下接口:
接口ClusterMeet:定义了MWS资源对应中间件实例相互通信并组成集群的功能,中间件服务根据中间件网络协议实现该接口,中间件选择以下模式实现该接口:A)中间件原生调用:调用对应集群的网络接口,组成集群,组成集群;B)修改对应分片的配置文件,中间件实例完成配置更新后加载配置,组成集群;C)自动发现组成集群,只需实现空接口;
接口Election:定义了MWI资源中间件选主的功能,在集群创建之后如需手动触发选主的中间件需要实现该接口,自动选主的中间件只需实现空接口;
接口Sync:定义了中间件实例间同步数据的能力,组成集群后自动同步数据的中间件只需实现空接口;
接口Restart:定义了中间件实例重启的功能,调用对应集群的网络接口或者通过中间件计算单元的实例管理模块完成重启;
接口Rebuild:定义了中间件实例重新创建的功能,调用对应集群的网络接口或者通过中间件计算单元实例管理模块完成实例重建Pod并加入集群;
接口Rebalance:定义了中间件实例平衡分片的功能;
接口Backup:定义了中间件实例备份数据的功能,该接口会调用对应中间件计算单元的存储扩展模块;
接口HealthCheck:定义了MWI资源是否正常运行;
接口Recover:聚合接口,定义了中间件实例恢复服务的功能,根据HealthCheck的状态和MWI资源的状态事件进行对应的服务恢复实现;
接口Failover:定义了中间件实例故障转移的功能;
接口ClusterFailover:定义了MWS资源实例故障,需要迁移至故障所在中间件计算单元之外的其他中间件计算单元的功能。
6.根据权利要求1所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述中间件计算单元,包括:中间件控制器模块、网络扩展模块、存储扩展模块;
所述中间件控制器模块:对中间件资源进行管理,创建和维护所需的存储、网络和计算资源,并完成实例状态更新;
所述网络扩展模块:对中间件计算单元所在集群的网络负载进行统一管理,在创建、更新MWS资源时,调用网络扩展模块来创建不同类型的网络负载,并提供接口进行网络地址查询;
所述存储扩展模块:对中间件计算单元所在集群的storageclass和存储备份接口,在创建、更新MWS资源时,创建不同类型的存储pvc,在MWS备份数据时完成存储备份和恢复接口。
7.根据权利要求1所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述缓存单元,包括:元数据缓存模块、资源缓存模块;
所述元数据缓存模块:封装元数据对象;启动时调用多集群APIServer获取全量资源对象元信息存储于缓存中,然后通过http长连接监听多集群API事件,通过list-watch模式增量更新缓存元信息,提供多集群APIServer的调用接口;
所述资源缓存模块:封装MWI资源和MWE资源;启动时资源缓存模块调用元数据缓存模块,获取所有Cluster资源,建立多个进程获取该集群的MWI资源、MWS资源、MWE资源、MWC资源、MWO资源存储于缓存,监听多集群API事件,通过list-watch模式增量更新缓存;其中,缓存单元数据存储于Redis中,Redis采用集群模式部署在多套kubernetes集群中。
8.根据权利要求1所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述MWS资源定义以下状态:
状态Creating:MWS资源创建中,需要等待中间件控制器模块完成对应资源的创建;
状态WaitForOperation:MWS资源完成基础资源的创建,等待中间件控制单元进行服务协调;
状态Coordinating:中间件控制单元协调中间件服务;
状态Running:MWS资源正常运行;
状态Failed:MWS资源出现故障;
状态Offline:集群宕机下线状态;
MWS资源中status对每个中间件实例进行状态管理,包含以下字段:
字段NAME:中间件实例POD名称;
字段ADDR:中间件实例节点IP和端口;
字段EXTERNALADDR:中间件实例负载均衡IP和端口;
字段ROLE:Standby、Master、Slave三个状态,分别表示待定角色、主角色、从角色;
字段STATUS:RUNNING、ERROR、UNKOWN三个状态,分别表示运行中、错误、未知。
9.根据权利要求1所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,在中间件管控单元添加中间件计算单元,创建Cluster、CAR、NAR、SAR、SSR资源;
在中间件管控单元添加中间件服务,创建MWD资源,部署中间件管控单元服务;
在中间件管控单元创建中间件实例,并维持中间件实例的正常运行。
10.根据权利要求9所述的基于kubernetes多集群管理中间件生命周期的系统,其特征在于,所述在中间件管控单元创建中间件实例,并维持中间件实例的正常运行,含创建中间件服务,并服务各实例节点部署至中间件计算单元中,包括:
模块A:创建REDISMWI资源对象,输入部署模式、资源大小、参数模板、自定义配置、安全认证配置、服务版本的参数;
模块B:创建REDISMWE资源对象,输入中间件计算单元ID、内核参数配置、选择引用的CAR、NAR、SAR、SSR资源对象;其中,根据NAR对象,选择网络负载均衡类型、输入IP资源池对象名称、输入服务的端口;根据SAR对象,选择存储pvc的读写类型和删除策略、输入需要的存储资源池大小、备份接口需要备份数据的目录;
模块C:创建MWC资源对象,中间件管控单元完成对应中间件服务的部署并创建REDISMWS资源对象到中间件计算单元;其中,
多集群控制模块通过缓存模块监听REDISMWC资源,在监听到ADD事件后,读取REDISMWC资源及关联的REDISMWI和REDISMWE资源;
多集群控制模块组装REDISMWS资源,在控制集群创建相关分片资源,由于控制集群没有部署中间件计算控制模块,不会创建对应的副本集、存储、网络资源;
多集群控制模块调用缓存模块,向对应中间件计算节点部署REDISMWS资源,将REDISMWS资源状态修改为Creating;
中间件控制器模块监听REDISMWS资源,在监听到ADD事件后,根据REDISMWS资源创建副本集资源、配置文件资源、Service资源;
中间件控制器模块调用网络扩展模块根据负载均衡类型创建负载均衡资源,调用存储扩展模块根据存储类型、大小创建pvc资源;
中间件控制器模块检查对应资源;
中间件控制器模块检查副本集、配置文件、Service、负载均衡资源、PVC资源是否正常创建,如创建成功将状态修改为WaitForOperation,否则将状态修改为Failed;
中间件控制器模块调用缓存模块,更新REDISMWS中间件实例信息,包括以下信息:实例节点Pod名称、实例节点负载均衡地址名称、实例节点状态Standby;
多集群控制模块调用缓存模块监听REDISMWS资源,当所有资源状态变为WaitForOperation,则将所有REDISMWS资源修改为Coordinating,然后调用Redis实例管理模块创建集群;
实例管理模块的ClusterMeet接口,通过REDIS客户端连接到各个REDIS实例,通过REDIS API调用组成服务集群,对于没有实现网络管理API的中间件通过实例管理模块直接调用k8s API操作配置文件或进入实例副本执行命令;
实例管理模块调用Election、Sync接口,REDIS为空接口;
多集群控制模块调用实例管理模块的HealthCheck接口,如果集群状态健康,则调用缓存模块更新REDISMWS的状态为RUNNING,同时更新REDIS实例的状态,修改ROLE为master或slave,修改status为RUNNING;如果调用HealthCheck接口状态故障则修改REDISMWS的状态为Failed,然后记录健康检查接口错误事件;
多集群控制模块调用缓存模块查询,如REDISMWS状态为Failed则根据错误事件进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211329224.8A CN115801799A (zh) | 2022-10-27 | 2022-10-27 | 基于kubernetes多集群管理中间件生命周期的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211329224.8A CN115801799A (zh) | 2022-10-27 | 2022-10-27 | 基于kubernetes多集群管理中间件生命周期的系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115801799A true CN115801799A (zh) | 2023-03-14 |
Family
ID=85434133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211329224.8A Pending CN115801799A (zh) | 2022-10-27 | 2022-10-27 | 基于kubernetes多集群管理中间件生命周期的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115801799A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737344A (zh) * | 2023-08-10 | 2023-09-12 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
CN117573295A (zh) * | 2024-01-16 | 2024-02-20 | 之江实验室 | 一种基于k8s的多集群组件管理方法、装置及计算机设备 |
-
2022
- 2022-10-27 CN CN202211329224.8A patent/CN115801799A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737344A (zh) * | 2023-08-10 | 2023-09-12 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
CN116737344B (zh) * | 2023-08-10 | 2023-11-07 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
CN117573295A (zh) * | 2024-01-16 | 2024-02-20 | 之江实验室 | 一种基于k8s的多集群组件管理方法、装置及计算机设备 |
CN117573295B (zh) * | 2024-01-16 | 2024-05-28 | 之江实验室 | 一种基于k8s的多集群组件管理方法、装置及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515776B (zh) | 业务不间断升级方法、待升级节点和可读存储介质 | |
CN111522628B (zh) | 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质 | |
CN115801799A (zh) | 基于kubernetes多集群管理中间件生命周期的系统 | |
CN111290834B (zh) | 一种基于云管理平台实现业务高可用的方法、装置及设备 | |
US10203992B2 (en) | Worker node rebuild for parallel processing system | |
CN109344000B (zh) | 区块链网络服务平台、恢复工具及其故障处理方法、存储介质 | |
CN106716360B (zh) | 支持多租户应用服务器环境中的补丁修补的系统和方法 | |
EP3276492B1 (en) | Failover and recovery for replicated data instances | |
CN103176831B (zh) | 一种虚拟机系统及其管理方法 | |
US20080155303A1 (en) | Distributed platform management for high availability systems | |
CN103647849A (zh) | 一种业务迁移方法、装置和一种容灾系统 | |
CN111125261B (zh) | 基于分布式缓存的数据传输方法 | |
CN111984274A (zh) | 一种一键自动化部署etcd集群的方法及装置 | |
CN111371599A (zh) | 一种基于etcd的集群容灾管理系统 | |
CN112667362A (zh) | Kubernetes上部署Kubernetes虚拟机集群的方法与系统 | |
CN115562911B (zh) | 虚拟机数据备份方法及装置、系统、电子设备、存储介质 | |
CN112199178B (zh) | 一种基于轻量化容器的云服务动态调度方法及系统 | |
CN113515316A (zh) | 一种新型边缘云操作系统 | |
CN111935244B (zh) | 一种业务请求处理系统及超融合一体机 | |
CN116561096A (zh) | 一种基于容器平台的数据库管理方法及系统 | |
CN115576655A (zh) | 容器数据保护系统、方法、装置、设备及可读存储介质 | |
CN114510464A (zh) | 一种高可用数据库的管理方法和管理系统 | |
CN112565416B (zh) | 基于云原生的大规模边缘安卓设备纳管系统及其纳管方法 | |
CN113835834A (zh) | 一种基于k8s容器集群计算节点的扩容方法及系统 | |
CN115048190B (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 |