我正在学习 Tomcat 会话控制,我有 2 个带有 的 Worker sticky_session=1
。但我想删除对特定 Worker 的粘性,同时为用户保留会话。我在以下语句中找到了Tomcat 文档并且它说 sticky_session 可以为 False,但 session 可以在多个实例之间共享。但我不太清楚这Session Manager
到底是什么以及如何设置它。有人可以详细说明一下吗?或者如果有相应的文档,请告诉我?
sticky_session 指定是否应将带有 SESSION ID 的请求路由回同一个 Tomcat 工作进程。当 Tomcat 使用可以在 Tomcat 的多个实例之间持久保存会话数据的会话管理器时,您可以将 sticky_session 设置为 False。默认情况下,sticky_session 设置为 True。
答案1
您应该查看的页面是集群指南。配置 jk 连接器以在两个 Tomcat 之间进行负载平衡而不用设置粘性会话本身是不够的,因为它不会导致会话对象在两个 Tomcat 之间复制。相反,它可能会将您的用户发送到不同的 Tomcat 进行不同的请求,从而丢失会话状态。您需要集群来确保用户的会话数据在两个 Tomcat 实例上都可用。