Re: Разъяснения по работе proxy_next_upstream

Maxim Dounin mdounin на mdounin.ru
Ср Май 23 08:49:11 UTC 2012


Hello!

On Wed, May 23, 2012 at 07:03:10PM +1100, Alexander Zhuravlev wrote:

> Добрый день всем.
> 
> Не совсем уверен, что дело именно в proxy_next_upstream, поэтому
> поправьте если не прав.
> 
> Проблема: есть веб-сервис (java playframework), он обрабатывает
> внешние запросы и хочется умудриться рестартовать сам демон, не
> потеряв пользовательские запросы. Разъясню: сам демон рестартует
> порядка 2 секунд. За это время на nginx поступает порядка 20-50
> запросов. Хочется сложить их в некий буфер и дождаться подъёма
> сервера. Да, понимаю, что запросы будут обрабатываться не 0.1сек, а
> 2.1-2.5сек, но главно чтобы они были обработаны, а не получили
> 502-ую. Насколько я понимаю реализовать это можно только установкой
> самого себя в резервные сервера и установкой таймаута за который
> демон должен рестартовать.

Нет, backup-сервер в общем случае не поможет.  Ибо nginx не будет 
ничего ждать, а получив ошибку от основного сервера сразу 
попробует резервный, и при перезапуске он не ответит.

Надо запускать два бекенда, и рестартовать их по очереди.

> 
> Накропал конфиг:
> 
>     upstream local_upstream {
>         server 127.0.0.1:9012 fail_timeout=12s max_fails=1;
>         server localhost:9012 backup;
>     }
> 
>     server {
>         proxy_connect_timeout 5s;
>         listen       80;
>         server_name localhost;
>         error_log /var/log/nginx/exporter.error.log;
>         proxy_next_upstream timeout;
> 
>         root  /opt/app/views;
> 
>         location / {
>             proxy_pass              http://local_upstream;
>             proxy_set_header        Host $http_host;
>         }
> 
> Считал, что согласно proxy_next_upstream сервер будет считаться
> мёртвым только по истечении времени, но что-то нифига не так :(

Сервер будет считаться мёртвым после получения от него max_fails 
ошибок.  Параметр fail_timeout влияет на то, как быстро nginx 
забудет про предыдущие ошибки, не более того.

Maxim Dounin



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