Балансировка нагрузки JBoss7 с помощью mod_proxy_balancer - сеанс не работает

Я пытаюсь настроить mod_proxy_balancer для маршрутизации запросов на 2 сервера jboss7. В настоящее время я тестирую эту настройку на своем локальном компьютере, используя следующую конфигурацию в httpd.conf:

ProxyRequests Off
<Proxy \*>
   Order deny,allow
   Deny from all
</Proxy>

ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy balancer://mycluster>
BalancerMember http://localhost:8080 route=node1
BalancerMember http://localhost:8081 route=node2    
Order allow,deny
Allow from all
</Proxy>

и в файле standalone.xml каждого jboss я определил системное свойство jvmRoute:

<system-properties>
    <property name="jvmRoute" value="node1"/>  
</system-properties>

По адресу http:// localhost/myapp приложение доступно, но java-сессия создана неправильно. Следовательно, аутентификация не работает.

Самое смешное, что все работает, если я отключаю один экземпляр JBoss.

Поскольку я уже попробовал несколько настроек, я благодарен за любые дальнейшие предложения.

2 ответа

Решение

Я наконец получил конфиг для работы.

Мне пришлось добавить следующие настройки в конфигурации JBoss7 (standalone.xml):

<system-properties>
<property name="jvmRoute" value="node1"/>
<property name="UseJK" value="true"/>
</system-properties>

а также:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" **instance-id="node1" native="false">

...

Вышеуказанные настройки будут работать для автономных экземпляров, но для конфигураций домена вам нужно добавить "jvmRoute" в файл host.xml в разделе серверов

<server name="server-one" group="server-one-group" auto-start="true">
  <system-properties>
  <property name="jvmRoute" value="server1" boot-time="true"/>
  </system-properties>
</server>

Повторите то же самое для всех ваших узлов

<server name="server-one" group="server-one-group" auto-start="true">
  <system-properties>
  <property name="jvmRoute" value="server2" boot-time="true"/>
  </system-properties>
</server>

Если вы используете mod_jk для балансировки нагрузки между вашими узлами, то на веб-сервере вам нужно определить свои узлы с помощью jvmRoute, который вы настроили выше, следующим образом: файл worker.properties содержит:

worker.list=oblb
worker.oblb.type=lb
worker.oblb.balance_workers=server1,server2
worker.oblb.sticky_session=true
worker.server1.reference=worker.template
worker.server1.host=Appserverhost1.example.com
worker.server1.port=8009

worker.server2.reference=worker.template
worker.server2.host=Appserverhost2.example.com
worker.server2.port=8009

worker.template.type=ajp13

Пожалуйста, попробуйте это: это сработало для меня. Другой пример того, как обеспечить балансировку нагрузки с помощью липкости, используя mod_headers, даже если на внутреннем сервере не установлен подходящий файл cookie сеанса:

Добавить заголовок Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; путь = /" env = BALANCER_ROUTE_CHANGED BalancerMember " http://192.168.1.50/" route = 1 BalancerMember " http://192.168.1.51/" route=2 ProxySet stickysession=ROUTEID ProxyPass "/test" "балансировщик://mycluster" ProxyPassReverse "/test" "балансировщик: // mycluster"

Для получения более подробной информации, пожалуйста, обратитесь к документации httpd: https://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html

Другие вопросы по тегам