教程:使用 AWS FIS 测试点实例中断

教程:使用 AWS FIS 测试点实例中断

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用 AWS FIS 测试点实例中断竞价型实例使用可用的备用 EC2 容量,与按需定价相比,可享受高达 90% 的折扣。但是,Amazon EC2 可以在需要恢复容量时中断您的竞价型实例。在使用竞价型实例时,您必须为可能发生的中断情况做好准备。有关更多信息,请参阅 Amazon EC2 用户指南中的竞价型实例中断。

您可以使用 AWS 故障注入服务 (AWS FIS) 来测试您的应用程序如何处理竞价型实例中断。使用本教程创建实验模板,该模板使用 AWS FIS aws:ec2:send-spot-instance-interruptions 操作来中断您的一个竞价型实例。

或者,要使用亚马逊 EC2 控制台启动实验,请参阅亚马逊 EC2 用户指南中的启动竞价型实例中断。

先决条件

在使用 AWS FIS 中断竞价型实例之前,请先完成以下先决条件。

1. 创建 IAM 角色

创建一个角色并附加一个策略,使 AWS FIS 能够代表您执行aws:ec2:send-spot-instance-interruptions操作。有关更多信息,请参阅 适用于 AWS FIS 实验的 IAM 角色。

2. 验证对 AWS FIS 的访问权限

确保您可以访问 AWS FIS。有关更多信息,请参阅 AWS FIS 策略示例。

3. (可选)创建竞价型实例请求

如果要为实验使用新竞价型实例,请运行请求竞价型实例的 run-instances 命令。默认在竞价型实例中断时将其终止。如果将中断行为设置为 stop,则必须将类型设置为 persistent。请勿在本教程中将中断行为设置为 hibernate,这会立即启动休眠程序。

aws ec2 run-instances \

--image-id ami-0ab193018fEXAMPLE \

--instance-type "t2.micro" \

--count 1 \

--subnet-id subnet-1234567890abcdef0 \

--security-group-ids sg-111222333444aaab \

--instance-market-options file://spot-options.json \

--query Instances[*].InstanceId

以下是 spot-options.json 文件的示例。

{

"MarketType": "spot",

"SpotOptions": {

"SpotInstanceType": "persistent",

"InstanceInterruptionBehavior": "stop"

}

}

示例命令中的 --query 选项使此命令仅返回竞价型实例 ID。下面是示例输出。

[

"i-0abcdef1234567890"

]

4. 添加标签以便 AWS FIS 可以识别目标竞价型实例

使用 create-tags 命令添加标签 Name=interruptMe 到您的目标竞价型实例。

aws ec2 create-tags \

--resources i-0abcdef1234567890 \

--tags Key=Name,Value=interruptMe

步骤 1:创建实验模板

使用 AWS FIS 控制台创建实验模板。您可以在模板中指定要运行的操作。此操作会中断带有指定标签的竞价型实例。如果有多个带有该标签的竞价型实例, AWS FIS 会随机中断其中一个。

创建试验模板打开 AWS FIS 控制台,网址https://console.aws.amazon.com/fis/为。

在导航窗格中,选择实验模板。

选择创建实验模板。

对于步骤 1,指定模板详细信息,请执行以下操作:

对于描述和名称,输入模板的描述和名称。

选择下一步,然后进入步骤 2,指定操作和目标。

对于操作,请执行以下操作:

选择添加操作。

输入操作名称。例如,输入 interruptSpotInstance。

对于操作类型,请选择 aws: ec2:。send-spot-instance-interruptions

对于 Targ et,请保留 AWS FIS 为你创建的目标。

在 “操作” 参数 “中断前持续时间” 中,指定 2 分钟 (PT2M)。

选择保存。

对于目标,请执行以下操作:

对于 AWS FIS 在上一步中自动创建的目标,选择编辑。

将默认名称替换为更具描述性的名称。例如,输入 oneSpotInstance。

验证资源类型是否为 aws:ec2:spot-instance。

对于目标方法,选择资源标签、筛选条件和参数。

对于资源标签,选择添加新标签,然后输入标签键和标签值。使用您为竞价型实例添加的标签进行中断,如本教程在先决条件中所述。

对于资源筛选条件,选择添加新筛选条件,然后输入 State.Name 作为路径并输入 running 作为值。

对于选择模式,选择计数。对于资源数量,输入 1。

选择保存。

选择下一步进入步骤 3,配置服务访问权限。

对于服务访问权限,选择使用现有 IAM 角色,然后选择您按照本教程先决条件中所述创建的 IAM 角色。如未显示此角色,请验证其是否具有必要的信任关系。有关更多信息,请参阅 适用于 AWS FIS 实验的 IAM 角色。

选择下一步进入步骤 4,配置可选设置。

(可选)对于标签,选择添加新标签,然后指定标签键和标签值。您添加的标签将应用于实验模板,而不是应用于使用此模板运行的实验。

选择 “下一步” 进入步骤 5,“查看并创建”。

查看模板并选择创建实验模板。当提示您确认时,输入create,然后选择创建实验模板。

(可选)查看 JSON 格式的实验模板

选择导出选项卡。以下是通过前述控制台程序创建的 JSON 示例。

{

"description": "Test Spot Instance interruptions",

"targets": {

"oneSpotInstance": {

"resourceType": "aws:ec2:spot-instance",

"resourceTags": {

"Name": "interruptMe"

},

"filters": [

{

"path": "State.Name",

"values": [

"running"

]

}

],

"selectionMode": "COUNT(1)"

}

},

"actions": {

"interruptSpotInstance": {

"actionId": "aws:ec2:send-spot-instance-interruptions",

"parameters": {

"durationBeforeInterruption": "PT2M"

},

"targets": {

"SpotInstances": "oneSpotInstance"

}

}

},

"stopConditions": [

{

"source": "none"

}

],

"roleArn": "arn:aws:iam::123456789012:role/AllowFISSpotInterruptionActions",

"tags": {

"Name": "my-template"

}

}

步骤 2:开始实验

您可以使用创建好的实验模板开始实验。

开始实验

您应该位于刚刚创建的实验模板的详细信息页面。否则,请选择实验模板,然后选择实验模板 ID,打开详细信息页面。

请选择开始实验。

(可选)要为实验添加标签,请选择添加新标签,然后输入标签键和标签值。

请选择开始实验。当系统提示您确认时,输入 start,然后选择开始实验。

步骤 3:跟踪实验进度

您可以跟踪正在运行的实验进度,直到实验完成、停止或失败。

跟踪实验进度

您应该位于刚开始的实验的详细信息页面。否则,请选择实验,然后选择实验 ID,打开详细信息页面。

要查看实验状态,请在详细信息窗格中选择状态。有关更多信息,请参阅实验状态。

当实验状态为正在运行时,转到下一步。

步骤 4:验证实验结果

实验操作完成后,将出现以下情况:

目标竞价型实例会收到一条实例重新平衡建议。

竞价型实例中断通知在 Amazon EC2 终止或停止您的实例前两分钟发出。

两分钟后终止或停止竞价型实例。

被 AWS FIS 停止的竞价型实例将保持停止状态,直到您重新启动该实例。

验证实验是否已经中断实例

打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/。

从导航窗格中,在单独的浏览器选项卡或窗口中打开 Spot Requests(竞价型实例请求)和 Instances(实例)。

对于 Spot Requests(竞价型实例请求),选择该竞价型实例请求。初始状态为 fulfilled。实验完成后的状态变化如下:

terminate:状态变为 instance-terminated-by-experiment。

stop:状态先变为 marked-for-stop-by-experiment,然后变为 instance-stopped-by-experiment。

对于实例,选择竞价型实例。初始状态为 Running。在您收到竞价型实例中断通知后两分钟,状态会根据中断行为发生以下变化:

stop:状态先变为 Stopping,然后变为 Stopped。

terminate:状态先变为 Shutting-down,然后变为 Terminated。

第 5 步:清理

如果您不再需要通过 stop 中断行为为实验创建的竞价型测试实例,则可以取消竞价型实例请求并终止竞价型实例。

要取消请求并终止实例,请使用 AWS CLI

使用cancel-spot-instance-requests命令取消竞价型实例请求。

aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j

运行 terminate-instances 命令,终止实例。

aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

如果您不再需要实验模板,可以将其删除。

使用 AWS FIS 控制台删除实验模板打开 AWS FIS 控制台,网址https://console.aws.amazon.com/fis/为。

在导航窗格中,选择实验模板。

选择实验模板,然后依次选择操作和删除实验模板。

当系统提示您确认时,输入 delete,然后选择删除实验模板。

相关推荐