Как использовать AWS SQS с автоматическим масштабированием спотовых инстансов Рабочие группы EC2 и длительные задания?

Позволь мне объяснить...

У меня есть 2 очереди SQS, которые получают запросы на выполнение легких и тяжелых заданий по созданию отчетов. (Разделение на две очереди было введено, чтобы на легкие задания не влияли тяжелые.)

SQS отправляет задания в группу автоматического масштабирования, содержащую 3 рабочих.

Рабочие - это по запросу экземпляры EC2. Я хочу изменить конфигурацию запуска и использовать спотовые экземпляры.

Дело в том, что некоторые тяжелые задания по созданию отчетов могут выполняться до 4 часов. Поэтому, если этот вид задания выполняется на работнике спотового экземпляра, который может быть прерван, возникнут дополнительные задержки и / или сложности.

Я хотел бы использовать спотовые экземпляры в качестве рабочих, но также иметь уверенность в том, что рабочий не будет прерван, если на нем выполняется задание.

Я придумал следующие подходы:

1. Ставка на спотовые инстансы по цене инстанса по требованию [это по-прежнему не защищает от прерывания, но сводит к минимуму возможность]

2. Используйте спотовые экземпляры с определенным периодом [например, 6 часов], но все же я ограничен 6 часами, и экземпляр завершается. Кроме того, я не знаю, смогу ли я установить такие настройки из конфигурации запуска.


person Kostas Demiris    schedule 26.05.2016    source источник


Ответы (1)


Я хотел бы использовать спотовые экземпляры в качестве рабочих, но также иметь уверенность в том, что рабочий не будет прерван, если на нем выполняется задание.

Вы, кажется, понимаете, что спотовые инстансы работают не так

Они ваши до тех пор, пока цена не будет снижена.

Я полагаю, что в некоторых случаях может помочь 6-часовой срок («определенная продолжительность»).

На ум приходят две идеи

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

  • внедрить транзакционную систему для ваших рабочих мест. Например, когда задание выводится из SQS, добавьте идентификатор времени / экземпляра / задания в другую постоянную систему, то есть в таблицу базы данных. Затем пусть что-нибудь опрашивает таблицу каждые несколько минут и проверяет, есть ли instanceid. Когда задание, наконец, успешно завершится, попросите исполнителя удалить его из таблицы базы данных. Если в ходе опроса обнаруживается, что экземпляр ушел, повторно отправьте задание в SQS.

person Vorsprung    schedule 26.05.2016