2015-09-16 3 views
3

Мне нужно запустить сценарий очистки каждый раз, когда мой экземпляр места запланирован для завершения. У меня есть две причин для прекращения:EC2 уведомление о прекращении экземпляра экземпляра при уменьшении масштаба

  1. Ценовой, например спота превышает мое предложение
  2. даунскейлинга вызванного масштабирования политики AutoScaling группы (на основе среднего использования кластера процессора в 5 мин, случайный экземпляр прекращается).

Мне понравился простой скрипт ниже, который я нашел на блоге 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 
+0

Но что, если экземпляр EC2 не находится в группе Auto scaling? В моем случае я использую EMR, в котором все экземпляры являются точными экземплярами в группе экземпляров задачи. И в EMR нет концепции группы автомасштабирования. Как я могу получить сигнал о завершении? – devsda

ответ

2

Auto Scaling Hooks позволяют создать уведомление о событии, что экземпляр будет прекращено (или запущен).

Вверху: вы получаете намного больше времени. По умолчанию используется 60 минут, и вы можете отправить сообщение с биением, чтобы продлить время, или вы можете уведомить об этом службу при очистке. Если вы не ответите, время истекает и заканчивается.

The down-side: уведомления не поступают непосредственно в экземпляр, как это делают предупреждения о прекращении спот. Они отправляются в SNS или SQS. Вам нужно либо подписаться на экземпляр на уведомления (подпишитесь каждый экземпляр на тему SNS при запуске экземпляра, например), либо вам нужно будет запустить свою собственную систему для управления сообщениями и общения с экземплярами.

+0

+1 для вашего ответа. Просто чтобы подтвердить, вы считаете, что уведомление не будет доступно по URL-адресу завершения? –

+0

Я не верю, что они будут, поскольку случай пятна не «исправлен» по причинам ценообразования, который, как представляется, является целью завершения времени ... но я мог ошибаться. –

+1

Имеет смысл, я проверю его. Спасибо за ваше время. –

Смежные вопросы