AWS ALB Дренаж соединений не закрывает соединения после задержки демонтажа

Вопрос или проблема

У меня настроено три экземпляра в качестве целей в ALB. Отключено вытягивание соединений (задержка отмены регистрации установлена на 0 секунд). Включены стойкие сессии на 5 минут.

Я привязываюсь к одному веб-серверу и начинаю длительный (45 секунд) запрос к нему. Я сразу же удаляю сервер из группы целей. Через 45 секунд запрос завершается.

Два вопроса:

  1. Нормально ли, что выполняющийся запрос к экземпляру завершается, если вытягивание соединений отключено?

  2. Если да, то как это отличается от использования вытягивания соединений?

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

  1. Да, ваши открытые соединения должны завершаться, потому что бэкэнд-экземпляр все еще функционирует, и трафик уже направлен к нему (стойкий). Завершите этот экземпляр, и все изменится кардинально.

  2. Балансировщик нагрузки прекратит доставку трафика для новых сеансов к теперь удаленному экземпляру, но до тех пор, пока все существующие сеансы не истекут (5 минут), те, которые должны быть стойкими, останутся таковыми.

Ответ или решение

AWS ALB: Закрытие соединений при отключении от целевой группы

Введение

Согласно вашему описанию, у вас есть три инстанса, настроенных как цели в балансировщике нагрузки (ALB) Amazon Web Services (AWS). Вы задали два вопроса о поведении ALB после удаления инстанса из целевой группы, особенно в контексте соединений и долгосрочных запросов. Давайте проанализируем ситуацию и ответим на ваши вопросы с учётом предоставленных характеристик.

Вопрос 1: Завершается ли открытый запрос, если отключение соединений не активно?

Ответ: Да, это нормально, что открытые соединения продолжают завершаться, даже если функция «отключение соединений» отключена (т.е. время задержки удаления установлено на 0 секунд). ALB продолжает обрабатывать уже установленные соединения, потому что они связаны с текущими активными сессиями. Стриккие сессии (sticky sessions), которые вы включили на 5 минут, будут направлять трафик к данному инстансу, пока они активны.

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

Вопрос 2: Как это отличается от использования «отключения соединений»?

Ответ: Ключевое отличие заключается в том, что при использовании функции «отключение соединений» (connection draining), ALB позволяет существующим активным соединениям завершиться, но предотвращает установление новых соединений к инстансу, который будет позднее удалён. Это важный аспект, который помогает избежать разрыва уже запущенных сессий. В вашем случае, поскольку вы отключили «отключение соединений», ALB просто прекратит маршрутизацию новых запросов к данному инстансу, но уже осуществляющиеся соединения не будут принудительно завершены.

Таким образом, в данном контексте поведение ALB с отключением функции «отключение соединений» позволяет вам по-прежнему завершать долгосрочные запросы, если они уже начали обрабатываться до удаления инстанса, в то время как функция «отключение соединений» позволяет осуществить более контролируемую миграцию трафика, минимизируя воздействие на активные сессии.

Заключение

Важно помнить, что, как только вы отключаете инстанс от целевой группы, время, необходимое для его фактического отключения от ALB, может варьироваться. Параметр задержки удаления влияет на то, как быстро он становится неактивным для новых запросов, однако уже установленные соединения продолжают обрабатываться до их завершения. Рекомендуется адекватно настраивать параметры для достижения нужного вам поведения в зависимости от длительности запросов и потребностей ваших пользователей.

Если у вас есть еще вопросы или вам требуется дополнительная информация о настройках AWS ALB, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...