iha*_*obs 17 java apache tomcat
我使用apache web服务器作为apache后面的两个tomcat实例的负载均衡器.当第一个请求进入节点A并且来自同一客户端的第二个请求进入节点B时,我无法访问节点A中的会话变量.很明显.我在互联网上浏览并发现启用粘性会话会有所帮助.但是在apache中启用粘性会话的所有教程看起来都很混乱.这是否有任何简单的分步教程?请帮忙.
来自评论的代码片段:
ProxyPass /balancer-manager !
ProxyPass /balancer://mycluster/ stickysession=JSESSIONID
ProxyPassReverse /balancer://mycluster/
<Proxy balancer://mycluster>;
BalancerMember ajp://localhost:9001/ route=NodeA1000 retry=10
BalancerMember ajp://localhost:9002/ route=NodeB1000 retry=10
</Proxy>
Run Code Online (Sandbox Code Playgroud)
小智 17
这对我有用......
不要在ProxyPass指令中使用stickysession = JSESSIONID,而是必须使用ProxySet stickysession = JSESSIONID在平衡器配置中设置它:
<Proxy balancer://mybalancer>
BalancerMember ajp://server1:8009 route=tomcat1
BalancerMember ajp://server2:8009 route=tomcat2
ProxySet lbmethod=bytraffic
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /myapp/ mybalancer://myapp/
Run Code Online (Sandbox Code Playgroud)
它不工作对我来说,当我使用它的ProxyPass如下图所示:
ProxyPass /myapp/ mybalancer://myapp/ stickysession=JSESSIONID
Run Code Online (Sandbox Code Playgroud)
Joe*_*ckx 11
对于apache httpd来保持您的会话绑定到相同的后端,它需要知道哪个cookie保留会话ID.对于java,这通常是JSESSIONID.
如果您正在使用该ProxyPass
指令,请使用
ProxyPass /example http://backend.example.com stickysession=JSESSIONID
Run Code Online (Sandbox Code Playgroud)
小智 6
请试试这个,我相信这对你有用.
步骤1:在httpd.conf中添加以下代码:
<Proxy balancer://mycluster>
BalancerMember http://<NODE1>/<APP>/ route=jvm1
BalancerMember http://<NODE2>/<APP>/ route=jvm2
ProxySet lbmethod=bytraffic
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /<APP>/ balancer://mycluster/
ProxyPassReverse /<APP>/ balancer://mycluster/
Run Code Online (Sandbox Code Playgroud)
步骤2:在server.conf中添加以下代码:
a) <NODE1>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
b) <NODE2>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
55601 次 |
最近记录: |