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

Session 如何在独立的tomcat实例之间共享会话,session,tomcat,grails,Session,Tomcat,Grails,我有几个tomcat实例在物理上独立的机器上运行 我想将tomcat配置为在此实例之间共享会话 我已尝试从配置org.apache.catalina.session.PersistentManager。但我只在关闭tomcat实例时看到会话文件,我不知道这些实例是否共享此会话。我想不是。因为如果tomcat只在关机时写下会话是没有意义的 我发现的另一件事是,但我不能做到这一点,因为这些机器彼此看不见。它们只共享要使用的存储路径 我认为我可以做的另一件事是实现一个,但它似乎有点棘手 我必须补充一点

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

我想将tomcat配置为在此实例之间共享会话

我已尝试从配置org.apache.catalina.session.PersistentManager。但我只在关闭tomcat实例时看到会话文件,我不知道这些实例是否共享此会话。我想不是。因为如果tomcat只在关机时写下会话是没有意义的

我发现的另一件事是,但我不能做到这一点,因为这些机器彼此看不见。它们只共享要使用的存储路径

我认为我可以做的另一件事是实现一个,但它似乎有点棘手

我必须补充一点,我正在使用tomcat部署grails war文件,我正在使用grails会话。我想这和春天有关


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

你让F5大IP在tomcat服务器前进行负载平衡,因此它会通过将你送回正确的tomcat服务器来处理负载平衡。使用
粘性循环
算法

根据您评论中的用例-

我想做的是保存一些 会话中的数据,然后重定向到 登录服务器,谁在成功 场景它重定向到我的服务器。 我关心的是如果 负载平衡器将请求重定向到 以前不使用的服务器 已在会话中保存所需的数据。 也许我需要的是粘性治疗。 所以:我可以在中配置粘性会话吗 非tomcat集群环境

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


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

为什么需要在应用服务器级别共享会话?我想我问的是,你能用粘性会话解决你的问题吗?我想你说的是配置一个集群,让tomcat实例彼此看到。我不能这样做,因为拓扑结构不同。在过去,我们开发了自己的会话管理器。这一个在存储器中共享会话。但是现在我们想在服务器级别使用一些会话配置。不,粘性会话是指上游负载平衡器记住哪台机器有哪个会话,然后将用户重新路由到有他/她的会话的机器。Aaron问你为什么一开始就需要分享这些课程。你想这样做是为了故障切换吗?@javid谢谢,是的,我建议damian提供更多关于他试图首先解决的问题的信息,然后也许他可以得到更好的响应OK,很抱歉我的无知。我试图做的是在会话中保存一些数据,然后重定向到登录服务器,在成功的情况下,它会重定向到我的服务器。我关心的是,如果负载平衡器将请求重定向到之前未在会话中保存所需数据的服务器,会发生什么情况。也许我需要的是粘性治疗。那么:我可以在非tomcat集群环境中配置粘性会话吗?谢谢你advance@damian:在这种情况下,会话故障转移也将由大IP完成。@damian:我链接的文章展示了如何在相同的配置中验证故障转移。试试看。