用于异构不同应用程序的Tomcat集群会话复制

时间:2014-03-10 18:52:24

标签: session tomcat authentication replication load-balancing

所以我可能会在脑海中知道这个问题的答案,但我似乎没有指出它,当我想到它时我会更加困惑。

我正在对Web应用程序架构进行一些研究,以实现高可伸缩性/可维护性(以及所有其他很酷的东西)。我正在尝试研究一种我们拥有3节点集群的架构。

节点1. [高安全性,中等内存,低磁盘空间]具有管理应用程序,如configurationService,authenticationService(我称之为admin0)

节点2. [MEDIUM SECURITY,LOW RAM,HIGH DISK SPACE]具有面向内容的应用程序,例如媒体服务(如文件托管),配置文件等等。只是存储导向节点,我称之为misc0。

节点3. [低安全性,高内存,中等磁盘空间]具有业务应用程序,即Web应用程序的核心应用程序。

因此,这将分离关注点,如果我们想要扩展,我们可以单独扩展每个节点。另外,我认为节点3将是具有最大负载的节点。

现在,问题是,如果用户在node1(admin0)/ authenticationService上进行了身份验证,我希望为群集中的所有应用程序激活他的会话,这样他们就不必再查询authenticationService了,他们应该只看一下他们当地的HttpSession。

现在,使用Delta(或备份)管理器的Tomcat群集提供此功能,但它们仅与安装此应用程序的节点共享会话。虽然delta管理器会分享会话,即使app没有安装在同行上,但我不知道如何使用该会话?我知道你可以将cookie的路径设置为“/”,这是我的解决方案吗?

我在某个地方犯了建筑错误吗?我的意思是我最好使用单点登录解决方案或?

1 个答案:

答案 0 :(得分:0)

即使使用单点登录(SSO),每个Web应用程序都会获得不同的HttpSession,因此您不能只是“查找其本地HttpSession”。如果您使用Tomcat的SSO,我不清楚它是否适用于群集。

如果将cookie路径设置为“/”,则只会造成混淆,因为您需要为不同的应用程序使用不同的会话ID。