Re: Непонятнное поведение ip hash
Maxim Dounin
mdounin at mdounin.ru
Wed Dec 5 11:47:05 UTC 2012
Hello!
On Wed, Dec 05, 2012 at 02:50:57AM -0500, s.gvozdetskiy wrote:
> Добрый день, господа!
>
> В своей работе для сохранения сессионности пользователей используем функцию
> ip_hash nginx.
>
> пример
>
> upstream backend {
> ip_hash;
> server 1.2.3.4:80 max_fails=3 fail_timeout=15s;
> server 1.2.3.4:80 max_fails=3 fail_timeout=15s;
> }
>
> В аварийной ситуации столкнулись то ли с ошибкой, то ли с "фичей" реализации
> функции. Несмотря на то что бекенд-сервер указанный в директиве upstream по
> логам выведен из пула nginx при включенной ip_hash, продолжает отправлять на
> него запросы. Кто-нибудь может подсказать направление для дальнеших
> исследований? Так и должно быть?
О какой версии nginx'а речь, и что именно подразумевается под
словами "по логам выведен из пула", "продолжает отправляеть на
него запросы"?
В современных версиях это должно работать так:
После 3 ошибок (max_fails) за 15 секунд (fail_timeout) - следующие
15 секунд nginx на него запросы отправлять не будет, а дальше раз
в 15 секунд будет отправлять на него один запрос для проверки "а
не ожил ли бекенд".
Следует иметь ввиду, что все эти вычисления - в рамках одного
рабочего процесса.
Следует также иметь ввиду, что запросы, отправленные на бекенд до
признания его неработающим, могут сообщать об ошибке существенно
позже, чем принимается решение отправить их на какой-либо бекенд.
E.g. в типичном случае неотвечающего бекенда - через 60 секунд,
после истечения proxy_connect_timeout.
В версиях старее 1.1.6 логика признания бекенда неработающим была
заметно более простой (бекенд просто признавался рабочим после
истечения fail_timeout), что в случае неотвечающего бекенда
приводило к тому, что в течении 60 секунд (proxy_connect_timeout)
запросы на него отправлялись, а потом в течении 15 секунд
(fail_timeout) - нет, и так по циклу. Если это ваш случай -
очевидным решением будет обновить nginx.
--
Maxim Dounin
http://nginx.com/support.html
Подробная информация о списке рассылки nginx-ru