如果2个节点同时启动,则它们不会相互看到

时间:2013-10-07 20:01:36

标签: java hazelcast

我试图同时启动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:通过在群集初始化之前手动添加随机睡眠来解决。

1 个答案:

答案 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");

在我的实验中,解决方案比等待一段时间更快更稳定。