Балансировщик нагрузки приложений AWS - подождите некоторое время перед выполнением проверки работоспособности

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

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

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

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

Похоже, что льготный период проверки работоспособности в автоматическом масштабировании не мешает ELB отправлять запросы проверки работоспособности новому экземпляру. У вас есть идея, как заставить проверку работоспособности ELB ждать некоторое время после того, как автоматическое масштабирование создаст новый экземпляр?


person Krasimir Atanasov    schedule 09.04.2020    source источник


Ответы (1)


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

Итак, в этом случае вы должны добавить что-то вроде этого в сценарий запуска / данные пользователя:

INSTANCE_ID="`wget -q -O - http://instance-data/latest/meta-data/instance-id`" && \
aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE --instance-id $INSTANCE_ID --lifecycle-hook-name test-hook --auto-scaling-group-name test-asg --region eu-west-1 

Обязательно установите aws cli во время других установок на сервере и измените имя жизненного цикла, имя группы и регион, чтобы они подходили.

Дополнительную информацию можно найти здесь: https://medium.com/faun/autoscaling-like-a-pro-how-to-use-ec2-auto-scaling-lifecycle-hooks-the-right-way-7e1e6c952d3c

person Jeppe Mariager-Lam    schedule 18.10.2020