【云顾问-混沌演练】乐元素 x 腾讯云混沌演练平台:游戏业务同城双活改造最佳实践

引言

乐元素是国内休闲益智游戏领域领航企业。为了给用户提供更稳定可靠的使用体验,在2023年Q2开始,乐元素运维、业务团队联合腾讯云售后专家和技术专家,基于针对乐元素旗下休闲游戏产品《开心消消乐》展开同城双活改造项目,目的是了解并改善业务容灾部署状况,进一步强化云上业务系统的容灾能力。

1. 业务容灾部署状况与挑战

l 要求故障时快速恢复:客户业务服务全量部署在TKE环境,跨区部署改造后,需验证在单个可用区宕机的情况下,业务Pod和各云存储组件各云存储组件能否及时调度到另一个可用区,路由流量是否能响应并路由到健康可用区中,这将会直接影响客户在发生可用区重大事故时的业务恢复效率。

l 对网络时延要求较高:由于用户对游戏实时交互体验的要求较高,系统TKE集群和数据库层的网络波动、时延、丢包等会对服务质量产生很大影响。

l 对监控敏感度较高:一旦监控系统或业务指标出现任何微小的异常或变化,业务团队会立即追溯原因,对监控的及时性、全面性要求较高。

l 缺少容灾能力及预案的验证:架构优化、容灾部署,以及应急预案建设的成效,缺少真实故障场景的验证,需要通过混沌工程的引入来模拟真实故障场景,从而进行容灾能力验证。

2. 演练方案

混沌工程是一门对系统进行实验的学科。通过主动向系统中注入故障,实验者可以了解系统应对生产环境中各种失控状况的能力,以此建立信心。在本次大规模的专项演练开展之前,负责团队对整体演练方案进行了详细规划。

2.1 确定演练目标

1. 检验业务的跨可用区容灾能力,如架构是否存在单一故障点,是否能快速切换,系统的负载均衡能力如何等;

2. 检验业务监控的全面性和有效性,如资源监控、业务指标监控的覆盖度是否全面等;

3. 检验业务告警触达的及时性、应急预案的有效性以及相关人员的应急处理能力。

2.2 制定演练计划

图:混沌演练全流程

2.3 演练场景方案

本次混沌演练主要针对乐元素《开心消消乐》游戏业务,涵盖了所有运营渠道的各种业务场景。在此次演练之前,乐元素已经对业务架构部署进行了全面优化,不仅完成了线上环境的全面容器化升级,还完成了双活改造,以确保系统在任一可用区或链路发生故障时,均具备可快速恢复的应急预案。

考虑到实际业务场景和多活架构的复杂程度,业务运维团队联合腾讯云的售后专家、高可用服务专家,精心设计了涵盖接入层、应用层和数据层的故障演练方案。该方案包括27种以上的故障场景,旨在通过细致入微的演练实验,全面掌握系统的稳定性和可靠性情况,并通过演练,为业务的持续稳定运行提供坚实保障。

接入层

模拟接入层资源的故障演练场景

应用层

模拟TKE环境下的CPU利用率高、内存利用率高、Pod删除、网络丢包、进程停止、进程杀死、网络乱序、网络延迟等故障演练场景

数据层

涉及多种数据库高可用演练,如验证主节点故障后,服务是否能自动切换,恢复时长是否符合预期等

3. 演练实施

本次演练主要基于“腾讯云混沌演练平台(Chaotic Fault Generator)“进行。平台提供全生命周期故障演练服务:支持用户快捷创建演练任务,快速选取实例,对上述每个故障场景动作进行灵活编排;提供大规模实例的并行故障注入和监控观测功能;良好的可视化界面确保用户能更直观地操作演练流程,精准控制爆炸半径,保障业务安全。

3.1 创建演练任务

根据演练方案,在腾讯云混沌演练平台上提前创建演练任务,主要完成演练对象实例范围选取、故障场景动作的编排、添加业务稳态监控指标等。

图:腾讯云混沌演练平台-选取演练实例

目前平台提供100余种故障原子动作,支持用户在一次演练任务中对故障原子动作进行灵活的串行、并行组合编排,满足用户多样化的演练需求。

图:腾讯云混沌演练平台-故障动作编排示意图
图:腾讯云混沌演练平台-故障原子动作库

3.2 执行故障注入

通过混沌演练平台,执行故障注入操作。在故障动作执行过程中,可以切换至“可视化视图”,实时查看故障动作执行状态(成功/失败/执行中)和注入效果,演练进度一目了然。

图:腾讯云混沌演练平台-执行故障注入

3.3 实验效果观测

在混沌演练过程中,运维团队需要同步观察多类监控告警情况,以此判断演练效果。这个演练效果可能是来自一些IaaS层的基础云资源的监控指标,例如CPU 利用率等;也可能是QPS、延迟、在线用户人数等业务指标。在本次演练过程中,演练人员通过平台集成的监控面板和业务告警系统,对演练对象实例的监控指标进行观测。如在进行“Redis主节点不可用”故障场景模拟时,演练效果观测过程如下:

l 故障注入前:主备节点信息如下。

图:“Redis主节点不可用“故障注入前的监控信息

l 故障注入后:Redis主节点发生故障不可用,业务监控报错,期间Redis自动切到备节点,备提主;然后系统新建一个备节点,由于默认开启了自动回切,Redis主节点依然会到北京五区,如下图所示。

图:Redis主节点不可用后监控信息
图:业务监控报错信息

4. 客户收益

乐元素在本次同城双活演练中,成功应对了一系列关键业务的容灾挑战,并对系统的整体可用性和可靠性进行了全面验证,达到演练目标。在此次演练中,客户主要取得了以下两方面收益:

1. 提升了云上业务系统的稳定性以及团队的故障应急能力

l 系统容灾能力评估:模拟故障和异常,评估业务容灾架构的有效性,增强服务信心。

l 主动发现潜在隐患问题:运维和业务团队通过演练发现潜在的可用性隐患问题,并提前治理,规避现网风险。

l 验证系统可观测能力:验证了系统监控指标及告警触达的及时性和有效性。

l 完善组织故障应急预案:业务团队熟悉了混沌演练流程,提升了组织人员的应急处理能力。

2. 借助自动化演练平台,提高演练效率

如果没有一个自动化的混沌演练平台,业务运维团队需要自主完成混沌实验设计,包括编写脚本、开发和测试注入工具,才能构建起一个复杂场景的故障模拟能力。此外,演练进行过程中,监控观测数据可能分散在多个云产品平台,用户需要在各种平台之间切换,才能看到实验的效果数据。整体故障演练流程将耗费较多的人力和时间。

而腾讯云混沌演练平台就是一个面向用户提供全生命周期故障演练服务的自动化平台,它提供各个行业丰富的演练模板和100+故障原子动作,支持用户方便快捷地进行故障演练编排、自动化执行故障注入、观测监控指标、导出演练报告等,极大提高了客户运维团队落地混沌演练的效率,从而可进一步提高日常演练频次,逐步增强业务系统的稳定性。

图:腾讯云混沌演练平台使用流程