<div dir="ltr"><div><div>>>Если продолжают происходить ошибки - значит, он как-то странно<br>
восстановился.  Возможно, у него в процессе поменялся ip-адрес?<br>
>>Это бы объяснило, почему после рестарта nginx его "увидел".<br></div>Дело в том, что эти 2 сервера - aws-инстансы. Внешний ip-адрес у них постоянный, а вот внутренний - может меняться. Т.к. у меня идет привязка к внутренней aws-dns-службе. Так что вариант, что во внутренней сети и них разные ip, вполне имеет почву.<br>
</div>А, если это так, можно ли что-то сделать на стороне nginx? Я же их прописываю в конфиге по dns-адресам, а не ip. Или nginx внутри себя все равно хранит представление в ip-адресе?<br></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">17 июня 2013 г., 17:56 пользователь Андрей Урядов <span dir="ltr"><<a href="mailto:anuryadov@gmail.com" target="_blank">anuryadov@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Да<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">17 июня 2013 г., 17:53 пользователь Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> написал:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div><br>
On Mon, Jun 17, 2013 at 04:09:19PM +0400, Андрей Урядов wrote:<br>
<br>
> Всем привет.<br>
><br>
> Столкнулся с интересным поведением директивы max_fails в upstream.<br>
> Версия nginx 1.2.6.<br>
> Опишу ситуацию.<br>
><br>
> 1. Nginx работает на сервере some_host1. Кусок конфига:<br>
> upstream fpm {<br>
>         server <some_host1>:9000 weight=6;<br>
>         server<some_host2>:9000 weight=4;<br>
> }<br>
> 2. В какой-то момент some_host2 зависает (на уровне ОС), т.е. не отвечает<br>
> на запросы.<br>
> 3. В логах появляются строки "connect() failed (110: Connection timed out)<br>
> while connecting to upstream". Причем, я считал, что т.к. max_fails не<br>
> указан, он равен 1, и, стало быть, таких строчек не должно быть, т.к. nginx<br>
> должен перекидывать всех на первый сервер.<br>
> 4. some_host2 перестартует. На нем запускается fpm.<br>
> 5. Но почему-то строки из лога не пропадают и клиентам отдаются ошибки.<br>
> 6. Если перестартовать nginx, то он подцепит оба сервера, и все продолжится<br>
> в штатном режиме.<br>
><br>
><br>
> Вопросы:<br>
> 1. Почему после первого неудачного раза сервер не отрубается? Ведь<br>
> max_fails равно 1.<br>
<br>
</div>После того, как случилась ошибка - nginx будет посылать запросы на<br>
"плохой" сервер раз в fail_timeout секунд (нюанс: из каждого<br>
рабочего процесса).  Если он успешно ответит на запрос - то будет<br>
вновь включён в работу.<br>
<div><br>
> 2. Почему после рестарта сервера nginx его не видит? Он же продолжает его<br>
> дергать, и мог бы понять, что сервер восстановился.<br>
<br>
</div>Если продолжают происходить ошибки - значит, он как-то странно<br>
восстановился.  Возможно, у него в процессе поменялся ip-адрес?<br>
Это бы объяснило, почему после рестарта nginx его "увидел".<br>
<span><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/en/donation.html" target="_blank">http://nginx.org/en/donation.html</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></font></span></blockquote></div></div></div><br></div>
</blockquote></div><br></div>