第一个 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试过了,实现了通配符。
我正在尝试使用 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试过了,实现了通配符。