Назад | Перейти на главную страницу

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

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

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

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

   error_page 500 /errors/500.html

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

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

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