load balancer backend failed condition

Ruslan Ermilov ru at nginx.com
Thu Mar 28 09:22:24 UTC 2013


On Thu, Mar 28, 2013 at 04:57:29AM -0400, tolikkk wrote:
> Добрый день.
> 
> Имеется nginx версии 1.2.7. Использую его в качестве HTTP-балансировщика с
> модулем upstream (HttpUpstreamModule). 
> 
> Кусок конфига:
> 
> upstream lb_units {
>         server app01:51001 max_fails=3 fail_timeout=30s;
>         server app01:51002 max_fails=3 fail_timeout=30s;
>         server app02:51001 max_fails=3 fail_timeout=30s;
>         server app02:51002 max_fails=3 fail_timeout=30s;
>     }
> 
> server {
>     listen       51000;
>     server_name  localhost;
> 
>     location / {
>         proxy_pass http://lb_units;
>     }
> }
> 
> На основе чего server помечается, как недоступный и на него перестают
> направляться запросы?
> В документации сказано "If an error occurs when communicating with the
> server, a request will be passed to the next server". Достаточным условием
> работоспособности является факт установки TCP-соединения на server:port?

http://nginx.org/r/proxy_next_upstream/ru

> Собственно мой вопрос - можно ли прикрутить какую-то прикладную логику к
> проверке доступности backend-серверов? Я хотел бы отправлять вполне
> конкретный POST-запрос и уже на основе разбора полученного ответа принимать
> решение надо ли помечать backend-сервер, как failed - подскажите пожалуйста,
> такое возможно? Если да - где можно почитать описание и примеры?

Штатными средствами нельзя.



Подробная информация о списке рассылки nginx-ru