会话持久性当服务器脱机时,Hazelcast客户端初始化

问题描述 投票:0回答:2

我们正在尝试复制WebSphere Traditional(5/6/7/8/9)关于servlet和http的会话持久性的行为,但是使用Hazelcast和Tomcat。让我解释一下...... WebSphere,即使配置为复制域的客户端,也会保留会话数据的本地寄存器。即使应该保持复制数据的服务器进程从第一时起关闭,这个本地寄存器也能正常工作。也就是说,启动客户端,并且会话持久性在servlet容器中起作用。显然,如果第一个servlet容器崩溃,你不能期望在另一个servlet容器中恢复你的会话,但你的应用程序仍然可以工作。

另一方面,Tomcat容器上的Hazelcast客户端期望Hazelcast服务器(至少一个群集成员)启动并运行以进行初始化。如果没有可用的集群成员,则初始化失败,并且... Tomcat servlet容器中的Web应用程序无法正确启动。他们不会回答任何要求。

此外,一旦初始化失败,只有恢复的方法是关闭并重新启动tomcat web容器(一旦hazelcast集群成员联机)。

这种行为对系统管理员来说有点苛刻:没有人可以保证备份服务作为分布式会话持久性始终在线。这意味着启动Tomcat客户端成为一项危险的任务,设计出现单点故障,这是不可取的。

现在,也许我忽视了一些事情,也许我弄错了。那么,有没有人设法在没有服务器的情况下启动Hazelcast客户端,以及如何?对我们来说,差异是决定性的:如果我们不能让网络容器从淡化广播服务器离线开始,那么我们必须继续使用WebSphere。

我们一直在虚拟盒5.2.22上的CentOS 7.5上尝试它,而我们的Tomcat版本是8.5。 Hazelcast客户端和服务器是3.11.1 / 2。

<group>
    <name>Integracion</name>
    <password></password>
</group>

<network>
  <cluster-members>
    <address>hazelcastsrv1/address>
    <address>hazelcastsrv2</address>
  </cluster-members>
</network>

遗憾的是,我们期望得到我们得到的结果:阅读Hazelcast手册表明离线服务器不允许tomcat为应用程序提供服务。但我们无法相信我们所阅读的内容,因为它使得图书馆在分布式环境中不安全。我们预计会出错,并且即将发布好消息。

session tomcat configuration persistence hazelcast
2个回答
0
投票

Hazelcast不是“a single point of failure by design”。设计是为了避免单点故障。默认情况下,数据在节点间进行镜像。

它是一个数据网格,您可以像容量和弹性所需的那样运行多个节点,并将它们聚集在一起。

如果您需要3个节点才能成功运行,并且还预计1可能会关闭,那么您需要总共运行4个节点。如果发生这种失败,那么你就拥有了一个足够大的集群。


0
投票

只要您在断电期间提供剩余节点,就有足够的时间让重新分区完成,因此开启/关闭电源顺序与Hazelcast无关。例如,在4节点集群中,如果您取出1个节点并给另外3个空间来完成重新分区,那么您不会丢失数据。如果一起取出2个节点,则群集将没有备份存储在您取出的2个节点中的1个节点上的数据。

对于启动,启动顺序不相关,因为每个节点拥有基于一致散列确定的某些分区集。即使有节点离开/加入正在运行的集群,这种所有权也会不断变化。

© www.soinside.com 2019 - 2024. All rights reserved.