【问题标题】:EC2 spot instance termination notice when downscaling缩减时 EC2 现货实例终止通知
【发布时间】:2015-12-13 08:02:48
【问题描述】:

每次安排我的 Spot 实例终止时,我都需要运行清理脚本。我有两个终止理由:

  1. 现货实例的价格超出了我的出价
  2. 自动伸缩组的伸缩策略导致的降级(基于 5 分钟内的平均集群 cpu 使用率,随机实例终止)。

我确实喜欢我在 this 博客上找到的下面的简单脚本。它涵盖了第一种情况,让我在关机前有 2 分钟的时间进行清理。

对于第二种情况,是否有一种简单的方法可以在 2 分钟内收到通知?

可能会通过相同的 url 获得警告吗?

#!/bin/bash
while true
  do
    if [ -z $(curl -Is http://169.254.169.254/latest/meta-data/spot/termination-time | head -1 | grep 404 | cut -d \  -f 2) ]
      then
        logger "Running shutdown hook."
        # Call your shutdown script here.
        break
      else
        # Spot instance not yet marked for termination.
        sleep 5
    fi
  done

【问题讨论】:

  • 但是如果 EC2 实例不在 Auto Scaling 组下怎么办?就我而言,我使用的是 EMR,其中所有实例都是任务实例组下的现货实例。而且,在 EMR 中,没有自动缩放组的概念。如何获得终止信号的通知?

标签: amazon-web-services amazon-ec2 autoscaling


【解决方案1】:

Auto Scaling Hooks 允许您创建一个事件通知,告知实例将要终止(或启动)。

好处:你有更多的时间。默认为 60 分钟,您可以发送心跳消息延长时间,也可以在清理完成时通知服务。如果您不响应,事件将超时并完成。

缺点:通知不会像现场终止警告那样发送到实例本身。他们去 SNS 或 SQS。您要么必须为实例订阅通知(例如,在实例启动时为每个实例订阅 SNS 主题),要么您需要滚动自己的系统来管理消息并与实例通信。

【讨论】:

  • +1 为您的回复。只是为了确认一下,您认为该通知不会在终止时间 url 上可用吗?
  • 我不相信他们会这样做,因为出于定价原因,现货实例没有被“回收”,这似乎是终止时间的目的......但我可能是错的。
  • 有道理,我会检查一下。感谢您的宝贵时间。
  • @Michael-sqlbot 但是如果 EC2 实例不在 Auto Scaling 组下怎么办?就我而言,我使用的是 EMR,其中所有实例都是任务实例组下的现货实例。而且,在 EMR 中,没有自动缩放组的概念。
  • @devsda 我并不是说你没有。抱歉,如果我的评论另有暗示。您引用的链接也出现在原始问题中提到的博客文章的正文中。这是我知道的用于发现 Spot 实例即将终止的唯一机制——轮询元数据端点。
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2013-07-05
相关资源
最近更新 更多