3.2.4 故障演练及冬奥实践
线上问题发生的概率很小,但我们不能等真实问题发生后来验证监控和应急能力,日常就应该完成验证。在故障演练中,我们模拟线上真实发生问题的场景,以检测我们的系统快恢能力和故障应急流程。对于任何一个大型赛事活动,故障演练都是必要的。
故障演练一般可以分为如下三个部分:
设计故障:这是最重要的部分,设计的故障要能贴合真实的场景,才能产生演练价值。通常情况下可以从实际发生过的历史故障库出发去设计。故障可以根据严重性划分为轻型、中型、重大等级别。典型的轻型故障举例:高可用SLB单可用区服务宕机、单台ECS宕机、CDN单节点异常等;典型的中型故障举例:单宿主机上批量ECS宕机、IDC机房单路掉电、特定产品控制台不可用、物理专线设备宕机等;典型的重大故障举例:IDC机房多路掉电机器全宕、可用区核心网络设备主备光缆全断、大规模DDoS攻击导致可用区级出口带宽打挂等。那么在设计故障时,也应区分不同的级别等级,以检查系统在不同级别下的恢复能力。
故障注入:我们不可能在生产环境下实际触发故障,那么就需要对应的手段真实模拟线上故障。为此可以有两种方法,其一是在安全生产环境直接触发故障,安全生产环境可以是99%的模拟流量和1%的线上流量,这样影响范围可控,而且可以根据需要调整线上流量比例,比如模拟重大故障时把线上流量关闭;其二是故障模拟系统,一般是和产品监控告警系统一同开发,可以注入并不存在的故障触发产品侧监控告警,以模拟真实场景。
故障处理与复盘:在注入故障后需要观察系统快恢自愈能力,以及演练故障处理流程,针对产品或者流程暴露的问题做针对性的复盘。产品问题一般性为不触发流量切换、流量切换延迟、主备切换不合预期、宕机未自动迁移拉起等。故障处理流程我们将在"保障阵型与流程管理"这个章节详细描述。在北京冬奥,我们一共做了若干次故障演练,得益于阿里云完善的故障管理体系,我们有可以直接注入模拟故障的故障模拟系统,和一整套故障处理流程规范。其中典型的几次如下:
通过故障演练,我们检查了系统快恢能力,及整套故障处理流程规范的应急动作熟练度,为赛时的快速故障处理打下了良好的基础。