On Tuesday, October 28, 2014 10:31:11 PM Никита Кардашин wrote: > Привет всем, > > Каким образом можно корректно работать с tomcat-upstream, который > используется для java-приложения, deploy которого занимает несколько минут? > > Среда: > На входе стоит nginx proxy, в котором настроено n апстримов в режиме > round-robin с max_fail=1. За ним - n серверов приложений, на которых > работает Apache Tomcat, в котором работает java-приложение. > > Если падает один из серверов приложений - все прекрасно, nginx стучится к > нему, получает 500/502 и выкидывает апстрим из списка доступных на заданное > время и рероутит запрос на другой апстрим. Пользователь проблемы не видит. > Но это если упало совсем. Если не упало, а зависло или ушло в re-deploy > (либо мы сами стартовали re-deploy) - возникает проблема. > > Проблема: > Деплой java-приложения в случае краша или обновления занимает несколько > минут (в особо злом случае - до десяти). Томкат, сволочь, в это время > принимает входящие соединения на свой порт, но не обслуживает их, а вешает > на холд до момента завершения деплоя приложения. Nginx принимает коннект от > пользователя, маршрутизирует запрос к апстриму, и... ждет 3-5 минут пока > бэкэнд не поднимется. > В итоге пользователь видит белый экран или частично загрузившуюся страницу > (как повезет раунд-робином), хотя в живых есть куча других апстримов, > которые могли бы обслужить его запрос. > > Осложняется ситуация тем, что апстрим в некоторых ситуациях может долго > думать или отдавать много данных и решить проблему "в лоб", урезав > proxy_read_timeout до нескольких секунд - нельзя. > > Меня может что-то спасти? > > > -- > With best regards, > differentlocal (www.differentlocal.ru | differentlo...@gmail.com), > System administrator.
Привет. Может быть, добавить в ваш скрипт прикрытие порта фаерволлом на время деплоя? По принципу: try { iptables -A … -j REJECT } finally { iptables -D … -j REJECT } -- Best regards, Styopa Semenukha. _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru