load balancer backend failed condition

tolikkk nginx-forum at nginx.us
Thu Mar 28 08:57:29 UTC 2013


Добрый день.

Имеется 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?

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

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,237866,237866#msg-237866



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