Добрый день.
Имеется 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 - подскажите пожалуйста, такое возможно? Если да - где можно почитать описание и примеры?