为 Apache/Tomcat 负载平衡启用粘性会话模式

Enabling sticky session mode for Apache/Tomcat load balancing

我正在尝试在 Apache 中启用粘性会话,但它不起作用。以下是我所做的更改。我错过了什么吗?

我在访问日志中没有看到任何错误,但是来自一个用户的请求仍在转到其他服务器。

步骤 1:在服务器 1 和服务器 2 的负载均衡器 httpd.conf 中添加以下内容

<Proxy balancer://marsBalancer>
BalancerMember http://server1fullname:8080  route=server1 
BalancerMember http://server2fullname:8080  route=server2
ProxySet lbmethod=bytraffic
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /marsWAR/ balancer://marsBalancer/marsWAR/

第 2 步:更新如下 server.xml

a) 服务器 1

中的 server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">    

b) 服务器 2

中的 server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server2">

尝试从 ProxyPass 指令中删除 marsWAR 部分:

ProxyPass /marsWAR/ balancer://marsBalancer/

如果仍然无效,请尝试通过添加以下代码将会话 <id> 直接指定到 ProxyPass 指令:

ProxyPass /marsWAR/ balancer://marsBalancer/ stickysession=JSESSIONID
  1. 一切的版本号 = ?
  2. 必须是stickysession=JSESSIONID|jsessionid因为Cookie名称是大写的,但是路径参数名称是小写的。支持路径参数也需要 scolonpathdelim=On [1] 另请参阅该文档页面上的 "Troubleshooting load balancer stickyness"。

[1] http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html#stickyness_implementation