如何在独立的tomcat实例之间共享会话

时间:2010-09-03 20:29:19

标签: session tomcat grails

我有几个在物理上独立的机器上运行的tomcat实例。

我想配置tomcat来共享这些实例之间的会话。

我尝试从http://tomcat.apache.org/tomcat-6.0-doc/config/manager.html配置org.apache.catalina.session.PersistentManager。但是当我关闭tomcat实例时我只看到会话文件而我不知道实例是否正在共享此会话。我想不是。因为tomcat只在关闭时写下会话才没有意义。

我发现的另一件事是cluster-howto,但我无法做到这一点,机器看不到彼此。它们只共享要使用的存储路径。

我认为我可以做的其他事情是实现一个manager,但这似乎有点棘手。

我必须补充一点,我使用tomcat来部署grails war文件,我正在使用grails会话。我认为它与Spring有关

所以,问题是:你认为我能做的最好的事情是如何更有效地完成这项任务?或许我错过了什么?你能给我任何指针吗?

1 个答案:

答案 0 :(得分:2)

你有F5 Big IP在tomcat服务器前面进行负载均衡,所以它会通过发送回正确的Tomcat服务器来处理sessionID for you。使用sticky-round-robin算法。

根据您评论中的用例 -

  

我想做的是节省一些   会话中的数据,然后重定向到   登录服务器,谁成功   方案它重定向到我的服务器。   我关心的是如果发生了什么   负载均衡器将请求重定向到   之前没有的服务器   在会话中保存了所需的数据。   也许粘性会话是我需要的。   那么:我可以配置粘性会话吗?   非tomcat-cluster enviromnent?

成功登录后,您首先重定向回BigIP。它将从浏览器中获取sessionID。它会将您发送到正确的Tomcat,您应该能够检索会话数据。

如果没有,看起来你需要将“sessionID”本身存储在数据库中的某个“用户ID”中,但这是一个糟糕的设计。我认为前者应该有效