目录
一、稳定性保障的三个层面
稳定性保障有三个层面:
1、常态下的稳定性(功能稳定性,通常功能测试覆盖);
2、高压下的稳定性(通过性能测试覆盖);
3、异常时的稳定性(通过故障演练中,评估紧急预案、限流、告警等覆盖)
二、故障演练目的
监控能否及时发现问题;
预案是否符合预期;
人员操作是否熟练;
发现未知问题;
总之:”大事化小,小事化了“,小异常不引发故障,小故障不引发大故障。从稳定性来看,故障演练也是稳定性保障的一部分。
三、如何选择故障演练场景
总体原则:选择发生概率大,产生影响大的故障,进行演练
具体梳理来源:
1、分析历史年限上的故障
总结比较有价值的故障(更多故障移步:典型故障分析,故障的坑,你踩了多少遍),对其原因分类:
配置变更
实现问题;
发布问题;
系统异常(自身/第三方问题);
2、系统强弱依赖分析
原则:允许强依赖异常时影响系统的主流程;但不允许弱依赖异常时影响系统的主流程
梳理系统的强弱依赖;
为弱依赖异常时添加异常处理/降级等;
模拟弱依赖异常情况,验证预期;
3、核心中间件异常分析
异常场景:高并发下,中间件容易异常
常见的场景:A,B共用中间件C, A流量猛增,B流量不变的情况下,应该确保C做了预案,B不会受级联影响
四、故障演练的环境
预发环境:流量下无法验证告警
线上:为避免风险,选择低流量场景
线上高压下:压测场景下做
统一演练:例如 缓存不可用,网络不可用,机房不可用等,可以配合对应部门同学一起演练。
五、演练的风险控制
干扰与影响平衡:上下游业务同时演练可能互相干扰;但不同时演练又可能影响上下游业务
感悟
之前写过如何减少线上故障的博客,但实质上,故障演练也是减少线上故障的方法之一。故障演练常态化,自动化建设也是持续稳定性建设的一部分工作。故障演练,其实是对系统、对人员配合的综合锤炼。只有常常演练,才能保证系统能力、人员能力不退化。