写点什么

七、高可用之故障演练

  • 2022 年 5 月 07 日
  • 本文字数:1334 字

    阅读完需:约 4 分钟

七、高可用之故障演练

随着业务的发展以及互联网技术的更新迭代,企业的信息系统规模越来越大,架构越来越复杂。海量数据、高并发请求和与日俱增的系统复杂度一起出现,很有可能是预料之中或预料之外的各种故障。不管我们是否愿意接受,故障总是无法完全避免的。如果对故障整体做初步画像,故障整体可以分为 IaaS 层、PaaS 层、SaaS 层的故障。

故障演练是一种遵循混沌工程实验原理的解决方案,提供丰富的故障场景模拟[如 CPU 负载过高、网络延迟、丢包、磁盘写满、I/O 飙高、内存溢出(Out OfMemory,OOM)等],能够帮助分布式系统提升容错性和可恢复性。故障演练建立了一套标准的演练流程,包含准备阶段、执行阶段、检查阶段和恢复阶段,通过 4 个阶段的流程,覆盖用户从计划到还原的完整演练过程,并通过可视化的方式清晰地呈现给用户。

在线上环境隔离真实流量的情况下,提前模拟产生任何可能发生的故障,来观察系统的反应,判断系统的可靠性和容错能力,验证各种预期策略。故障演练是应用高可用能力测评的核心。总体来说,故障演练主要有以下目标:

  • 确保系统按我们预想的方式应对故障。

  • 发现系统中未预料到的短板和弱点。

  • 提高系统的健壮性以降低事故实际发生时对业务的影响。


故障演练的目的在于演练常态化、故障标类化、演练智能化。用常态化的演练驱动稳定性提升,而不是大促前进行补习;丰富故障场景,定义好最小故障场景和处理手段;基于架构和业务分析的智能化演练,根据应用架构智能推荐故障演练场景,沉淀行业故障演练解决方案。故障演练主要应用在如下场景:

1)预案有效性:过去的预案测试时,线上没有问题,所以就算测试结果符合预期,也有可能是意外,但是现象被掩藏了。

2)PaaS 层是否健壮:通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常。

3)监控告警:通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确,通知渠道是否可用等,提升监控告警的准确性和时效性。

4)故障复现:故障的后续行为是否真的有效,完成质量如何。只有真实重现和验证,才能完成闭环。发生过的故障也应该时常拉出来演练,看是否有劣化趋势。

5)架构容灾测试:主备切换、负载均衡、流量调度等为了容灾而存在的手段的时效性和效果,容灾手段本身的健壮性如何。

6)参数调优:限流的策略调优、告警的阈值、超时值设置等。

7)故障模型训练:有针对性地制造一些故障,给做故障定位的系统制造数据。

8)故障突袭、联合演练:通过蓝军、红军的方式锻炼队伍,以战养兵,提升 DevOps 能力。通过故障突袭,随机对系统注入故障,考查相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人员定位与解决问题的能力。


通过把历史发生过的故障沉淀成通用化的模型记录到系统中,既可以对历史问题进行回放,也会对一些新应用进行定向化的演练,提前发现问题,推动问题修复和架构改造。把故障以场景化的方式沉淀,以可控成本在线上模拟故障,让系统和工程师平时有更多实战机会,加速系统、工具、流程、人员的进步。故障演练在实际应用系统中承担着问题发现、问题验证、高可用经验沉淀的作用。


发布于: 刚刚阅读数: 3
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
七、高可用之故障演练_故障演练_穿过生命散发芬芳_InfoQ写作社区