我试图同时启动2个hazelcast节点,但他们无法发现彼此。对于多播和tcp-ip发现都是如此。 如果我稍后重新启动一个节点 - 他们会看到对方。 有没有办法让他们在不重新启动的情况下发现对方?或者如何在节点启动期间推迟发现?
配置:
<network>
<port auto-increment="true">5701</port>
<outbound-ports>
<!--
Allowed port range when connecting to other nodes.
0 or * means use system provided port.
-->
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="true">
<multicast-group>224.3.3.6</multicast-group>
<multicast-port>5705</multicast-port>
</multicast>
</join>
</network>
或
<multicast enabled="false">
<multicast-group>224.3.3.6</multicast-group>
<multicast-port>5705</multicast-port>
</multicast>
<tcp-ip enabled="true">
<member>host1:5701</member>
<member>host2:5701</member>
<member>host3:5701</member>
<member>host4:5701</member>
</tcp-ip>
UPD:通过在群集初始化之前手动添加随机睡眠来解决。
答案 0 :(得分:1)
你的节点运行得足够长吗?根据我的经验,它可能需要相当长的时间(30秒),直到节点找到彼此 - 独立于发现通信(多播与TCPIP)。
After several trials and erros, Hazelcast.com and me found quite a simple solution:
config.setProperty("hazelcast.initial.min.cluster.size","2");
在我的实验中,解决方案比等待一段时间更快更稳定。