Проблема с проверкой работоспособности ботинка AWS Elastic Beanstalk

Мое веб-приложение Django и веб-сервер используют Nginx, используйте Docker image и Elastic Beanstalk для развертывания.

Обычно проблем не было, но по мере расширения балансировки нагрузки EC2 мой веб-сервер становится 502 Bad Gateway.

Я проверил журналы приложений с эластичным Beanstalk, около 16% запросов возвратили ошибки 5xx, и в это время балансировщик нагрузки расширяет EC2, в результате чего веб-сервер переходит к состоянию 502 Bad Gateway и приложение Elastic Beanstalk в состояние Degraded.

Это обычная проблема, когда балансировка нагрузки выполняет проверку работоспособности? Если нет, как отключить проверку работоспособности?

Я прикрепляю захваченное изображение для справки.

enter image description here

Ответ 1

Насколько мне известно, ошибка 502 Bad Gateway может быть уменьшена только путем ручного контроля основных ссылок, которые у вас есть на ваших сайтах, и если они доступны через простой запрос GET.

В случае моего веб-сайта у меня была проблема с страницей входа и страницей (и это было около 33% моего сайта), поэтому после загрузки в EC2 я получил ошибку 5xx при проверке работоспособности. Я решил проблему, просто сделав ссылки на сервере (были некоторые функции, которые выполнялись только на локальном хосте, а не на AWS, поэтому я исправил это и получил статус "ОК" в "Проверка работоспособности")

Я не думаю, что есть смысл удалить проверку работоспособности, поскольку она дает важную информацию о вашем веб-сайте, и вы, вероятно, не хотите, чтобы ваш сайт имел недоступные страницы.

Следите за журналами, чтобы сузить проблему.

Надеюсь, вы найдете решение.

Ответ 2

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

Балансировщик нагрузки AWS отправляет запрос проверки работоспособности каждому зарегистрированному экземпляру каждые N секунд, используя указанный вами путь. Интервал секунд по умолчанию составляет 30 секунд. Если проверка работоспособности завершилась с ошибкой N раз (по умолчанию - 2) для любого из запущенных вами экземпляров, изменения в здоровье деградированы или жестоки в зависимости от процента ваших экземпляров, которые не отвечают.

  1. Отправьте запрос, который должен вернуть код ответа 200. Значение по умолчанию: '/index.html'
  2. Подождите N секунд до истечения времени ожидания (по умолчанию 5 секунд)
  3. Повторите попытку через N интервалов секунд (по умолчанию 30 секунд)
  4. Если N последовательных вызовов не удастся, измените состояние работоспособности на предупреждение или серьезное (по умолчанию нездоровый порог равен 2)
  5. После N последовательных успешных вызовов верните состояние работоспособности в OK (по умолчанию 10).

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

Подробное объяснение и параметры конфигурации см. В документации AWS: Настройка проверки работоспособности для балансировки эластичной нагрузки