>>Если продолжают происходить ошибки - значит, он как-то странно восстановился. Возможно, у него в процессе поменялся ip-адрес? >>Это бы объяснило, почему после рестарта nginx его "увидел". Дело в том, что эти 2 сервера - aws-инстансы. Внешний ip-адрес у них постоянный, а вот внутренний - может меняться. Т.к. у меня идет привязка к внутренней aws-dns-службе. Так что вариант, что во внутренней сети и них разные ip, вполне имеет почву. А, если это так, можно ли что-то сделать на стороне nginx? Я же их прописываю в конфиге по dns-адресам, а не ip. Или nginx внутри себя все равно хранит представление в ip-адресе?
17 июня 2013 г., 17:56 пользователь Андрей Урядов <[email protected]>написал: > Да > > > 17 июня 2013 г., 17:53 пользователь Maxim Dounin <[email protected]>написал: > > Hello! >> >> On Mon, Jun 17, 2013 at 04:09:19PM +0400, Андрей Урядов wrote: >> >> > Всем привет. >> > >> > Столкнулся с интересным поведением директивы max_fails в upstream. >> > Версия nginx 1.2.6. >> > Опишу ситуацию. >> > >> > 1. Nginx работает на сервере some_host1. Кусок конфига: >> > upstream fpm { >> > server <some_host1>:9000 weight=6; >> > server<some_host2>:9000 weight=4; >> > } >> > 2. В какой-то момент some_host2 зависает (на уровне ОС), т.е. не >> отвечает >> > на запросы. >> > 3. В логах появляются строки "connect() failed (110: Connection timed >> out) >> > while connecting to upstream". Причем, я считал, что т.к. max_fails не >> > указан, он равен 1, и, стало быть, таких строчек не должно быть, т.к. >> nginx >> > должен перекидывать всех на первый сервер. >> > 4. some_host2 перестартует. На нем запускается fpm. >> > 5. Но почему-то строки из лога не пропадают и клиентам отдаются ошибки. >> > 6. Если перестартовать nginx, то он подцепит оба сервера, и все >> продолжится >> > в штатном режиме. >> > >> > >> > Вопросы: >> > 1. Почему после первого неудачного раза сервер не отрубается? Ведь >> > max_fails равно 1. >> >> После того, как случилась ошибка - nginx будет посылать запросы на >> "плохой" сервер раз в fail_timeout секунд (нюанс: из каждого >> рабочего процесса). Если он успешно ответит на запрос - то будет >> вновь включён в работу. >> >> > 2. Почему после рестарта сервера nginx его не видит? Он же продолжает >> его >> > дергать, и мог бы понять, что сервер восстановился. >> >> Если продолжают происходить ошибки - значит, он как-то странно >> восстановился. Возможно, у него в процессе поменялся ip-адрес? >> Это бы объяснило, почему после рестарта nginx его "увидел". >> >> -- >> Maxim Dounin >> http://nginx.org/en/donation.html >> >> _______________________________________________ >> nginx-ru mailing list >> [email protected] >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > > >
_______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
