Уже много лет мы используем сервер Apache с плагином Mod_wl для балансировки сеансов между несколькими внутренними веб-серверами Weblogic.
Теперь, спустя некоторое время, мы также начали использовать тот же Apache для обратного прокси-сервера к другим внутренним приложениям. Так что теперь я задаюсь вопросом, почему мы вообще используем mod_wl, а не просто Apache Server с его собственным mod_proxy и mod_proxy_balancer для балансировки на наших собственных бэкэнд-веб-серверах Weblogic?
Есть ли какая-то польза от этого фирменного плагина? Или дело в том, что несколько лет назад этого было не так просто добиться с помощью Apache Config? Я попробовал настройку без плагина Mod_wl для некоторого тестирования, и, похоже, все работает отлично, только для закрепления сеанса, похоже, мне пришлось добавить новый cookie через Apache, поскольку он по какой-то причине не работает с нашим существующим J2SESSIONID, установленным Weblogics.
Итак, следующее
Header add Set-Cookie "J2ROUTE=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://backends>
BalancerMember http://localhost:9001 route=1
BalancerMember http://localhost:9002 route=2
ProxySet stickysession=J2ROUTE
</Proxy>
Похоже, что эта конфигурация делает то же самое, что и предыдущая, но с использованием mod_wl:
SetHandler weblogic-handler
WebLogicCluster localhost:9001,localhost:9002
WLCookieName J2SESSIONID
Это, конечно, упрощенный пример конфигурации. Так что не уверены, продолжать ли использовать фирменный плагин, пока он работает, не менять ли команду-победителя? Или перейти к более открытому решению Apache.
решение1
Плагин weblogic «общается» с бэкэнд-кластером и обновляет список доступных бэкэндов, о которых сообщает любой член кластера. Таким образом, вы можете добавить несколько новых членов кластера, не трогая при этом конфигурацию, связанную с Apache.
Oracle также рекламирует WLSRequest как более гибкий и менее сложный способ указания определенного местоположения обратных прокси-серверов для Weblogic, чем метод «SetHandler».
Тем не менее, mod_wl — это сторонний проект, и до сих пор у него были проблемы с событием mpm, например, когда вы запускаете graceful, он наверняка зависнет на конечном цикле изящного завершения, пока вы не запустите настоящий перезапуск. Вы также не можете использовать maxconnectionsperchild, иначе со временем потеряете дочерние процессы по той же причине (я думаю, что разработчики httpd работают над решением этой проблемы в версии 2.4.33, которая скоро выйдет).
Поэтому я бы просмотрел документацию Oracle и протестировал оба варианта, но в последнее время я также склоняюсь к выбору без использования сторонних средств, то есть к использованию mod_proxy.
Буду рад, если вы сообщите мне об этом после попытки.