亚马逊AWS官方博客

使用 AWS Fault Injection Service 演示多区域和多可用区应用程序弹性



AWS Fault Injection Service(FIS)可帮助您将混沌工程大规模付诸实践。今天,我们推出了新的场景,这些场景可以让您演示在 AWS 可用区完全断电,或从一个 AWS 区域到另一个 AWS 区域的连接中断时,您的应用程序是否按预期运行。

您可以使用这些场景进行实验,从而确信您的应用程序(无论是单区域还是多区域)在出现问题时可以按预期运行,帮助您更好地了解直接和间接依赖项,并测试恢复时间。在对应用程序进行全面测试,确认其运行符合预期后,您就可以将实验结果用于合规性目的。当与 AWS 韧性监测中心的其他部分结合使用时,FIS 可以帮助您全面了解应用程序的整体弹性状况

场景简介
我们在 2021 年推出了 FIS,帮助您在 AWS 应用程序上进行对照实验。在我为公布新功能而撰写的文章中,我向大家展示了如何创建实验模板,以及如何使用这些模板进行实验。这些实验是使用强大的低级别操作构建的,这些操作会影响特定类型的指定 AWS 资源组。例如,以下操作在 EC2 实例和自动扩缩组上运行:

我们以这些操作为构建块,最近推出了 AWS FIS 场景库。库中的每个场景都定义了事件或条件,您可以使用它们来测试应用程序的弹性:

每个场景都被用于创建实验模板。您可以按原样使用场景,也可以以任何模板为基础,根据需要对其进行自定义或增强。

这些场景可以针对同一 AWS 账户或其他 AWS 账户中的资源:

新场景
鉴于以上背景,让我们来看看新的场景。

可用区可用性:电源中断 – 此场景会暂时“断开”单个可用区中的一组目标资源,包括 EC2 实例(包括 EKS 和 ECS 集群中的实例)、EBS 卷、自动扩缩组、VPC 子网、Amazon ElastiCache for Redis 集群和 Amazon Relational Database Service(RDS)集群。在大多数情况下,您将在具有多个可用区资源的应用程序上运行,但也可以在单可用区应用程序上运行,并将中断作为预期结果。它以单个可用区为目标,还允许您禁止一组指定的 IAM 角色或自动扩缩组在实验期间启动新实例或启动停止的实例。

新的操作和目标体验使您可以一目了然地查看所有内容,包括场景中的操作及其影响的 AWS 资源类型:

这些场景包括用于自定义实验模板的参数:

高级参数—定位标签允许您控制标签键和值,这些键和值将用于定位实验的目标资源:

跨区域:连接—此场景会阻止测试区域中的应用程序访问目标区域中的资源。这包括来自附加到 VPC 的 EC2 实例、ECS 任务、EKS 容器组(pod)和 Lambda 函数的流量。它还包括流经中转网关VPC 对等连接的流量,以及跨区域 S3 和 DynamoDB 复制。这个场景开箱即用,已经提供了如下功能:

此场景运行 3 小时(除非更改 disruptionDuration 参数),并以指定方式将测试区域与目标区域隔离,使用高级参数控制用于选择隔离区域中受影响 AWS 资源的标签:

您可能还会发现,此场景中使用的 DisruptPause 操作本身就很有用:

例如,aws:s3:bucket-pause-replication 操作可用于暂停区域内的复制。

注意事项
以下是关于新场景的注意事项:

区域—新场景已在所有提供 FIS 的商业 AWS 区域推出,无需额外付费。

定价—您需要为运行的实验所消耗的操作时间付费;有关更多信息,请参阅 AWS Fault Injection Service 定价页面。

命名—该服务前身为 AWS Fault Injection Simulator。

—— Jeff