网易数字+大会 基于Prometheus和ChaosMesh的常态化故障演练 张慧 网易伏羲私有云保障负责人云原生社区杭州站核心负责人ChaosMesh布道师 目录 网易数字+大会 故障常态化 •什么是故障 •什么是故障常态化 •为什么要做故障常态化 故障自动化注入 •介绍混沌工具 故障自动化验证 •基于k8s和Prometheus实现故障自动化验证 常态化故障演练 •实现故障演练常态化,提升 系统稳定性 网易数字+大会 网易数字+大会 故障常态化 故障常态化 故障随时可能发生! 网易数字+大会 Github 网易数字+大会 故障常态化 什么是故障常态化 •放大故障发生的概率 网易数字+大会 •使系统不间断接受故障检验 •自动化的故障演练 网易数字+大会 故障常态化 网易数字+大会 故障常态化流程图 系统状态正常 系统发生异常 恢复系统故障 网易数字+大会 故障常态化 为什么做故障常态化 网易数字+大会 •持续不断做故障演练 •提高系统稳定性 •逐步闭环故障带来的影响 网易数字+大会 故障常态化 网易数字+大会 为什么做故障常态化 网易数字+大会 网易数字+大会 故障自动化注入 故障自动化注入 网易数字+大会 混沌工程的演进 网易数字+大会 节点故障 内核故障 网络故障 内存故障 磁盘故障 故障自动化注入 网易数字+大会 可能的故障类型 网易数字+大会 故障自动化注入 ChaosMesh架构 网易数字+大会 •用户输入、观测 •监听资源变化,进行注入/恢复 •在具体节点上进行故障注入 网易数字+大会 网易数字+大会 故障自动化验证 故障自动化验证 如何进行自动化验证 1.提升系统可观测性(Logging,Tracing,Metrics) 网易数字+大会 2.故障发生时,检查系统指标是否符合预期 3.故障恢复后,检查系统指标是否恢复正常 网易数字+大会 故障自动化验证 网易数字+大会 基于Prometheus和AlertManager实现Metrics的自动化验证 网易数字+大会 网易数字+大会 常态化故障演练 常态化故障演练 网易数字+大会 架构图 网易数字+大会 常态化故障演练 举个例子 ●假设 ○某多副本无状态应用,应当拥有容错的能力 网易数字+大会 ○在杀掉一部分节点后,应当能继续提供服务 ○可能造成的影响:QPS下降,出现部分服务端错误… ●运行实验 ○使得部分节点无法工作(注入异常方法:ChaosMesh) ●观察和检验 ○监控指标的变化符合预期(自动化验证:Prometheus) ○节点重启后,监控指标恢复正常 网易数字+大会 常态化故障演练 code5xx 网易数字+大会 •根据项目指标,容忍一定的5xx 网易数字+大会 网易数字+大会 常态化故障演练 基于ChaosMesh和Prometheus实现常态化故障演练 网易数字+大会 •对目标服务做故障注入 网易数字+大会 常态化故障演练 基于ChaosMesh和Prometheus实现常态化故障演练 网易数字+大会 •对目标服务做故障注入 •系统指标进行验证 网易数字+大会 常态化故障演练 基于ChaosMesh和Prometheus实现常态化故障演练 网易数字+大会 •对目标服务做故障注入 •系统指标进行验证 •恢复系统故障 网易数字+大会 常态化故障演练 基于ChaosMesh和Prometheus实现常态化故障演练 网易数字+大会 •对目标服务做故障注入 •系统指标进行验证 •恢复系统故障 •常态化执行 常态化故障演练 Inthefuture •增加对Logging的验证 网易数字+大会 •增加对Tracing的验证 •增加更多便捷的故障恢复hook •… 网易数字+大会 网易数字+大会 THANKS