Я пытаюсь настроить 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