ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx as reverse proxy for weblogic



On Sunday 27 January 2013 11:45:21 teo wrote:
> Была мысль заменить связку apache+ webllogic-plugin на nginx. Но сколько
> раз не пробовал - все равно родной плагин работает лучше.
> Неужели nginx за столько времени не додумался до того, что 10 лет назад
> сделали в BEA?
> 
> Сейчас я пробую вот такую конфигурацию
> 
> upstream web_backend {
>     ip_hash;
>     least_conn;
>     server 192.168.2.11:7001;
>     server 192.168.2.12:7001;
>     server 192.168.2.13:7001;
> }
> 
>     location / {
>       proxy_pass      http://web_backend;
>       proxy_http_version 1.1;
>       proxy_set_header WL-Proxy-Client-IP $remote_addr;
>       proxy_set_header Proxy-Client-IP $remote_addr;
>       proxy_set_header X-Forwarded-For $remote_addr;
>       proxy_read_timeout 600;
>       proxy_send_timeout 1;
>     }
> 
> Результат - да, все работает только до определенного момента (секунд этак
> 30). Видно что все запросы валятся на один инстанс weblogic, забивают все
> его очереди и в результате все висит.
> Т.е. почему нет заявленного round-robin и когда nginx решит переключиться
> на другой инстанс - не известно.

Вы его выключили указав ip_hash.

> Впрочем я конечно не уверен что все происходит именно так, но факты такие -
> через некоторое время консоль управления подвисает - это происходит обычно
> тогда, когда один из инстансов тупо не отвечает ни на какие запросы. Далее
> nodeManager, видя что его инстанс не отвечает - валит его и запускает
> вновь.
> Если консоль все-таки ответила, то видно что кол-во конектов на этих 3х
> инстансах распределено примерно так 10+1200+10.
> 
> Почему же этого не происходит при родном плагине?
> Во 1х плагин постоянно тестирует инстансы, посылая запрос на несуществующую
> страничку и при этом его цель не получить какой-то конкретный ответ, а
> просто увидеть что инстанс жив, даже если это ответ 404. И заодно оценить
> насколько тот занят - если задержка велика - значит надо выбрать другой.
> А тестировать инстанс пришедшим запросом - а вдруг это поисковый запрос,
> который требует много ресурсов и ответ будет долгим?

Распространенная ситуация - интервал поступления запросов меньше интервала 
ответа, в этом случае любые дополнительные запросы "для тестирования" только 
создают дополнительную нагрузку, не принося никакой пользы.

> Кстати в параметрах настройки плагина нет таймаутов - т.е. если вы будете
> вытаскивать 20гиговый файл, то вас не срубят на 10й минуте.

nginx тоже не срубят, если файл действительно будет "вытаскиваться", а
не 10 минут висеть. Обратите внимание, многие таймауты задаются на интервалы 
между двумя последовательными операциями, а не на весь ответ целиком.

> Во 2х, он добавляет куки в ответ инстанса, с тем, чтобы знать на каком
> конкретно сервере исполнялся предыдущий запрос.
> При этом никакие циски с NAT и диапазоном IP адресов уже не страшны (это
> когда каждый конект идет через другой адрес) - он заботится о том, чтобы
> инстансу было легче доставать сессию клиента.

Это другой метод балансировки, который на данный момент не доступен в 
бесплатной 
версии nginx.

> В 3х плагин поддерживает keep_alive со стороны инстанса.
> 

Nginx поддерживает keepalive начиная с версии 1.1.4.

http://nginx.org/r/keepalive/ru

> Так может все-таки добавить такие фичи в ngx_http_proxy_module?
> Или я что-то пропустил и кто-то знает решение с имеющимся функционалом?
> Версии в которых это пробовал я - 1.0.15 из epel и 1.2.6.
> 

--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.