亚马逊AWS官方博客

AWS Fault Injection Simulator – 通过对照实验提高弹性

AWS 为您提供构建高度可靠的系统所需的组件:多区域(每个都有多个可用区)、Amazon CloudWatch(指标、监控和警报)、Auto Scaling负载均衡、多种形式的跨区域复制等等。如果您根据架构完善的框架中提供的指南将这些组件构建在一起,即使单个组件出现故障,您的系统应该也能继续运行。

但是,只有执行了正确的测试后,您才会知道情况确实如此。混沌工程(以“灾难大师”Jesse RobbinsAmazon.com 早期所做的开创性工作为基础,随后由 Netflix Chaos Monkey 发扬光大)这一相对较新的领域着重于通过创建破坏性事件、观察系统的响应方式以及实施改进来向应用程序施加压力。除了指出需要改进的领域之外,混沌工程还可帮助发现需要进一步监控和发出警报的盲点、发现曾经隐藏的实施问题,并为您提供提高运营技能的机会,同时缩短恢复时间。要了解有关此主题的更多信息,请首先从我的同事 Adrian Hornsby 撰写的混沌工程 – 第 1 部分开始。

隆重推出 AWS Fault Injection Simulator (FIS)
今天,我们隆重推出AWS Fault Injection Simulator (FIS)。这项新服务将通过注入故障并让您了解发生的情况,来帮助您对 AWS 工作负载执行对照实验。您将了解系统如何应对各种类型的故障,而且您还将更好地了解故障模式。您可以首先在预生产环境中运行实验,然后逐步将其作为 CI/CD 工作流的一部分运行,最终在生产环境中运行。

每个 AWS Fault Injection Simulator (FIS) 实验针对一组特定的 AWS 资源并对其执行一系列操作。我们将推出对 Amazon Elastic Compute Cloud (EC2)Amazon Elastic Container Service (ECS)Amazon Elastic Kubernetes Service (EKS)Amazon Relational Database Service (RDS) 的支持,并将对更多资源和操作的支持纳入 2021 年的路线图。您可以按类型、标记、ARN 或对特定属性的查询来选择目标资源。如果满足一个或多个停止条件(根据 CloudWatch 警报的定义),您也可以停止实验。因此,如果实验对关键业务或运营指标产生意外影响,可以快速终止实验。

使用 AWS Fault Injection Simulator (FIS)
让我们创建一个实验模板来运行实验吧! 我将使用四个 EC2 实例,并且所有实例都标记为测试模式

四个 EC2 实例

我首先打开 FIS 控制台,并单击 Create experiment template (创建实验模板)

FIS 控制台主页

我输入 Description (描述) 并选择 IAM 角色。角色授予 FIS 对选定资源执行操作所需的权限,以便执行实验:

设置描述和 IAM 角色

接下来,我来执行实验所需的操作。首先,我单击 Add action (添加操作)

准备添加操作

然后我来定义我的第一个操作 – 我想让部分 EC2 实例(在本例中标记为测试模式)停止五分钟,并确保我的系统仍然保持运行状态。我做出选择,单击 Save (保存)

接下来,我为实验选择目标资源(本例中为 EC2 实例)。我单击 Add target (添加目标),为目标命名,并指出它由我的所有 EC2 实例(在当前区域中)组成,这些实例的标签为 Mode,值为 Test。我还可以选择随机实例或所有与标签或“资源”过滤条件匹配的实例的百分比。再次,我做出选择,单击 Save (保存)

设置目标

我可以为实验选择一个或多个停止条件(CloudWatch 警报)。如果触发警报,实验将停止。这是一种安全机制,可确保本地故障不会引发全面停机。

设置停止条件

最后,我为实验添加标签,并单击 Create experiment template (创建实验模板)

添加标签并创建实验

可以将我的模板作为实验基础进行使用了:

实验模板

要运行实验,我先选择一个模板,然后从 Actions (操作) 菜单中选择 Start experiment (开始实验)

随后,单击 Start experiment (开始实验)(我还决定添加一个标签):

我确认自己的意图,因为它可能会影响我的 AWS 资源:

确认对 AWS 资源的影响

我的实验开始运行,我可以对操作进行观察:

实验正在运行

不出所料,目标实例停止了:

我的实验得出了结论,我现在了解到如果这些实例停止,我的系统仍可继续运行:

我还可以使用 FIS API 和 FIS CLI 来创建、运行和查看实验。例如,您可以对同一目标运行不同的实验,或者对不同的目标运行同一实验。

现已推出
AWS Fault Injection Simulator (FIS) 现已推出,您可以立即使用它来运行对照实验。目前,除亚太地区(大阪)以及中国的两个区域外,所有商业 AWS 区域都已推出。这三个商业区域也正在列入路线图之中。

我们根据操作运行的分钟数来进行定价,两个或多个操作并行运行时不收取额外费用。

我们将在 2021 年增加对其他服务和其他操作的支持,敬请关随时注!

Jeff