我有四个虚拟机。我在我的应用程序中以“嵌入”模式运行hazelcast,试图将它用于hibernate l2缓存。Hazelcast节点拒绝加入彼此
当我尝试启动不同的组时,会出现混合行为。由于机器的子网划分,我认为我遇到了问题。 machines/sbin/ifconfig显示四个节点之间有两台机器的三个子网(node1和node4显示除回环以外的两个网络设备)。
Mancenter正在第五个节点上运行。
机/ subnet1/subnet2
节点1 10.10.40.1 10.10.27.1
节点2 10.10.42.1
节点3 10.10.40.2
节点4 10.10.42.2 10.10.27.2
因此,node1和node3共享一个子网,node1和node4共享,node2和node4共享。
行为非常不一致,尽管节点1和节点2一起开始似乎可靠地形成一个群集,就像节点1和节点3一样。其他组合似乎进入裂脑方案,在那里它出现我有两个或更多具有相同名称的集群。
查询我们的内部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。我想知道这是否与节点在虚拟机上运行(每个虚拟机一个实例)有关。我相信hostOS是redhat,虚拟机运行centOS。
我在错误的轨道上认为这是一个问题?还有什么可以造成这种情况?
没有更深的想法我的第一个猜测:子网之间的防火墙? – noctarius