Nginx upstream - server down

Илья Шипицин chipitsine на gmail.com
Пн Авг 15 10:09:45 UTC 2011


такого модуля не то, чтобы не хватает .... просто идеология другая.

например, в haproxy очень развит подход с health check-ами, причем они
могут быть сколь угодно программируемы (приложение работает по https,
а для health check используется специальная страница с http
запросами).

это не лучше и не хуже, это просто по-другому.

допустим, вы настроили с интервалом 30 секунд проверку бекенда, бац,
бекенд сдулся, вы по-прежнему думаете, что он живой и отправляете на
него запрос, это хорошо ?

у nginx идеология другая - идем на приложение и смотрим по ситуации,
либо отдаем ответ пользователю, либо идем на следующий бекенд.

не хватает, пожалуй, только настраиваемой Failover strategy, что
делать, если на текущем бекенде сбой

а) прекратить попытки и отдать пользователю ошибку
б) попробовать еще один бекенд
в) пробовать все живые бекенды

сейчас реализован только сценарий "в)"

если у вас много бекендов - делайте маленький тайаут на connect и
будет вам счастье.

9 августа 2011 г. 13:15 пользователь Никита Козлов <niakrisn на gmail.com> написал:
> 9 августа 2011 г. 4:10 пользователь Sergey Kobzar
> <sergey.kobzar на itcraft.org> написал:
>>
>> Максим
>>
>> Спасибо за детальное описание. Идея понятна.
>>
>> В данной реализации есть ньюансы. Например php скрипт "подвис" или база
>> данных залочена (ALTER на таблице в 10G). Соответственно получаем proxy
>> connect timeout и так для _всех_ серверов.
>>
>> Как вариант решения (частный случай) - сделать "пингалку". У того же
>> php-fpm есть ping.path
>> (http://php.net/manual/en/install.fpm.configuration.php). И если ответа нет
>> N sec, то тогда действительно сервер в дауне. На что правим список backend
>> серверов в конфиге и делаем nginx reload.
>>
>> Может глупости пишу на ночь глядя... Здравая критика приветствуется.
>
> Есть http://wiki.nginx.org/HttpHealthcheckModule.
> Грамотной реализации такого функционала крайне не хватает в nginx, очень
> часто случаются такие моменты когда бэкэнд по каким-то причинам не работает,
> или frontand на проксируемом сервере работает, а бэкэнд нет.
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>


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