Redis双活切换平台建设

举报
信也科技布道师 发表于 2024/11/28 11:34:02 2024/11/28
【摘要】 随着公司目前整体双活能力的建设完成,需要对Redis组件的双活能力进行演练和验证。但在实际生产环境中,面对如此大规模的Redis集群,演练过程中几个关键问题仍然存在:主从切换时间长、系统高可用要求高、运维流程复杂,并且在Redis集群切换过程中涉及到内存数据的同步,直接影响到业务系统的稳定性。 因此急需对Redis集群的双活切换操作进行自动化平台建设。

背景

随着公司目前整体双活能力的建设完成,需要对Redis组件的双活能力进行演练和验证。但在实际生产环境中,面对如此大规模的Redis集群,演练过程中几个关键问题仍然存在:主从切换时间长、系统高可用要求高、运维流程复杂,并且在Redis集群切换过程中涉及到内存数据的同步,直接影响到业务系统的稳定性。

因此急需对Redis集群的双活切换操作进行自动化平台建设,简化运维操作流程,精细化管控切换细节,提升整体的切换效率,保证双活演练稳定和高效的开展。


架构简介

目前生产业务的Redis集群已完成了双活的建设,集群整体架构为:

Master (主机房) - Slave (主机房) - Slave (备机房)

双活切换后整体架构变为:

Master (备机房) - Slave (主机房) - Slave (主机房)

Master节点从主机房切换为备机房, 整体由备机房提供服务,验证备机房的redis主节点能否撑住整体业务,以达成双活演练的目的。


手动演练流程

存在的痛点:

手动操作的演练过程中,实际遇到了以下问题:

1. 编排计划需要对大量集群进行统计和分组,导致耗时长、操作复杂。

2. 脚本执行涉及大批量数据,失败问题难以定位,且在紧急情况下难以进行回滚。

3. 执行过程缺乏可控性,大集群切换时,失败率较高。


双活切换自动化

为了解决以上痛点,我们通过自动化平台,将redis双活切换自动化:

1. 集群数据自动编排分组,降低编排难度

2. 对编排后集群分组进行一键双活切换,简化运维操作,精细化管控操作过程

3. 集群切换一键回滚,把控切换风险


集群数据自动编排分组

1. 申请页面可进行集群数据的选择,按 业务线、集群、全部的集群范围进行选择。通过设置集群并行内存限制数和集群并行数量,进行执行过程的并发量控制。


2. 集群按实例容量范围和主节点范围进行集群分布,将各范围集群划分到各个执行组中,按组维度进行执行。


3. 数据准备完成,展示整体的执行编排计划、分组数据以及整体集群切换计划执行时长。

切换时间预测


分组执行

点击确认执行,组状态变为执行中;按组的规则限制,自动拉取【未开始】的集群列表,状态变为【切换中】;集群并发限制遵循编排规则,可支持集群间(集群并行数量限制)【并发】切换;集群实例间【串行】执行主从切换操作。


页面效果:

1. 执行组详情页面可快速查看失败的集群和失败原因,使执行过程可视化。


1. 集群实例切换详情,可实时观测切换前后实例所属机房和节点角色变化情况,以及执行详情记录、执行时长和节点切换状态的展示


一键回滚

点击一键回滚后,组内【切换成功】或 【切换中】的集群会按并发限制进行回滚,回滚时也遵循并发执行规则,在紧急或正常情况下,都能执行集群的回滚操作,降低业务风险。

回滚流程:

页面效果:


整体效果

平台投入双活演练使用以后,极大降低了运维人员的操作难度,实现了Redis集群双活一键切换的目标。整体切换过程可视化程度极大提高,切换成功率稳定在100%;重试、回滚功能的增加,使切换风险也得到有效控制;切换时长精度控制在秒级别,半小时内高效安全完成切换,为双活演练的顺利完成保驾护航。


未来展望

后续会继续实现 mq 、kafka、db等组件的自动切换流程,实现各组件的全流程自动切换,使双活演练更安全、高效的进行。


作者介绍

sl 后端研发专家;msq 基础架构研发专家


招聘信息


拍码场

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。