当今社会互联网应用越来越广泛,用户量日益剧增。在人们对互联网服务的依赖性增大的同时,也对服务的可用性和体验感有了更高的要求。那么如何保障服务在运营过程中能一直给用户提供稳定的、不间断的、可靠可信的服务呢?
例如一个教育或者加金融系统产品,如果线上出现了故障,那么可能带来巨大的损失。由于金融产品或者教育类系统架构和业务逻辑是相当复杂和链条厂,因此我们测试工程师通过单元测试、接口测试、集成测试、性能测试等来验证服务的稳定性。但尽管如此,也是远远不够的,因为错误可以在任何时间以任何形式发生,尤其是对分布式系统。所以现在很多公司开始引入混沌工程(馄饨工程国内最佳实践公司目前是阿里,大家有兴趣可以去网上看下阿里混沌工程相关实践经验),由于混沌工程需要不断的投入和积累,所以我们测试部门为了模仿和预防线上故障演练,可以先进行故障注入演练,这样成本最小,收益也最大化。
阿里按照优先分析P1和P2故障,按照IaaS、PaaS、SaaS层的角度绘制了故障画像,如下图:
目前业内模拟故障的工具比较多样化,支持的功能和场景也各有优劣。通过对比来看,chaosblade支持功能和场景比较丰富,同时社区也是比较活跃的,我们可以选择这个尝试一下
chaosblade 所支持的场景,可以参考文档:
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/
下面进行简单的故障模拟
下载路径:
https://github.com/chaosblade-io/chaosblade/releases
解压即用,无需安装
tar -zxvf chaosblade-0.9.0.linux-amd64.tar.gz
CPU压力注入:
结果如下:
内存压力注入:
效果如下:
磁盘压力注入:
效果如下:
网卡故障注入:
观察接口的话,能看到接口响应时间明显变长:
以上只是chaosblade最基本的故障注入演示,其他演练大家可以自行尝试,特别是服务层的故障注入演练作为我们测试同学是应该重点去关注和优先去尝试的,再次强烈建议大家在公司内部尝试服务层故障注入演练~
大家如果对故障演练有什么疑问或者研究的可以添加管理员微信,一起交流探讨。