天天看点

高可用之故障演练

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

高可用之故障演练

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

高可用之故障演练

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

  • 确保系统按我们预想的方式应对故障。
  • 发现系统中未预料到的短板和弱点。
  • 提高系统的健壮性以降低事故实际发生时对业务的影响。

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

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

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

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

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

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

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

继续阅读