【问题标题】:Hazelcast nodes refusing to join eachotherHazelcast 节点拒绝互相加入
【发布时间】: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


【解决方案1】:

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

我使用的 Hazelcast 版本是 3.8,但我继承了 3.7 的配置。乍一看,唯一的区别是架构从“hazelcast-config-3.7.xsd”更改为“hazelcast-config-3.8.xsd”。

我还把 mancenter 从 3.7 版本升级到了 3.8 版本。但是我不确定这会产生什么影响。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多