<div dir="ltr">если apache+weblogic-plugin вас устраивает, используйте его.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">27 января 2013 г., 13:45 пользователь teo <span dir="ltr"><<a href="mailto:nginx-forum@nginx.us" target="_blank">nginx-forum@nginx.us</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Была мысль заменить связку apache+ webllogic-plugin на nginx. Но сколько раз<br>
не пробовал - все равно родной плагин работает лучше.<br>
Неужели nginx за столько времени не додумался до того, что 10 лет назад<br>
сделали в BEA?<br>
<br>
Сейчас я пробую вот такую конфигурацию<br>
<br>
upstream web_backend {<br>
ip_hash;<br>
least_conn;<br>
server <a href="http://192.168.2.11:7001" target="_blank">192.168.2.11:7001</a>;<br>
server <a href="http://192.168.2.12:7001" target="_blank">192.168.2.12:7001</a>;<br>
server <a href="http://192.168.2.13:7001" target="_blank">192.168.2.13:7001</a>;<br>
}<br>
<br>
location / {<br>
proxy_pass <a href="http://web_backend" target="_blank">http://web_backend</a>;<br>
proxy_http_version 1.1;<br>
proxy_set_header WL-Proxy-Client-IP $remote_addr;<br>
proxy_set_header Proxy-Client-IP $remote_addr;<br>
proxy_set_header X-Forwarded-For $remote_addr;<br>
proxy_read_timeout 600;<br>
proxy_send_timeout 1;<br>
}<br>
<br>
Результат - да, все работает только до определенного момента (секунд этак<br>
30). Видно что все запросы валятся на один инстанс weblogic, забивают все<br>
его очереди и в результате все висит.<br>
Т.е. почему нет заявленного round-robin и когда nginx решит переключиться на<br>
другой инстанс - не известно.<br>
Впрочем я конечно не уверен что все происходит именно так, но факты такие -<br>
через некоторое время консоль управления подвисает - это происходит обычно<br>
тогда, когда один из инстансов тупо не отвечает ни на какие запросы. Далее<br>
nodeManager, видя что его инстанс не отвечает - валит его и запускает<br>
вновь.<br>
Если консоль все-таки ответила, то видно что кол-во конектов на этих 3х<br>
инстансах распределено примерно так 10+1200+10.<br>
<br>
Почему же этого не происходит при родном плагине?<br>
Во 1х плагин постоянно тестирует инстансы, посылая запрос на несуществующую<br>
страничку и при этом его цель не получить какой-то конкретный ответ, а<br>
просто увидеть что инстанс жив, даже если это ответ 404. И заодно оценить<br>
насколько тот занят - если задержка велика - значит надо выбрать другой.<br>
А тестировать инстанс пришедшим запросом - а вдруг это поисковый запрос,<br>
который требует много ресурсов и ответ будет долгим?<br>
Кстати в параметрах настройки плагина нет таймаутов - т.е. если вы будете<br>
вытаскивать 20гиговый файл, то вас не срубят на 10й минуте.<br>
Во 2х, он добавляет куки в ответ инстанса, с тем, чтобы знать на каком<br>
конкретно сервере исполнялся предыдущий запрос.<br>
При этом никакие циски с NAT и диапазоном IP адресов уже не страшны (это<br>
когда каждый конект идет через другой адрес) - он заботится о том, чтобы<br>
инстансу было легче доставать сессию клиента.<br>
В 3х плагин поддерживает keep_alive со стороны инстанса.<br>
<br>
Так может все-таки добавить такие фичи в ngx_http_proxy_module?<br>
Или я что-то пропустил и кто-то знает решение с имеющимся функционалом?<br>
Версии в которых это пробовал я - 1.0.15 из epel и 1.2.6.<br>
<br>
Posted at Nginx Forum: <a href="http://forum.nginx.org/read.php?21,235603,235603#msg-235603" target="_blank">http://forum.nginx.org/read.php?21,235603,235603#msg-235603</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">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></blockquote></div><br></div>