EC2 实例再平衡建议 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

EC2 实例再平衡建议

EC2 实例再平衡建议是一个新信号,可在 Spot 实例处于较高的中断风险时通知您。信号可能比该两分钟的 Spot 实例中断通知更早到达,从而让您有机会主动管理 Spot 实例。您可以决定将工作负载再平衡到不处于较高中断风险的新的或现有的 Spot 实例。

Amazon EC2 并不总能在两分钟的 Spot 实例中断通知之前发送再平衡建议信号。因此,再平衡建议信号可能会随两分钟的中断通知一起到达。

注意

再平衡建议仅支持 2020 年 11 月 5 日 00:00 UTC 之后推出的 Spot 实例。

您可以采取的再平衡操作

以下是您可以采取的一些可能的再平衡操作:

正常关闭

当您收到 Spot 实例的再平衡建议信号时,您可以启动实例关闭过程,其中可能包括确保在停止进程之前完成它们。例如,您可以将系统或应用程序日志上传到 Amazon Simple Storage Service (Amazon S3)、关闭 Amazon SQS 工作程序或从域名系统 (DNS) 中完成取消注册。您还可以将工作保存在外部存储器中,稍后再恢复工作。

防止计划新工作

当您收到 Spot 实例的再平衡建议信号时,您可以阻止在实例上计划新工作,同时继续使用实例直到计划的工作完成。

主动启动新的替换实例

您可以配置 Auto Scaling 组、EC2 实例集或 Spot 实例集,以在系统发出再平衡建议信号时自动启动替换 Spot 实例集。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Amazon EC2 Auto Scaling 容量再平衡以及本用户指南中适用于 EC2 实例集 的 容量再平衡 和适用于 Spot 实例集的 容量再平衡

监控再平衡建议信号

您可以监控再平衡建议信号,以便在发出该信号时,可以执行上一节中指定的操作。再平衡建议信号作为发送到 Amazon EventBridge(以前称为 Amazon CloudWatch Events)的事件和 Spot 实例上的实例元数据提供。

监控再平衡建议信号:

使用 Amazon EventBridge

当发出 Spot 实例的再平衡建议信号时,该信号的事件将被发送到 Amazon EventBridge。如果 EventBridge 检测到与规则中定义的模式匹配的事件模式,则 EventBridge 调用规则中指定的一个或多个目标。

以下是再平衡建议信号的示例事件。

{ "version": "0", "id": "12345678-1234-1234-1234-123456789012", "detail-type": "EC2 Instance Rebalance Recommendation", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-2", "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"], "detail": { "instance-id": "i-1234567890abcdef0" } }

下列字段构成规则中定义的事件模式:

"detail-type": "EC2 Instance Rebalance Recommendation"

确定该事件是再平衡建议事件

source": "aws.ec2

识别来自 Amazon EC2 的事件

创建 EventBridge 规则

当事件模式与规则匹配时,您可以编写 EventBridge 规则并自动执行要采取的操作。

下面的示例可创建 EventBridge 规则,以便在 Amazon EC2 每次发出再平衡建议信号时发送电子邮件、短信或移动推送通知。信号作为 EC2 Instance Rebalance Recommendation 事件发出,这将触发规则定义的操作。

要为再平衡建议事件创建 EventBridge 规则

  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  2. 选择 Create rule (创建规则)

  3. 输入规则的 Name (名称) 和“Description (描述)”(可选)。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  4. 对于 Define pattern (定义模式),选择 Event pattern (事件模式)

  5. Event matching pattern (事件匹配模式) 下,选择 Custom pattern (自定义模式)

  6. Event pattern(事件模式)框中,添加以下模式以匹配 EC2 Instance Rebalance Recommendation 事件,然后选择 Save(保存)。

    { "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance Rebalance Recommendation" ] }
  7. 对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  8. 确认 Enable the rule on the selected event bus (在选定的事件总线上启用该规则) 已开启。

  9. 对于 Target(目标),选择 SNS topic(SNS 主题)以在事件发生时发送电子邮件、短信或移动推送通知。

  10. 对于 Topic(主题),选择现有主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息,请参阅Amazon Simple Notification Service 开发人员指南中的使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送

  11. 对于 Configure input(配置输入),选择电子邮件、短信或移动推送通知的输入。

  12. 选择创建

有关更多信息,请参阅 Amazon EventBridge 用户指南中的为 Amazon 服务创建规则事件模式

使用实例元数据

实例元数据类别 events/recommendations/rebalance 提供为 Spot 实例发出再平衡建议信号的大致时间 (UTC)。

我们建议您每 5 秒检查一次再平衡建议信号,这样您就不会错过对再平衡建议采取行动的机会。

如果 Spot 实例收到再平衡建议,则信号发出的时间将显示在实例元数据中。您可以按如下方式检索信号发出的时间。

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" –v http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

以下是示例输出,表示为 Spot 实例发出的再平衡建议信号时间 (UTC)。

{"noticeTime": "2020-10-27T08:22:00Z"}

如果尚未为实例发出信号,则 events/recommendations/rebalance 不存在,您将在尝试检索该信号时收到 HTTP 404 错误。

使用再平衡建议信号的服务

Amazon EC2 Auto Scaling、EC2 实例集和 Spot 实例集使用再平衡建议信号让您可以轻松地在运行中的实例收到两分钟的 Spot 实例中断通知之前,主动使用新的 Spot 实例扩展您的队列,从而帮助您维护工作负载的可用性。您可以让这些服务监控和主动响应影响您的 Spot 实例可用性的更改。有关更多信息,请参阅下列内容: