入门概念 | AWS Fault Injection Service (FIS) 是什么?


  名称由来

AWS Fault Injection Service (FIS) 的命名直观体现了其核心用途——通过“注入故障”(Fault Injection)来测试系统的健壮性。“Fault”指代系统可能遭遇的异常或中断,“Injection”强调主动引入这些异常的操作,而“Service”表明其作为 AWS 托管服务的属性。该名称延续了 AWS 工具命名的简洁风格(如 EC2、S3),同时突出其“实验性”特质——允许用户在受控环境中模拟真实世界的故障场景(如实例终止、网络延迟、API 限流),从而验证系统在压力下的表现。FIS 的命名也暗示了其与“混沌工程”(Chaos Engineering)的关联,后者通过主动制造故障来提升系统的容错能力,而 FIS 正是 AWS 为此提供的标准化工具。

  主要功能

AWS 故障注入服务的核心功能是提供可控的故障模拟环境,FIS 简化了跨一系列 AWS 服务来设置和运行受控故障注入实验的过程,并且支持用户定义并执行复杂的故障实验。
其主要能力包括,
多类型故障注入:支持模拟 EC2 实例终止、EBS 卷分离、网络丢包 / 延迟、API 调用失败(如模拟 AWS 服务限流)等,覆盖计算、存储、网络和服务调用全维度。
目标化实验设计:允许用户指定实验范围(如特定 VPC 内的实例、特定 Lambda 函数),并设置故障持续时间、影响比例(如仅对 50% 的请求注入延迟)。
自动化与集成:可通过 AWS CLI、SDK 或 CloudFormation 模板编排实验,并与 CloudWatch 监控指标联动,实时观察系统响应。
安全回滚机制:实验结束后自动清理故障状态,确保系统恢复至正常状态,避免残留配置影响生产环境。

  工作原理

FIS 通过模板化实验设计与动态执行引擎实现故障注入。用户首先在 FIS 控制台或通过基础设施即代码(IaC)工具(如 AWS CloudFormation)定义实验模板,指定故障类型(如“终止 EC2 实例”)、目标资源(如特定 Auto Scaling 组中的实例)、触发条件(如时间计划或 CloudWatch 警报)及监控指标(如 CPU 利用率、错误率)。实验执行时,FIS 服务会动态调用 AWS API(如终止 EC2 实例的 TerminateInstance 接口)或模拟网络层故障(如通过 VPC 流量镜像注入延迟),同时持续采集 CloudWatch 指标以评估系统影响。实验完成后,FIS 生成详细报告,包括故障触发时间、系统恢复速度及关键指标变化趋势,帮助用户分析系统容错能力。

  使用场景

FIS 的典型应用场景聚焦于系统韧性验证与容灾能力优化,主要包括,
高可用性测试:模拟区域级故障(如强制终止某可用区的 EC2 实例),验证多 AZ 部署的应用是否能自动切换流量并维持服务连续性。
性能瓶颈定位:通过注入 API 限流或数据库连接失败,观察系统是否触发降级策略(如返回缓存数据),避免级联故障。
成本与性能平衡:在可控环境中测试“优雅降级”逻辑(如非核心功能在资源紧张时自动关闭),优化资源分配策略。
合规性验证:满足行业监管要求(如金融系统需证明在部分节点故障时仍能保持交易完整性),通过 FIS 实验提供审计证据。例如,某电商公司使用 FIS 模拟 Black Friday 流量激增时的 API 限流,验证其自动扩容策略是否及时有效。