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
|