我将 apache 用作具有粘性 session 处理的 LB(使用 2 个 tomcat 作为平衡器成员)。
配置如下。由我在 apache 级别完成 -
<Proxy balancer://mycluster>
(...)
ProxySet stickysession=JSESSIONID
BalancerMember http://{ip/hostname of tomcat1 backed:port} route=tomcat1
BalancerMember http://{ip/hostname of tomcat2 backed:port} route=tomcat2
</Proxy>
ProxyPass / “balancer://mycluster”
PorxyPassReverse / “balancer://mycluster”
在 tomcat 级别定义 jvm 路由 -
(...)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> ##where the jvmroute should be the route value set at apache config.
(...)
tomcat 2 也定义相同
(...)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> ##where the jvmroute should be the route value set at apache config.
(...)
一切正常,但此设置的主要缺点是如果 tomcat1 出现故障,则粘附到 tomcat1 的 session 也会终止并且不会路由到 tomcat2。
有什么方法可以将粘性 session 也复制到 tomcat2,或者只是如果 tomcat1 死了,那么 session 就会转移到 tomcat2,反之亦然?
最佳答案
“粘性 session ”的使用只是一种机制,用于在可能使用多个节点时确保对同一 session 的所有请求都转到同一节点。如果您想要 session 故障转移,您需要集群。
有很多关于如何使用 Tomcat 进行集群的指南。关于Tomcat's Presentations Page也有几个介绍有关集群如何工作以及如何配置的背景信息。
请注意,您可能必须对应用程序进行一些更改才能使集群正常工作。
关于apache - 将 apache 用作具有粘性 session 的负载平衡器 - 需要基于粘性 session 的负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114218/