第一个 hazelcast 节点正在关闭而不是成为主节点

First hazelcast node is shutting down instead of becoming master

我正在尝试使用 tcp/ip 发现来形成集群。我无法理解为什么第一个节点没有被选为主节点。集群中没有其他节点。并且错误日志不是自我解释的。

调试日志:

2020-10-27 05:31:46 DEBUG com.hazelcast.internal.cluster.ClusterService:49 - [192.168.10.31]:5701 [dev] [3.12] Setting master address to null
2020-10-27 05:31:46 DEBUG com.hazelcast.cluster.impl.TcpIpJoiner:49 - [192.168.10.31]:5701 [dev] [3.12] PostJoin master: null, isMaster: false
2020-10-27 05:31:46 ERROR com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Could not join cluster. Shutting down now!
2020-10-27 05:31:46 INFO  com.hazelcast.core.LifecycleService:49 - [192.168.10.31]:5701 [dev] [3.12] [192.168.10.31]:5701 is SHUTTING_DOWN
2020-10-27 05:31:46 WARN  com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Terminating forcefully...
2020-10-27 05:31:46 DEBUG com.hazelcast.internal.cluster.ClusterService:49 - [192.168.10.31]:5701 [dev] [3.12] Setting master address to null
2020-10-27 05:31:46 INFO  com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Shutting down connection manager...

Hazelcast 版本:3.12

<dependency>
  <groupId>com.hazelcast</groupId>
  <artifactId>hazelcast</artifactId>
  <version>3.12</version>
</dependency>

Hazelcast 配置:

String hazelcastClusterMemberOne = 192.168.10.*
Config config = new Config();
        NetworkConfig network = config.getNetworkConfig();
        JoinConfig join = network.getJoin();
        join.getMulticastConfig().setEnabled(false);
        join.getTcpIpConfig().addMember(hazelcastClusterMemberOne)
                .setEnabled(true);

        HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(config);

错误日志:

2020-10-27 05:31:46 [main] ERROR com.hazelcast.instance.Node com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Could not join cluster. Shutting down now!
2020-10-27 05:31:46 [main] INFO  com.hazelcast.core.LifecycleService com.hazelcast.core.LifecycleService:49 - [192.168.10.31]:5701 [dev] [3.12] [192.168.10.31]:5701 is SHUTTING_DOWN
2020-10-27 05:31:46 [main] WARN  com.hazelcast.instance.Node com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Terminating forcefully...
2020-10-27 05:31:46 [main] INFO  com.hazelcast.instance.Node com.hazelcast.instance.Node:49 - [192.168.10.31]:5701 [dev] [3.12] Shutting down connection manager...

编辑: 这发生在托管在 AWS 云上的服务器上,但上面的配置在我的本地机器上运行良好

尝试从通配符更改为显式 IP 地址。

即。 没有

getTcpIpConfig().addMember("192.168.10.*")
                .setEnabled(true);

但是

getTcpIpConfig().addMember("192.168.10.1")
                .setEnabled(true);

或者如果您需要多种可能性,请明确列出它们

getTcpIpConfig().addMember("192.168.10.1")
                .addMember("192.168.10.2")
                .addMember("192.168.10.3")
                .setEnabled(true);

更新如下

TcpIpConfig 并非旨在用于多种可能性。此字段未实现 Wwildcard。您可以列出所有 256 种可能性,或提交实现通配符的 PR。无论哪种方式,它都是 256 端口来探测,这将是缓慢的一面。

如果您在运行时知道第一个节点的地址,则可以将其作为 属性 传递给其他节点。

如果您不这样做,那么其他发现机制之一可能是更好的选择。

另请注意,TcpIpConfig只是发现机制的规范,而不是发现后的通信机制。成员间通信的性能与发现机制的选择无关。

更新以下 2 上面的回答是错误的,现在用3.12.0试过了,实现了通配符。