Nginx не переключается при использовании для балансировки нагрузки - PullRequest
2 голосов
/ 03 февраля 2012

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

Наша восходящая директива имеет вид:

upstream app_servers {
    server 10.100.100.100:8080;
    server 10.100.100.200:8080;
}

Наше понимание от чтения документов Nginx состоит в том, что нам не нужно явно указывать "max_fails" или "fail_timeout", потому что они имеют разумные значения по умолчанию. (т.е. max_fails of 1).

Есть идеи, чего нам здесь не хватает?

Большое спасибо.

1 Ответ

2 голосов
/ 03 февраля 2012

Согласно документации ...

max_fails = NUMBER - количество неудачных попыток связи с сервером за период времени (назначенный параметром fail_timeout), после которого он считается неработоспособным.Если не установлено, количество попыток равно одной.Значение 0 отключает эту проверку.То, что считается ошибкой, определяется proxy_next_upstream или fastcgi_next_upstream (за исключением ошибок http_404, которые не учитываются в max_fails).

Согласно документации, ошибка определяется proxy_next_upstream fastcgi_next_upstream .

Он продолжает отправлять запросы и регистрировать ошибки.

Пожалуйста, проверьте в журнале, какие типы ошибок были зарегистрированы, если это непо умолчанию (ошибка или тайм-аут), тогда вы можете определить его исключительно в proxy_next_upstream или fastcgi_next_upstream.

...