Mod-Proxy

使用 mod_proxy_balancer 進行 JBoss7 負載平衡 - 會話不工作

  • July 4, 2019

我正在嘗試設置 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>

在每個 jboss 的standalone.xml 文件中,我定義了 jvmRoute 系統屬性:

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

在 http://localhost/myapp 應用程序是可訪問的,但 java-session 沒有正確建立。因此,身份驗證不起作用。

有趣的是,如果我關閉一個 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">

以上設置適用於獨立實例,但對於域配置,您需要將“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

引用自:https://serverfault.com/questions/558500