Масштабирование группы автоматического масштабирования AWS в событии

Я использую группу автомасштабирования для добавления и удаления дополнительных экземпляров моего приложения. Я использую загрузку ЦП в качестве параметра масштабирования и задаюсь вопросом, что происходит, когда экземпляр запускает программу, а загрузка ЦП становится ниже 65% (т.е. пороговое значение).

Ожидает ли экземпляр завершения программы или завершает экземпляр в этот момент? Если он завершит экземпляр в этот момент, это может привести к потере данных/несогласованности данных.

Любая помощь будет оценена по достоинству.


person Sunil Kumar    schedule 15.08.2020    source источник


Ответы (3)


Если вы хотите предотвратить или задержать экземпляр во время масштабирования, вы можете взглянуть на хуки жизненного цикла.

Включив это автоматическое масштабирование, можно отправить уведомление что должно произойти конкретное действие экземпляра (уменьшение или увеличение масштаба). Используя комбинацию сервисов (таких как SNS, Lambda, SSM и т. д.), вы сможете программно уведомить экземпляр, который должен быть прекращен, после чего вы можете предпринять любые необходимые действия.

Прекращение работы экземпляра будет происходить до тех пор, пока не появится подтверждение группе автоматического масштабирования о том, что она была завершена, что приведет к ее прекращению. Кроме того, хук жизненного цикла будет иметь тайм-аут, если к моменту истечения тайм-аута не будет получено подтверждения, то завершение все равно произойдет.

person Chris Williams    schedule 15.08.2020

Я думаю, что вы ищете политику прекращения

Посмотрите на эту ссылку:

https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#default-termination-policy

И по моему опыту, экземпляр будет остановлен вне зависимости от того, что на нем запущено.

person Ash Blake    schedule 15.08.2020

Ожидает ли экземпляр завершения программы или завершает экземпляр в этот момент.

К сожалению, я не дождался. ASG работает за пределами ваших инстансов и не имеет отношения к каким-либо программам, работающим на вашем инстансе.

Сказав это, есть несколько вещей, которые вы можете сделать, некоторые из которых описаны в:

Вообще говоря, вы должны разрабатывать свои приложения так, чтобы они были независимыми. Это означает, что приложения должны знать, что они могут быть остановлены в любое время. Один из способов добиться этого — использовать внешние системы хранения, такие как S3 или EFS, которые будут сохранять данные между завершениями.

Другой способ — использовать защиту от завершения. . В этом случае приложение поставит свой экземпляр в это состояние в начале обработки, а затем, когда расчет завершится, защита от завершения будет снята.

person Marcin    schedule 15.08.2020