2
我试图将Apache设置为具有会话关联的2个Tomcat实例的负载平衡器。配置Apache和Tomcat以实现负载平衡
目标是让会话保持在一台服务器上,但要有下一个会话(当它由后端服务器更改时)转到下一个可用服务器(比方说使用循环算法更容易实现)。在Tomcat中使用“jvmRoute”和Apache中的等效“路由”时,执行路由的实际值是路由名称,该路由名称不会更改,并且所有请求都始终路由到单个客户端的同一后端服务器。
我发现到目前为止,只有使用JSESSIONID cookie时存在鸡/鸡蛋问题。让我们考虑以下设置:
2的Tomcat服务器上的端口8009和8010(AJP13) 1 Apache服务器具有以下配置
<Proxy balancer://hello-cluster>
BalancerMember ajp://127.0.0.1:8009/hello
BalancerMember ajp://127.0.0.1:8010/hello
</Proxy>
ProxyPass /hello balancer://hello-cluster stickysession=JSESSIONID
而且这里听的情景:
- 第一请求没有cookie,所以Apache选择负载均衡器中的下一个可用服务器来处理请求。
- 后端Tomcat服务器设置JSESSIONID,但不记下返回的实际值。
- 下一个请求时,阿帕奇指出,有对给定JSESSIONID注意到没有后端服务器,因此它选择下一个可用的,在这种情况下,另一种为提供服务的第一个请求
- 的Tomcat注意到JSESSIONID的值是无效的,所以它创建一个新的。
- Apache不记下JSESSIONID已更改为将其固定到该后端服务器。
- 返回页首3
有没有办法说服Apache注意Tomcat返回的值?