目前,我们使用 apache2 作为前端,使用 tomcat 作为后端。我们正在使用mod_proxy_balancer
AJP。我们还通过 JSESSIONID cookie 使用 stickysession:
<Proxy balancer://backend>
BalancerMember ajp://127.0.0.1:8008 min=10 max=100 ping=5 connectiontimeout=40 ttl=60 retry=20 route=node-1
BalancerMember ajp://127.0.0.1:8009 min=10 max=100 ping=5 connectiontimeout=40 ttl=60 retry=20 route=node-2
ProxySet lbmethod=byrequests timeout=30
ProxySet stickysession=JSESSIONID|jsessionid nofailover=Off
</Proxy>
并使用 jvmRoute 参数将web.xml
尾部添加到 JSESSIONID cookie:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node-1">
我们希望切换到使用 nginx 作为前端。到目前为止,我还没有找到任何使用 nginx 执行相同会话亲和性操作的方法。有解决方案吗?我们没有使用会话复制,因此将顺序请求发送到同一后端至关重要。
答案1
谷歌建议那nginx 有一个树外模块可以实现这个。我从来没有用过它,因为我认为粘性会话是魔鬼的杰作,但如果必须实现它,它将是我使用的第一个选项。