У нас есть группа автомасштабирования в AWS, которую мы в настоящее время вручную масштабируем вверх и вниз. Наша ASG в настоящее время присоединена к одной целевой группе, в которую входят все наши прод-серверы.
Перед использованием ASG мы добавляли и удаляли серверы в целевые группы вручную из консоли целевой группы, и узлы отменяли регистрацию после правильной очистки. У нас очень актуальное приложение, поэтому отсрочка отмены регистрации очень важна для нас.
Вчера при уменьшении масштаба через интерфейс ASG (в частности, путем запроса меньшего количества желаемых экземпляров) все соединения мгновенно разорвались, что привело к мгновенному сбросу сотен соединений вместо соблюдения пятиминутной политики истощения целевой группы.
Как заставить мою ASG соблюдать мою политику слива?
Я пробовал это: AWS ASG с приложением LB и сливом соединения но он не устанавливает соединения на «истощение», а просто «завершение: ожидание», и мои проверки работоспособности исправны, поэтому я не думаю, что он на самом деле останавливает новые подключения / слив.
Как описано в связанный ответ вам понадобится Крючок жизненного цикла ASG начать с.
Когда бы Прекращение событие происходит зажечь Лямбда-функция и в этой лямбде отменить регистрацию вашего экземпляра из Целевая группа с помощью отменить регистрацию. Это должно переместить его в Осушение фазы, затем подождите столько времени, сколько вам нужно, и после того, как экземпляр будет опустошен, продолжите завершение.
Надеюсь, это поможет :)
Вышеуказанное не требуется, если вам не нужно выполнять дополнительные задачи, кроме ожидания задержки отмены регистрации, установленной для целевой группы, или если экземпляр должен работать в течение некоторого времени после окончания задержки отмены регистрации. Обязательно проверьте, какова задержка отмены регистрации для целевой группы
Когда ASG масштабируется (например, при уменьшении желаемой мощности, как вы это делаете). Он должен выполнить вызов отмены регистрации для любых связанных с ним классических балансировщиков нагрузки или целевых групп, а затем дождаться завершения этих вызовов отмены регистрации, прежде чем он завершит работу экземпляра.
В TargetGroup статус должен быть указан как «слив», а в истории активности ASG он будет временно указывать состояние этого события как «Ожидание истощения соединения ELB».
Если у вас есть прерывание жизненного цикла, экземпляр будет исключен из целевой группы перед запуском ловушки жизненного цикла. Поскольку у вас был экземпляр в состоянии «завершение: ожидание», похоже, что ваш экземпляр находился в середине прерывания жизненного цикла и уже должен был дождаться задержки отмены регистрации.
Кстати, классические балансировщики нагрузки используют «слив соединения», который отличается от «задержки отмены регистрации» в Application Load Balancers. Освобождение соединения закончится, как только больше не будет подключений к этому экземпляру в полете или по истечении заданного тайм-аута, в зависимости от того, что меньше.