
谷歌云专家服务团队发布了一份关于云端分布式系统混沌工程的详细指南。该指南强调,人为制造故障对构建弹性架构至关重要。它为用户在谷歌云环境中实施可控的故障测试提供了开源方案和实用指南。
谷歌云团队纠正了业界的一个重大误解:认为云服务提供商的服务等级协议(SLA)和内置的弹性功能会自动保护业务应用程序。实际上,如果应用程序在设计时没有考虑故障处理或持续提供服务,那么一旦云服务中断,它们就会崩溃。无论云基础设施做了什么承诺,这种情况都会发生。
谷歌云提出的这个框架基于五大核心原则。首先,团队必须建立“稳态假设”,在引入干扰前明确系统正常行为的特征。其次,实验应复现系统在生产环境中可能遭遇的真实场景。第三点,也是最特别的一点,混沌实验必须在具有真实流量和依赖关系的运行环境中执行——这正是混沌工程与传统测试方法的根本差异。
第四个原则强调自动化,将弹性测试视为一个持续的过程,而不是一次性事件。团队必须对实验的“爆炸半径”进行全面评估。他们应根据应用程序和服务对客户的影响程度,将其划分为不同的层级。
实际实施时有六项关键实践:
定义稳态指标,如延迟和吞吐量。
制定可测试的假设,例如“删除这个容器 Pod 不会影响用户登录”。
从受控的非生产环境开始,然后扩展到生产环境。
直接向系统注入故障,以及通过环境变化间接注入故障。
使用 CI/CD 管道自动化实验执行。
从结果中得出可操作的见解。
为了降低初始难度,谷歌云建议使用Chaos Toolkit。这是一个开源的 Python 框架。它采用模块化设计,并支持谷歌云、Kubernetes 等的扩展库。PSO 团队在 GitHub 上提供了一整套的谷歌云实践指南。每项指南都针对一个特定的故障场景。
自诞生以来,混沌工程已经发生了巨大的变化。全球各大科技公司如今都在采用这种方法,并根据自身的基础设施需求创造了各自独特的实践方式。
2010 年,Netflix 创建了Chaos Monkey。它通过随机停止 Netflix 云架构中的实例和服务来测试系统的稳定性。该公司后来增加了Simian Army。这个套件包括像 Latency Monkey 这样的工具,用于增加人为延迟,以及 Chaos Kong,用于模拟整个可用分区出现故障的情况。2014 年,Netflix 引入了故障注入测试(FIT),通过向其系统推送故障模拟元数据,实现对故障注入的更精确控制。
与 Netflix 开发 Chaos Monkey 同时,谷歌推出了灾难恢复测试,或称为DiRT。谷歌使用它定期和自动检查其系统,确保它为任何灾难做好了准备,能够进行响应和恢复。随着时间的推移,DiRT 变成了一个年度的多日测试活动,旨在检查谷歌整体的灾难准备情况。
亚马逊云科技也有自己的混沌工程工具,称为AWS故障注入模拟器(FIS)。这是一个全托管的服务,用于运行故障注入实验。它模拟现实世界的 AWS 故障,并与 Chaos Toolkit 和Chaos Mesh等工具搭配使用。这扩展了可供测试的故障类型。亚马逊云科技还创建了一个场景库。它提供预构建的实验,用于测试应用程序的弹性,并简化混沌工程实践。FIS 场景库的特色实验包括 AZ 可用性:电源中断。这模拟了特定分区停电的情况。
现代架构已经从单体系统转变为基于微服务的系统。这种变化增加了服务依赖的复杂性。云环境非常分散,因为应用程序分布在许多可用分区和区域中。这种分布方式会产生许多潜在的故障点,而传统的测试方法往往难以全面覆盖这些问题。
声明:本文为 InfoQ 翻译,未经许可禁止转载。
原文链接:https://www.infoq.com/news/2025/11/谷歌-chaos-engineering/








评论