image.png

背景

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

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

架构简介

目前生产业务的Redis集群已完成了双活的建设,集群整体架构为:
 Master (主机房) - Slave (主机房) - Slave (备机房)
双活切换后整体架构变为:
 Master (备机房) - Slave (主机房) - Slave (主机房)
Master节点从主机房切换为备机房, 整体由备机房提供服务,验证备机房的redis主节点能否撑住整体业务,以达成双活演练的目的。

image.png

手动演练流程

image.png

存在的痛点:

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

  1. 编排计划需要对大量集群进行统计和分组,导致耗时长、操作复杂。
  2. 脚本执行涉及大批量数据,失败问题难以定位,且在紧急情况下难以进行回滚。
  3. 执行过程缺乏可控性,大集群切换时,失败率较高。

双活切换自动化

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

  1. 集群数据自动编排分组,降低编排难度
  2. 对编排后集群分组进行一键双活切换,简化运维操作,精细化管控操作过程
  3. 集群切换一键回滚,把控切换风险
    image.png

集群数据自动编排分组

  1. 申请页面可进行集群数据的选择,按 业务线、集群、全部的集群范围进行选择。通过设置集群并行内存限制数和集群并行数量,进行执行过程的并发量控制。
    image.png
  2. 集群按实例容量范围和主节点范围进行集群分布,将各范围集群划分到各个执行组中,按组维度进行执行。
    image.png
  3. 数据准备完成,展示整体的执行编排计划、分组数据以及整体集群切换计划执行时长。
    image.png

分组执行

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

页面效果:

  1. 执行组详情页面可快速查看失败的集群和失败原因,使执行过程可视化。
    image.png
  2. 集群实例切换详情,可实时观测切换前后实例所属机房和节点角色变化情况,以及执行详情记录、执行时长和节点切换状态的展示
    image.png

一键回滚

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

回滚流程:
image.png

页面效果:
image.png

整体效果

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

未来展望

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

作者介绍

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

招聘信息

image.png

拍码场


信也科技布道师
12 声望10 粉丝