Apache Ignite配置静态IP后网络通信失败,求排查配置问题
Ignite集群静态IP发现部署报错排查方案
核心报错原因是节点被集群判定已离线,导致查询取消请求发送失败,相同配置在其他环境正常,问题集中在当前环境的网络解析、端口连通性、地址绑定配置三个维度,可按以下步骤逐一排查:
- 修正Ignite地址绑定与发现配置
你当前仅配置了IP发现列表,未显式指定节点自身绑定地址,Ignite默认会通过主机名反向解析得到绑定IP。从日志可见节点套接字地址携带DHCP域名fl-76-3-16-110.dhcp.embarqhsd.net,说明反向DNS解析结果和预期静态IP不匹配,直接影响集群节点互认。
调整后配置示例:TcpDiscoverySpi spi = new TcpDiscoverySpi(); // 显式绑定当前节点实际静态IP,规避反向DNS解析异常 spi.setLocalAddress("76.3.16.XXX"); // 显式指定发现端口,避免随机端口导致的连通问题 spi.setLocalPort(47500); TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); // IP后追加默认发现端口范围,覆盖Ignite默认端口区间 ipFinder.setAddresses(Arrays.asList( "76.3.16.109:47500..47509", "76.3.16.110:47500..47509", "76.3.16.111:47500..47509", "76.3.16.112:47500..47509", "76.3.16.113:47500..47509" )); spi.setIpFinder(ipFinder); - 验证节点间网络连通性
逐个节点测试所有集群节点的发现端口(默认4750047510)、通信端口(默认4710047110)互通性,确认无防火墙、安全组、ACL拦截,测试命令参考:nc -zv 76.3.16.109 47500
同时在所有节点的/etc/hosts中追加全部集群节点的IP映射,彻底规避DNS解析超时/错误问题:76.3.16.109 ignite-node-1 76.3.16.110 ignite-node-2 76.3.16.111 ignite-node-3 76.3.16.112 ignite-node-4 76.3.16.113 ignite-node-5 - 调整超时适配高延迟网络
如果当前环境网络延迟高于其他正常环境,默认的超时配置会导致节点被误判离线,可调整如下参数:// 套接字超时从默认5秒调整为30秒 spi.setSocketTimeout(30000); // 响应超时从默认5秒调整为15秒 spi.setAckTimeout(15000); // 网络总超时调整为60秒 spi.setNetworkTimeout(60000); - 验证IP地址有效性
日志中的DHCP域名说明当前节点IP是DHCP分配,即使手动配置了静态IP,也要确认DHCP租期未到期、IP未被回收,节点网卡实际绑定IP和配置的发现列表IP完全一致。
内容的提问来源于stack exchange,提问作者biandeqiang
相关产品推荐
相关产品推荐

