【发布时间】:2017-08-22 16:41:50
【问题描述】:
我有四个虚拟机。我正在与我的应用程序一起以“嵌入式”模式运行 hazelcast,试图将其用于休眠 l2 缓存。
当我尝试启动不同的组时,我的行为很复杂。我认为由于机器的子网划分方式,我遇到了问题。机器 /sbin/ifconfig 显示四个节点之间有 2 台机器的三个子网(node1 和 node4 显示两个网络设备,而不是环回)。
Mancenter 在第五个节点上运行。
机器/子网1/子网2
节点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共享。
行为非常不一致,尽管 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 有时会将一个节点识别为另一个节点,例如目前我正在运行节点 3 和节点 4(节点 1 和节点 2 的应用程序关闭),并且它将其中一个节点识别为节点 2。我想知道这是否与节点在虚拟机上运行(每个虚拟机一个实例)这一事实有关。我相信hostOS是redhat,VM运行的是centOS。
我是否认为这是一个问题?还有什么可能导致这种情况?
【问题讨论】:
-
没有任何更深入的想法我的第一个猜测:子网之间的防火墙?
标签: hazelcast