大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述高可用之故障演练相关的知识,希望能为你提供帮助。
随着业务的发展以及互联网技术的更新迭代,企业的信息系统规模越来越大,架构越来越复杂。海量数据、高并发请求和与日俱增的系统复杂度一起出现,很有可能是预料之中或预料之外的各种故障。不管我们是否愿意接受,故障总是无法完全避免的。
故障演练是一种遵循混沌工程实验原理的解决方案,提供丰富的故障场景模拟[如CPU负载过高、网络延迟、丢包、磁盘写满、I/O飙高、内存溢出(Out OfMemory,OOM)等],能够帮助分布式系统提升容错性和可恢复性。故障演练建立了一套标准的演练流程,包含准备阶段、执行阶段、检查阶段和恢复阶段,通过4个阶段的流程,覆盖用户从计划到还原的完整演练过程,并通过可视化的方式清晰地呈现给用户。
在线上环境隔离真实流量的情况下,提前模拟产生任何可能发生的故障,来观察系统的反应,判断系统的可靠性和容错能力,验证各种预期策略。故障演练是应用高可用能力测评的核心。总体来说,故障演练主要有以下目标:
故障演练的目的在于演练常态化、故障标类化、演练智能化。用常态化的演练驱动稳定性提升,而不是大促前进行补习;丰富故障场景,定义好最小故障场景和处理手段;基于架构和业务分析的智能化演练,根据应用架构智能推荐故障演练场景,沉淀行业故障演练解决方案。故障演练主要应用在如下场景:
【高可用之故障演练】1)预案有效性:过去的预案测试时,线上没有问题,所以就算测试结果符合预期,也有可能是意外,但是现象被掩藏了。
2)PaaS层是否健壮:通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常。
3)监控告警:通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确,通知渠道是否可用等,提升监控告警的准确性和时效性。
4)故障复现:故障的后续行为是否真的有效,完成质量如何。只有真实重现和验证,才能完成闭环。发生过的故障也应该时常拉出来演练,看是否有劣化趋势。
5)架构容灾测试:主备切换、负载均衡、流量调度等为了容灾而存在的手段的时效性和效果,容灾手段本身的健壮性如何。
6)参数调优:限流的策略调优、告警的阈值、超时值设置等。
7)故障模型训练:有针对性地制造一些故障,给做故障定位的系统制造数据。
8)故障突袭、联合演练:通过蓝军、红军的方式锻炼队伍,以战养兵,提升DevOps能力。通过故障突袭,随机对系统注入故障,考查相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人员定位与解决问题的能力。
通过把历史发生过的故障沉淀成通用化的模型记录到系统中,既可以对历史问题进行回放,也会对一些新应用进行定向化的演练,提前发现问题,推动问题修复和架构改造。把故障以场景化的方式沉淀,以可控成本在线上模拟故障,让系统和工程师平时有更多实战机会,加速系统、工具、流程、人员的进步。故障演练在实际应用系统中承担着问题发现、问题验证、高可用经验沉淀的作用。
推荐阅读
- # yyds干货盘点 # 盘点对Python列表中每个元素前面连续重复次数的数列统计
- Dolphinscheduler任务失败告警脚本
- AR和VR的七大开源平台
- ansible批量安装node-exporter
- #yyds干货盘点# MySQL - 存储引擎
- socket编程
- 如何做一个微信答题小程序
- [OpenCV实战]31 使用OpenCV将一个三角形仿射变换到另一个三角形
- Flutter 专题108 图解 PageView 滑动页面预览小尝试 #yyds干货盘点#