提问人:Divyaa 提问时间:10/27/2020 最后编辑:Divyaa 更新时间:10/28/2020 访问量:2729
第一个 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云上的服务器上,但上述配置在我的本地机器上运行良好
答:
0赞
Neil Stevenson
10/27/2020
#1
尝试从通配符更改为显式 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 尝试过了,通配符实现了。
评论
0赞
Divyaa
10/27/2020
我给出通配符的原因是成员的 IP 地址不是静态的,它们可能在 0 - 255 之间变化
0赞
Neil Stevenson
10/27/2020
明白了,已经更新了我的答案,更详细了。
0赞
Divyaa
10/28/2020
我的印象是支持通配符,这就是让我失望的原因!谢谢!但是知道为什么通配符在我的本地设置中起作用吗?
0赞
Neil Stevenson
10/28/2020
嗨,是的,似乎是,实际上已经尝试过了。所以这不是问题。我看到你在AWS上,所以也许AWS Discovery Plugin将是前进的方向。但是,了解 AWS 上的错误原因仍然很有用。您有更多可以共享的日志吗?如果您正在尝试一系列 IP 地址,则可能会找到其他人的集群,但被拒绝连接到该集群。
0赞
Divyaa
10/28/2020
在日志中,我看到节点向成员列表中的所有 ip 发送主问题。一些 ip 重新列出。当节点声称是主节点时,会出现以下错误:在此之后,主地址设置为空,节点关闭。2020-10-27 05:31:46 DEBUG com.hazelcast.cluster.impl.TcpIpJoiner:49 - [192.168.10.31]:5701 [dev] [3.12] com.hazelcast.spi.exception.RetryableIOException: Packet not sent to -> [192.168.10.111]:5703 over null
评论