背景
随着公司目前整体双活能力的建设完成,需要对Redis组件的双活能力进行演练和验证。但在实际生产环境中,面对如此大规模的Redis集群,演练过程中几个关键问题仍然存在:主从切换时间长、系统高可用要求高、运维流程复杂,并且在Redis集群切换过程中涉及到内存数据的同步,直接影响到业务系统的稳定性。
因此急需对Redis集群的双活切换操作进行自动化平台建设,简化运维操作流程,精细化管控切换细节,提升整体的切换效率,保证双活演练稳定和高效的开展。
架构简介
目前生产业务的Redis集群已完成了双活的建设,集群整体架构为:
Master (主机房) - Slave (主机房) - Slave (备机房)
双活切换后整体架构变为:
Master (备机房) - Slave (主机房) - Slave (主机房)
Master节点从主机房切换为备机房, 整体由备机房提供服务,验证备机房的redis主节点能否撑住整体业务,以达成双活演练的目的。
手动演练流程
存在的痛点:
手动操作的演练过程中,实际遇到了以下问题:
- 编排计划需要对大量集群进行统计和分组,导致耗时长、操作复杂。
- 脚本执行涉及大批量数据,失败问题难以定位,且在紧急情况下难以进行回滚。
- 执行过程缺乏可控性,大集群切换时,失败率较高。
双活切换自动化
为了解决以上痛点,我们通过自动化平台,将redis双活切换自动化:
- 集群数据自动编排分组,降低编排难度
- 对编排后集群分组进行一键双活切换,简化运维操作,精细化管控操作过程
- 集群切换一键回滚,把控切换风险
集群数据自动编排分组
- 申请页面可进行集群数据的选择,按 业务线、集群、全部的集群范围进行选择。通过设置集群并行内存限制数和集群并行数量,进行执行过程的并发量控制。
- 集群按实例容量范围和主节点范围进行集群分布,将各范围集群划分到各个执行组中,按组维度进行执行。
- 数据准备完成,展示整体的执行编排计划、分组数据以及整体集群切换计划执行时长。
分组执行
点击确认执行,组状态变为执行中;按组的规则限制,自动拉取【未开始】的集群列表,状态变为【切换中】;集群并发限制遵循编排规则,可支持集群间(集群并行数量限制)【并发】切换;集群实例间【串行】执行主从切换操作。
页面效果:
- 执行组详情页面可快速查看失败的集群和失败原因,使执行过程可视化。
- 集群实例切换详情,可实时观测切换前后实例所属机房和节点角色变化情况,以及执行详情记录、执行时长和节点切换状态的展示
一键回滚
点击一键回滚后,组内【切换成功】或 【切换中】的集群会按并发限制进行回滚,回滚时也遵循并发执行规则,在紧急或正常情况下,都能执行集群的回滚操作,降低业务风险。
回滚流程:
页面效果:
整体效果
平台投入双活演练使用以后,极大降低了运维人员的操作难度,实现了Redis集群双活一键切换的目标。整体切换过程可视化程度极大提高,切换成功率稳定在100%;重试、回滚功能的增加,使切换风险也得到有效控制;切换时长精度控制在秒级别,半小时内高效安全完成切换,为双活演练的顺利完成保驾护航。
未来展望
后续会继续实现 mq 、kafka、db等组件的自动切换流程,实现各组件的全流程自动切换,使双活演练更安全、高效的进行。
作者介绍
sl 后端研发专家;msq 基础架构研发专家
招聘信息
拍码场
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。