AWS 自动扩展组中的 Spot 实例频繁终止(系统健康检查失败)

AWS 自动扩展组中的 Spot 实例频繁终止(系统健康检查失败)

我们有 2 个自动扩展组(一个用于按需实例,一个用于竞价实例),它们都设置为静态实例数(最小、最大和期望值都相同 - 在我们的例子中为 5)。按需组中的实例保持运行,但竞价组中的实例经常因系统健康检查而终止。EC2 管理控制台中的“扩展历史记录”选项卡中显示的已终止实例的消息如下:

“于 2014-05-07T18:06:45Z,由于系统健康检查,一个实例被停止服务。”

我不知道为什么我们的现货实例未能通过健康检查。我们的出价很高,我认为实例不应该因为现货价格而被终止(基于现货定价历史)。我还调整了启动实例的可用区,我没有看到任何差异。当我检查最近终止的实例的系统日志时,我没有看到任何可疑消息。我们对两个组都使用了私有/自定义 AMI,但当我切换到更通用的 AMI(alestic.com 上列出的“Ubuntu 12.04 LTS Precise EBS boot”映像 - ami-5db4a934)时,我看到了相同的行为。同样,我们的按需实例保持运行,并且不会失败健康检查。我们使用的是“EC2”健康检查类型。

以下是我们通过 AWS CLI 创建启动配置所使用的命令:

aws autoscaling create-launch-configuration \
--launch-configuration-name [name] \
--image-id ami-5db4a934 \
--key-name [our key] \
--security-groups [our SGs] \
--instance-type m3.xlarge \
--block-device-mappings '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 8 } } ]' \
--spot-price "1.00"

有谁知道这可能是什么,或者我们如何才能更清楚地了解为什么现货实例无法通过健康检查?

答案1

更新

我们的出价很高,我认为不应该因为现货价格而终止实例(基于现货定价历史)

现货价格之争并不是导致Amazon EC2 Spot 实例被AWS终止,另一个值得注意的是容量争用:

  • 可用竞价型实例的容量取决于对常规实例的需求,如果对于请求常规按需实例的用户来说,没有某种特定类型的实例可用,AWS 将开始终止竞价型实例以满足这些请求。
  • 事实上,到目前为止,我遇到这种情况的us-east-1频率比在其他地方要高,而且最近一个月对于新的 m3/c3/i3 实例类型系列来说,这种情况出现的频率要高得多(这是随着时间的推移容量增加的可以理解的影响)。

您可以在AWS 管理控制台或者通过 AWS CLI 的描述现货实例请求。对于高级竞价实例使用,我建议从使用投标状态代码跟踪竞标请求并将其与实例终止关联起来,以获得最佳的运营洞察力。请参阅Spot 请求的生命周期现货投标状态代码参考有关更多详细信息,AWS 终止现货的具体原因如下:

  • instance-terminated-by-price

    现货价格高于您的出价。如果您的请求是持续出价,则流程(或生命周期)将重新启动,您的出价将再次处于待评估状态。

  • instance-terminated-no-capacity

    该实例不再有任何可用的 Spot 容量。

  • instance-terminated-capacity-oversubscribed

    您的实例已终止,因为出价等于或高于您的出价的竞价请求数量已超出此池的可用容量。这意味着,即使竞价可能未发生变化,您的实例也会被中断,因为您的出价为竞价。

  • instance-terminated-launch-group-constraint

    启动组中的一个实例已终止,因此启动组约束不再得到满足。


初步答案

“于 2014-05-07T18:06:45Z,由于系统健康检查,一个实例被停止服务。”

这种误导性的信息只是在Amazon EC2 Spot 实例由于现货价格争议而终止,请参阅 AWS 团队对自动扩展消息和 Spot 实例终止

您说得对,该实例由于现货定价而被终止。

该实例在健康检查之前终止,因此它被停止服务,因为它仍然与 AS 组相关联。

虽然我不知道为什么 AWS 没有设法提供更好的集成自动扩展亚马逊 EC2然而,在这方面,考虑到这实际上是两个独立的服务,这更有意义,因此,如果“外部”现货市场后端终止 EC2 实例,从 Auto Scaling 的角度来看,它将变得“不健康”——这在获取有关 Auto Scaling 启动的实例的信息

  • 原因:在 2012-06-01T00:47:51Z,一个实例因系统健康检查而停止服务。描述:终止 EC2 实例:i-88ce28f1

    Auto Scaling 通过监控 Auto Scaling 组中实例的健康状态来维持所需的实例数量。当 Auto Scaling 收到实例不健康或终止的通知时,Auto Scaling 会启动另一个实例来代替不健康的实例。[...]

    笔记
    Auto Scaling 提供的实例终止原因不是扩展活动的结果。包括因现货价格超过其出价而被终止的实例[重点是我的]

答案2

没关系 - 这是我们这边的问题(错误的后台处理导致 Spot 实例被终止)。真尴尬!

相关内容