Назад | Перейти на главную страницу

Балансировка нагрузки 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-экземпляр.

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

Наконец-то конфиг заработал.

Мне пришлось добавить следующие настройки в конфигурацию 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">

...

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

Заголовок добавить Set-Cookie "ROUTEID =.% {BALANCER_WORKER_ROUTE} e; path = /" env = BALANCER_ROUTE_CHANGED BalancerMember "http://192.168.1.50:80"route = 1 BalancerMember"http://192.168.1.51:80"route = 2 ProxySet stickysession = ROUTEID ProxyPass" / test "" balancer: // mycluster "ProxyPassReverse" / test "" balancer: // mycluster "

Дополнительные сведения см. В документации httpd ниже: https://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html

Вышеуказанные настройки будут работать для автономных экземпляров, но для конфигураций домена вам необходимо добавить «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