微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决第一个hazelcast节点正在关闭,而不是成为主节点

我正在尝试使用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中进行了尝试,通配符已实现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。