Hazelcast节点拒绝加入彼此

时间:2017-08-22 16:41:51

标签: hazelcast

我有四个VM。我在“嵌入式​​”模式下运行hazelcast和我的应用程序,试图将它用于hibernate l2缓存。

当我尝试启动不同的组时,我会出现混合行为。我认为由于机器是如何划分子网而遇到问题。 machines / sbin / ifconfig显示四个节点之间有两台机器的三个子网(node1和node4显示除环回之外的两个网络设备)。

Mancenter正在第五个节点上运行。

机/ subnet1 / subnet2

node1 10.10.40.1 10.10.27.1

node2 10.10.42.1

node3 10.10.40.2

node4 10.10.42.2 10.10.27.2

因此node1和node3共享子网,node1和node4共享,node2和node4共享。

行为非常不一致,尽管node1和node2一起启动似乎可靠地形成一个集群,node1和node3也是如此。其他组合似乎进入裂脑情景,看起来我有两个或更多具有相同名称的集群。

查询我们的内部DNS,主机名将解析为10.10.40和10.10.42 IP。

它们具有相同的配置。我已经尝试将接口打开到10.10.40。*和10.10.42。*以及将hazelcast.socket.bind.any变为false。由于我们的部署框架在集群中具有相同的配置,因此具有高优先级。

我已尝试按主机名和IP(从主机名的nslookup解析的那个)列出节点。按主机名列出将是运营的要求。

在某些情况下,我设法让它们形成一个集群,虽然迁移失败,因为它抱怨它无法到达其中一个节点。

好奇心我注意到mancenter有时会将节点标识为另一个节点,例如当前我运行node3和node4(node1和node2的应用程序关闭),并且它将其中一个标识为node2。我想知道这是否与节点在VM上运行(每个VM一个实例)有关。我相信hostOS是redhat,VM正在运行centOS。

我是否在错误的轨道上认为这是一个问题?还有什么可以导致这个?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,但我并不是100%确定根本原因是什么。

我使用的Hazelcast版本是3.8,但我从3.7继承了一个配置。乍一看,唯一的区别是架构正在从" hazelcast-config-3.7.xsd"到" hazelcast-config-3.8.xsd"。

我还将mancenter从3.7版本升级到3.8版本。但是,我不确定会有任何影响。

无论哪种方式,我的四个节点现在都在相互通话。因此,如果您遇到此问题并遇到类似问题,我建议您确保您的配置版本与您部署的版本相匹配。