2

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

4

1 回答 1

1

您的节点运行时间是否足够长?根据我的经验,节点可能需要相当长的时间(30 秒)才能找到彼此 - 独立于发现通信(多播与 TCPIP)。

经过几次试验和错误,Hazelcast.com 和我找到了一个非常简单的解决方案

config.setProperty("hazelcast.initial.min.cluster.size","2");

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

于 2013-12-23T13:51:37.697 回答