使用 Amazon Fault Injection Service 演示多区域和多可用区应用程序弹性
文章作者:Jeff
Amazon Fault Injection Service(FIS)可帮助您将混沌工程大规模付诸实践。今天,我们推出了新的场景,这些场景可以让您演示在亚马逊云科技可用区完全断电,或从一个亚马逊云科技区域到另一个亚马逊云科技区域的连接中断时,您的应用程序是否按预期运行。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
您可以使用这些场景进行实验,从而确信您的应用程序(无论是单区域还是多区域)在出现问题时可以按预期运行,帮助您更好地了解直接和间接依赖项,并测试恢复时间。在对应用程序进行全面测试,确认其运行符合预期后,您就可以将实验结果用于合规性目的。当与亚马逊云科技韧性监测中心的其他部分结合使用时,FIS 可以帮助您全面了解应用程序的整体弹性状况。
场景简介
我们在 2021 年推出了 FIS,帮助您在亚马逊云科技应用程序上进行对照实验。在我为公布新功能而撰写的文章中,我向大家展示了如何创建实验模板,以及如何使用这些模板进行实验。这些实验是使用强大的低级别操作构建的,这些操作会影响特定类型的指定亚马逊云科技资源组。例如,以下操作在 EC2 实例和自动扩缩组上运行:
![](https://static001.geekbang.org/infoq/65/657272db65addc9ea810f19462dfad00.png)
我们以这些操作为构建块,最近推出了 Amazon FIS 场景库。库中的每个场景都定义了事件或条件,您可以使用它们来测试应用程序的弹性:
![](https://static001.geekbang.org/infoq/c8/c86601983f593e5c00fd4d5993ef9f2c.png)
每个场景都被用于创建实验模板。您可以按原样使用场景,也可以以任何模板为基础,根据需要对其进行自定义或增强。这些场景可以针对同一亚马逊云科技账户或其他亚马逊云科技账户中的资源:
![](https://static001.geekbang.org/infoq/42/428cdd0386f7353b90502a149de8cffd.png)
新场景
鉴于以上背景,让我们来看看新的场景。
可用区可用性:电源中断 – 此场景会暂时“断开”单个可用区中的一组目标资源,包括 EC2 实例(包括 EKS 和 ECS 集群中的实例)、EBS 卷、自动扩缩组、VPC 子网、Amazon ElastiCache for Redis 集群和 Amazon Relational Database Service(RDS)集群。在大多数情况下,您将在具有多个可用区资源的应用程序上运行,但也可以在单可用区应用程序上运行,并将中断作为预期结果。它以单个可用区为目标,还允许您禁止一组指定的 IAM 角色或自动扩缩组在实验期间启动新实例或启动停止的实例。
新的操作和目标体验使您可以一目了然地查看所有内容,包括场景中的操作及其影响的亚马逊云科技资源类型:
![](https://static001.geekbang.org/infoq/d8/d858e1ac726c15899162666bd4016953.png)
这些场景包括用于自定义实验模板的参数:
![](https://static001.geekbang.org/infoq/fd/fd8d17343358e0bd97f32b03c3b2200b.png)
高级参数—定位标签允许您控制标签键和值,这些键和值将用于定位实验的目标资源:
![](https://static001.geekbang.org/infoq/7f/7f007056a859b9a48c64527ddca441c4.png)
跨区域:连接—此场景会阻止测试区域中的应用程序访问目标区域中的资源。这包括来自附加到 VPC 的 EC2 实例、ECS 任务、EKS 容器组(pod)和 Lambda 函数的流量。它还包括流经中转网关和 VPC 对等连接的流量,以及跨区域 S3 和 DynamoDB 复制。这个场景开箱即用,已经提供了如下功能:
![](https://static001.geekbang.org/infoq/22/2231be2a30c37b30d9210f193ffb2d3c.png)
此场景运行 3 小时(除非更改 disruptionDuration 参数),并以指定方式将测试区域与目标区域隔离,使用高级参数控制用于选择隔离区域中受影响亚马逊云科技资源的标签:
![](https://static001.geekbang.org/infoq/6b/6bda911ea78780094e7fec0b74263aca.png)
您可能还会发现,此场景中使用的 Disrupt 和 Pause 操作本身就很有用:
![](https://static001.geekbang.org/infoq/24/24a7a1251720751a5d79c9f7903cf1dd.png)
例如,aws:s3:bucket-pause-replication 操作可用于暂停区域内的复制。
注意事项
以下是关于新场景的注意事项:
区域—新场景已在所有提供 FIS 的商业亚马逊云科技区域推出,无需额外付费。
定价—您需要为运行的实验所消耗的操作时间付费;有关更多信息,请参阅 Amazon Fault Injection Service 定价页面。
命名—该服务前身为 Amazon Fault Injection Simulator。
文章来源:
评论