两台机器之间可以实现 Tomcat 共享会话/集群吗?

两台机器之间可以实现 Tomcat 共享会话/集群吗?

我设置了几个 Tomcat 服务器,分布在几台服务器上,所有服务器都运行相同的程序。Apache 位于 Apache 之上,Apache 服务器前面有一个负载均衡器。我想使用共享会话对 Tomcat 进行集群,以在部署应用程序时最大限度地减少停机时间和用户中断。

我知道集群在同一台服务器内工作,但是否可以设置 Tomcat 以使其在不同机器上的服务器之间共享会话?

=> Server 1
==> Apache 1
===> Tomcat 1

=> Server 2
==> Apache 2
===> Tomcat 2

当服务器/Tomcat 1 关闭时,用户及其会话将转移到服务器/Tomcat 2,反之亦然。

答案1

看一眼用于 Web 会话的 Teracotta

使用 Terracotta 快速、可靠的 Web 会话插件,即可获得无状态 Web 架构的可扩展性优势,而无需超载数据库或重写应用程序。Terracotta for Sessions 可与您喜欢的 Web 框架和您自己的自定义会话对象配合使用。

网络会话教程列出了您评估产品(FOSS)时需要采取的五个简单步骤。

答案2

我正在设置同样的东西,Apache 的以下链接概述了如何实现这一点:

http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

这基本上分为两个部分:

1)使会话对象可序列化

2)在 tomcat(server.xml)中设置集群配置。

根据您使用的 tomcat 管理器,您可能必须在节点上启用多播,以启用节点之间的通信。会话复制由 tomcat 通过这些多播 ping 处理。我见过许多人使用这种方法,而且这种方法对他们很有效(似乎是一种标准/简单的方法)。

这里还有一篇关于相同主题的详细博客文章 - 共有 5 个部分,还有一些视频。

http://www.ramkitech.com/2012/10/tomcat-clustering-series-simple-load.html

附言:

我正在使用相同的方法,解决 2 个 tomcat 节点的相同问题。我遇到了一个小问题,记录如下,如果您成功/遇到类似问题,请查看此内容

Tomcat 会话复制问题

答案3

您可以将会话保存在数据库中,这样两个 tomcat 都可以访问它们。或者将它们存储在 tomcat 之间的共享目录中。

答案4

您可以将会话保存在memcached,在两台服务器之间共享。这应该比在数据库中使用共享会话或 n 台服务器之间的共享目录提供更好的性能和可扩展性。

相关内容