2017-03-09 65 views
0

根据AWS文档,提前2分钟通知终止SPOT实例。我想通过按需实例替换通知要删除的SPOT实例来确保我的服务继续运行。替换即将被按需实例终止的现货实例

当SPOT实例标记为终止时,是否有现有方法(内置AWS配置或外部工具)自动替换按需实例的EC2 SPOT实例?

回答

2

虽然现场招标和管理有一些工具,但我不认为人们会这样做。我推荐:

  • 不要在生产/关键任务/不能停机的情况下这样做。有一个可以随时终止的单个实例会很危险(例如,如果这种自动化失败了)
  • 使用具有不同实例类型的Spot Fleet可以自动有效地保持所需的大小(在这种情况下为1)。
  • 现货车队的替代方案是两个自动扩展组,一个用于现场和一个点播(最小= 0最大= 1),并自动扩展策略以调整CloudWatch警报的大小。
2

我不认为它有可能将您的运行点实例转换为按需实例(如果这就是您要求的),但是如果您的意思是启动一个新的ondemand实例,那么通常你能做到以下几点:

您应该运行您的实例一个简单的cron作业,检查每5秒的终止通知,即

#!/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 
       # Call your script to launch on-demand instance here. 
       break 
      else 
       # Spot instance not yet marked for termination. 
       sleep 5 
     fi 
    done 
+0

这是一个很好的答案,一个有缺陷的问题。技术上从来没有保证可以启动任何特定实例类型的按需实例,没有带有容量预留的付费预留实例,并且现场实例可能被终止的一个原因是......容量不足。 –

+0

非常真实。如果你绝对需要知道你可以启动一个实例,那么保留的实例就是要走的路。 –

+0

我的理解是,实例实例是从未使用的实例池(当前未用于保留或按需的实例)获取的,并且“容量不足”的终止是由于启动了新的按需(或保留)实例(因此需要回收现货实例)。其结果是按需实例请求比在短缺情况下的现场实例请求更有可能被满足,因为只要有现货,它们就可以重新提供以提供新的按需服务。情况并非如此吗?顺便说一句,谢谢你的好回答。 – kgautron