一种Redis集群模式上云的实现方法技术

技术编号:38930348 阅读:9 留言:0更新日期:2023-09-25 09:35
本发明专利技术提供的一种Redis集群模式上云的实现系统,所述实现系统包括:RedisCluster资源,用于采用自定义字段来描述集群的状态结合自定义的控制器来实现Redis自动创建和运维;RedisClusterBackup资源,用于描述集群的备份功能,提供多种备份方案;RedisClusterRecover资源,用于描述从备份数据中复制出一个新集群,支持同集群多次恢复以及夸集群多次恢复;RedisClusterSlots资源,用于描述一次性slots迁移动作,其中提供了源地址目的地址以及要迁移的slots通过简单的几个参数后提交到集群中,Operator根据对象的描述执行redis集群运维命令;RedisClusterOperator组件,用于Redis集群业务逻辑开发的核心组件,用于部署和管理Redis集群。帮助企业提高业务灵活性、降低运维成本、提高系统可靠性和安全性。提高系统可靠性和安全性。提高系统可靠性和安全性。

【技术实现步骤摘要】
一种Redis集群模式上云的实现方法


[0001]本专利技术涉及云计算
,尤其涉及一种Redis集群模式上云的实现方法。

技术介绍

[0002]随着云计算技术的成熟和普及,越来越多的企业开始将应用系统迁移到云端,以享受云计算带来的弹性扩容、高可用和成本优势。微服务架构是一种将应用程序拆分成多个小型服务的架构模式,每个服务都运行在自己的进程中,同时中间件成为了微服务架构中不可或缺的一部分。DevOps是一种将开发人员和运维人员紧密结合起来的文化和实践,中间件上云可以帮助DevOps实现快速部署、自动化运维和持续交付等目标。可以帮助企业快速响应业务变化和提高IT效率实现企业数字化转型落地。
[0003]在云环境中,一般使用statefulsetK8S原生资源声明部署中间件等有状态应用。StatefulSet是Kubernetes中的一个控制器(controller),用于管理有状态应用程序。与Deployment不同,Deployment主要用于无状态应用程序的管理,而StatefulSet主要用于有状态应用程序的管理,这些应用程序需要稳定的网络标识符和稳定的存储。StatefulSet可以确保每个Pod实例都具有一个唯一、稳定的主机名,该主机名遵循特定的命名规则,可以与其他Pod实例区分开来。这些Pod名在Pod生命周期内保持不变,并且可以用于与其他Pod之间进行通信即内部DNS访问地址。此外,StatefulSet还可以管理应用程序所需的稳定持久存储卷,确定集群基础的拓扑结构,确保它们在Pod迁移或重新启动后可以正确地Pod具体序号实例的原始状态。
[0004]基于标准的Statefulset方式实现RedisCluster上云存在如下问题:
[0005]Statefulset只提供了默认的逻辑入口,只能在StatefulSet的spec中通过podManagementPolicy和serviceName字段来控制StatefulSet中Pod的启动顺序,无法定制更多与集群业务相关的动作,例如在集群启动时需要分步实现首先初始化redis节点,然后将当前的节点组装成一个redis集群,最后给primary节点分配slots。在StatefulSet中无法很好的实现此类操作。
[0006]RedisCluster内部维护逻辑比较复杂,不能基于原生Statefulset通过简单的参数接口配置实现复杂的逻辑,如不能实现在容器云环境中预期的自动运维,高可用等需求,具体如滚动升级,删除逻辑。滚动升级的过程中我们希望集群稳定可靠,在滚动申请前若当前节点是primary节点则需要先主动出发一下主从切换,然后再继续执行。确保集群可持续提供服务。
[0007]现有的集群恢复方案通过采取先启动RedisCluster并为primary节点初始化好Slots后再导入原数据。此方案需要集群二次启动,初始化配置slots困难且容易出错。我们期望一次性将服务启动,并不手动维护原集群的node.conf配置。最大程度上维持原集群状态,并提供优惠的恢复方式。
[0008]现有方案对于RedisCluster的故障抵抗能力较差,无法实现对一般故障的强兼容性。

技术实现思路

