我有四个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。
我是否在错误的轨道上认为这是一个问题?还有什么可以导致这个?
答案 0 :(得分:0)
我设法解决了这个问题,但我并不是100%确定根本原因是什么。
我使用的Hazelcast版本是3.8,但我从3.7继承了一个配置。乍一看,唯一的区别是架构正在从" hazelcast-config-3.7.xsd"到" hazelcast-config-3.8.xsd"。
我还将mancenter从3.7版本升级到3.8版本。但是,我不确定会有任何影响。
无论哪种方式,我的四个节点现在都在相互通话。因此,如果您遇到此问题并遇到类似问题,我建议您确保您的配置版本与您部署的版本相匹配。