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