【发布时间】:2018-08-23 13:14:58
【问题描述】:
在同一台机器上有两个节点的本地(测试)设置中(使用端口范围为 47500..47501 的静态 IP 配置),“第二个”节点不会加入集群;它发出一个TcpDiscoveryJoinRequestMessage,似乎由“第一个”节点回答,但在网络超时发生(20 秒)后,它显示“节点尚未连接到拓扑”消息并继续发送随后的发现加入消息被第一个节点忽略(“Ignoring join request message since node is already in topology”)。
这同样适用于(两个裸机和虚拟机)docker 机器上的(“真实”)集群设置。
这是一个已知问题吗?关于在哪里/寻找什么的任何建议? Ignite 发出大量日志 (TcpDiscoverySpi),但我看不到任何可能解释该行为的错误或警告。静态 IP 配置和自定义网络超时生效。
配置以 yml 形式给出,以构建一个配置 bean(Spring Boot 应用程序),该 bean 反过来构建实际的 Ignite 配置。
grid:
discovery:
network-timeout: 20000
join-timeout: 20000
static:
enabled: true
addresses: 127.0.0.1:47500..47501
TcpDiscoveryVmIpFinder 有效(如日志所示)。
另请参阅node logs (TcpDiscoverySpi) 中的相关部分。
【问题讨论】:
-
可以分享一下配置吗?
-
@Denis - 当然。我已经相应地编辑了原始帖子。
-
日志也会有所帮助。请在 pastebin.com 之类的地方上传完整日志如果节点在不同的机器上启动,您是否发现此问题?
-
@Denis - 来自两个节点的相关日志可以在 here 找到。在不同的机器(Docker 容器)上启动时也会发生这种情况。
-
节点2的日志中有一条消息:
Restored topology from node added message。之后TcpDiscoveryNodeAddedMessage应该被发送回协调器,但日志中没有Message has been sent to next node记录。这意味着,tcp-disco-msg-worker线程卡在中间的某个地方。看到“restored topology”的消息后,请把第二个节点的线程转储,让我看看。