[0009]鉴于上述问题,提出了本专利技术以便提供克服上述问题或者至少部分地解决上述问题的一种Redis集群模式上云的实现方法。
[0010]根据本专利技术的一个方面,提供了一种Redis集群模式上云的实现系统,所述实现系统包括:
[0011]RedisCluster资源,用于采用自定义字段来描述集群的状态结合自定义的控制器来实现Redis自动创建和运维;
[0012]RedisClusterBackup资源,用于描述集群的备份功能,提供多种备份方案;
[0013]RedisClusterRecover资源,用于描述从备份数据中复制出一个新集群,支持同集群多次恢复以及夸集群多次恢复;
[0014]RedisClusterSlots资源,用于描述一次性slots迁移动作,其中提供了源地址目的地址以及要迁移的slots通过简单的几个参数后提交到集群中,Operator根据对象的描述执行redis集群运维命令;
[0015]RedisClusterOperator组件,用于Redis集群业务逻辑开发的核心组件,用于部署和管理Redis集群。
[0016]可选的,所述RedisClusterOperator组件构建在KubernetesCRD框架之上,为Redis在Kubernetes上部署Redis集群提供了一种简单和易用的方式。
[0017]可选的,所述实现Redis自动创建和运维具体包括:
[0018]通过RedisCluster描述了集群的节点数配置,创建集群所需要的密码等配置信息并指定以SideCar的方式启动redis;
[0019]Operator在监控到RedisCluster对象创建出来后就会根据对象的描述信息创建所依赖的Secret,ConfigMap,Volume,Service依赖后启动集群。
[0020]可选的,所述RedisClusterRecover资源具体包括:
[0021]自定义一个集群数据恢复方式;
[0022]与RedisCluster资源对象协作实现了先恢复数据后启动集群一次流程完成集群恢复搭建并对外提供服务;
[0023]其中,通过自管理的pod名称功能在集群未创建出来前先将即将创建的pod名称预定好,预定节点名称后通过节点名称创建远端存储pvc为各个节点拉取存储在S3服务器上的备份的数据,待数据准备好后通过RedisCluster读取已预定好的pod名称和已经准备好的集群数据将集群拉起开始对外提供服务。
[0024]本专利技术提供的一种Redis集群模式上云的实现系统,所述实现系统包括:RedisCluster资源,用于采用自定义字段来描述集群的状态结合自定义的控制器来实现Redis自动创建和运维;RedisClusterBackup资源,用于描述集群的备份功能,提供多种备份方案;RedisClusterRecover资源,用于描述从备份数据中复制出一个新集群,支持同集群多次恢复以及夸集群多次恢复;RedisClusterSlots资源,用于描述一次性slots迁移动作,其中提供了源地址目的地址以及要迁移的slots通过简单的几个参数后提交到集群中,Operator根据对象的描述执行redis集群运维命令;RedisClusterOperator组件,用于Redis集群业务逻辑开发的核心组件,用于部署和管理Redis集群。帮助企业提高业务灵活性、降低运维成本、提高系统可靠性和安全性。
[0025]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Redis集群模式上云的实现系统,其特征在于,所述实现系统包括:RedisCluster资源,用于采用自定义字段来描述集群的状态结合自定义的控制器来实现Redis自动创建和运维;RedisClusterBackup资源,用于描述集群的备份功能,提供多种备份方案;RedisClusterRecover资源,用于描述从备份数据中复制出一个新集群,支持同集群多次恢复以及夸集群多次恢复;RedisClusterSlots资源,用于描述一次性slots迁移动作,其中提供了源地址目的地址以及要迁移的slots通过简单的几个参数后提交到集群中,Operator根据对象的描述执行redis集群运维命令;RedisClusterOperator组件,用于Redis集群业务逻辑开发的核心组件,用于部署和管理Redis集群。2.根据权利要求1所述的一种Redis集群模式上云的实现系统,其特征在于,所述RedisClusterOperator组件构建在KubernetesCRD框架之上,为Redis在Kubernetes上部署Redis集群提供了一种简单和易用的方式。3.根...

【专利技术属性】
技术研发人员:马康韩余王千钧
申请(专利权)人:北银金融科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1