Рейтинг:0

Модуль событий Apache 2.4 MPM, вызывающий периодические ошибки 502 и медленное время отклика из-за AWS Application Load Balancer (ALB)

флаг cn

тлдр; Как настроить модуль событий Apache MPM в качестве функционального обратного прокси-сервера при работе за высокопроизводительным балансировщиком нагрузки приложений AWS?

Макет

Балансировщик нагрузки приложений AWS -> Apache 2.4.x -> Внутренний балансировщик нагрузки TCP AWS (NLB) -> Серверы приложений Jetty

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

Конфигурация рабочего

Серверный лимит 250
Стартовые серверы 100
Минспаретредс 75
Максспаретредс 250
ThreadLimit 64
ThreadsPerChild 64
Максрекуестворкерс 8000

Конфигурация ProxyPass

enablereuse = при получении = 10 время ожидания соединения = 2 время ожидания = 55 макс = 400 повторных попыток = 0 keepalive = вкл.

Событие MPM против работника MPM

Переключение на рабочий модуль MPM показывает мгновенное улучшение времени отклика, а ошибки 502 полностью исчезают.

Целевое время отклика — событие MPM для работника MPM

502 Ошибки — событие MPM для работника MPM

Отладка

Мне удалось отследить 502 ошибки, возвращенные ALB, до 408 ошибок, возвращенных Jetty. Jetty, похоже, выдает ошибки из-за тайм-аутов при чтении запроса.

Запуск Ubuntu 20.04 с Apache 2.4.41-4ubuntu3.8.

Интересные заметки

  • Запросы через AWS Network Load Balancer (NLB) к тем же экземплярам Apache обрабатываются быстро и не показывают ошибок 502.
флаг cn
Разница с NLB может заключаться в том, что NLB работают на более низком уровне, чем ALB. Могу я спросить, почему apache находится посередине? Почему бы просто не указать маршрут ALB к серверам Jetty?
флаг cn
@shearn89 это WAF: https://github.com/SpiderLabs/ModSecurity
флаг cn
Почему бы вместо этого не использовать AWS WAF, что, вероятно, дешевле, чем запуск целого инстанса EC2? к тому же он управляется за вас, поэтому вам просто нужно включить некоторые правила, управляемые AWS, и все готово!

Ответить или комментировать

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