我有几个服务器之间分布的几个Tomcat服务器的设置,都运行相同的事情。 Apache在Apache服务器之前,在Apache服务器之前是负载平衡器。 我想要使用共享会话对Tomcat进行群集,以最大限度地减less部署应用程序时的停机时间和用户中断。
我知道集群可以在同一台服务器上工作,但是可以通过在不同机器上的服务器之间共享会话的方式来设置Tomcat吗?
=> Server 1 ==> Apache 1 ===> Tomcat 1 => Server 2 ==> Apache 2 ===> Tomcat 2
当服务器/ Tomcat 1被取消时,用户和他们的会话将转移到Server / Tomcat 2,反之亦然。
看看Teracotta的networking会话 。
使用Terracotta快速,可靠的Web会话插件来获得无状态Web架构的可扩展性优势,而不会超载数据库或重写应用程序。 兵马俑会议与您最喜爱的Web框架和您自己的自定义会话对象。
networking会话教程列出了五个简单的步骤供您评估产品(FOSS)。
我正在设置相同的事情,从Apache的下面的链接给出了如何实现这个概述:
http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html
基本上有两部分:
1)使会话对象可序列化
2)在tomcat(server.xml)中设置集群configuration。
根据您使用的tomcatpipe理器,您可能必须在您的节点上启用多播,才能启用节点之间的通信。 会话复制是由tomcat通过这些组播ping来处理的。我看到很多人使用这种方法,并且已经为他们工作(似乎是一个标准/简单的方法)。
另外这里有一个详细的博客文章也是一样的 – 有5个部分,还有一些video。
http://www.ramkitech.com/2012/10/tomcat-clustering-series-simple-load.html
PS:
我正在使用相同的方法,与2个tomcat节点相同的问题。 我正面临着一个小问题,下面将对此进行介绍。如果您成功/遇到过类似的问题,请看看这个
Tomcat会话复制问题
你可以将会话保存在数据库中,这样它们就可以从两个tomcat中访问。 或者将它们存储在tomcat之间的共享目录中。
您可以将会话保存在两台服务器共享的memcached中 。 这应该比使用数据库中的共享会话或n个服务器之间的共享目录提供更好的性能和可伸缩性。