внутренняя ошибка сервера указывает на рабочий сервер с использованием балансировщика нагрузки или nginx

Допустим, у меня есть 3 физических сервера с разными IP-адресами и 1 балансировщик нагрузки, который управляет трафиком между этими 3 серверами. Мы протестировали, чтобы остановить службу nginx на 2 серверах, и балансировщик нагрузки обнаружил это и не использовал 2 сервера с остановленным nginx.

Мой вопрос: Например, 3 сервера запущены и работают, а на 1 сервере произошла внутренняя ошибка сервера (любая внутренняя ошибка сервера 500). Как мы можем избежать этого 1 сервера, на котором возникает ошибка сервера? чтобы избежать белой страницы?

0
задан 29 December 2015 в 08:10
1 ответ

Вы избегаете появления белой страницы, определяя правильно отформатированный документ об ошибке с помощью директивы error_page вместо того, чтобы полагаться на сообщение об ошибке по умолчанию :)

   error_page 500 /errors/500.html

С другой стороны, если вы не хотите отправлять дальнейшие запросы узлу, который возвращает ошибки?

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

Балансировщику нагрузки необходимо сделать что-то более сложное, например, фактический HTTP-запрос, и оценить, насколько быстро и что будет возвращено, обычно, если код состояния / ответа HTTP равен 200 и / или тело ответа имеет конкретное содержимое или соответствует определенный минимальный размер.

0
ответ дан 5 December 2019 в 11:11

Теги

Похожие вопросы