ПРОЕКТЫ 


  АРХИВ 


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]

nginx as reverse proxy for weblogic


  • To: nginx-ru@xxxxxxxxx
  • Subject: nginx as reverse proxy for weblogic
  • From: "teo" <nginx-forum@xxxxxxxx>
  • Date: Sun, 27 Jan 2013 02:45:21 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tigger.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=KnFbcxfi+/QdjTmIoRlroIRFV0TCVPSzuSq99nMQuYU=; b=ffmvQ3IYWY2tNPcZbDspCwL6A0HjSpgqYdrU3GZ3VFg56p9N5sHvy4pg6Kh6tn3AbSyNVkrfyc4vqJOdEcexYxYHjkE5gaAdSZB9nsrZyU3NqRvH9K818s/aFyhmMbXY;

Была мысль заменить связку 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 решит переключиться на
другой инстанс - не известно.
Впрочем я конечно не уверен что все происходит именно так, но факты такие -
через некоторое время консоль управления подвисает - это происходит обычно
тогда, когда один из инстансов тупо не отвечает ни на какие запросы. Далее
nodeManager, видя что его инстанс не отвечает - валит его и запускает
вновь.
Если консоль все-таки ответила, то видно что кол-во конектов на этих 3х
инстансах распределено примерно так 10+1200+10.

Почему же этого не происходит при родном плагине?
Во 1х плагин постоянно тестирует инстансы, посылая запрос на несуществующую
страничку и при этом его цель не получить какой-то конкретный ответ, а
просто увидеть что инстанс жив, даже если это ответ 404. И заодно оценить
насколько тот занят - если задержка велика - значит надо выбрать другой.
А тестировать инстанс пришедшим запросом - а вдруг это поисковый запрос,
который требует много ресурсов и ответ будет долгим?
Кстати в параметрах настройки плагина нет таймаутов - т.е. если вы будете
вытаскивать 20гиговый файл, то вас не срубят на 10й минуте.
Во 2х, он добавляет куки в ответ инстанса, с тем, чтобы знать на каком
конкретно сервере исполнялся предыдущий запрос.
При этом никакие циски с NAT и диапазоном IP адресов уже не страшны (это
когда каждый конект идет через другой адрес) - он заботится о том, чтобы
инстансу было легче доставать сессию клиента.
В 3х плагин поддерживает keep_alive со стороны инстанса.

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

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,235603,235603#msg-235603

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.