You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Storm集群异常:Nimbus连接失败与Supervisor进程终止排查求助

问题诊断

从你的日志和现象来看,核心问题是远程Supervisor节点(166、172)无法与Nimbus节点(165)建立Thrift连接,导致Supervisor找不到Nimbus Leader,进而无法启动Worker进程,甚至自身崩溃。而165本地的Supervisor能正常工作,是因为它可以通过localhost访问Nimbus,避开了跨节点的网络绑定问题。

可能的原因

最常见的情况是:Storm Nimbus默认只绑定了localhost(127.0.0.1),导致其他节点无法通过192.168.23.165这个IP访问到Nimbus的Thrift服务(默认端口6627)。

解决方案步骤

1. 修改Nimbus节点的Storm配置

在165节点的storm.yaml配置文件中,添加或修改以下配置项,确保Nimbus绑定到对外可访问的IP:

# 指定Nimbus的对外主机地址
nimbus.host: "192.168.23.165"
# 确保Thrift服务绑定到所有网卡(或者直接指定192.168.23.165)
nimbus.thrift.bind.host: "0.0.0.0"
nimbus.thrift.bind.port: 6627

注:nimbus.thrift.bind.host设为0.0.0.0表示监听所有网卡,这样无论是本地还是远程节点都能访问。

2. 验证Nimbus的监听状态

在165节点执行以下命令,检查Nimbus的Thrift端口是否正确监听:

netstat -tulpn | grep 6627

你需要看到类似这样的输出(监听地址是0.0.0.0或者192.168.23.165,而不是127.0.0.1):

tcp        0      0 0.0.0.0:6627            0.0.0.0:*               LISTEN      1234/java

3. 重启Nimbus服务

修改配置后,重启165节点的Storm Nimbus进程:

# 停止Nimbus
storm nimbus stop
# 后台启动Nimbus
storm nimbus &

4. 验证远程节点的连通性

在166或172节点,测试能否连接到165的6627端口:

# 使用telnet测试
telnet 192.168.23.165 6627
# 或者用nc(如果已安装)
nc -zv 192.168.23.165 6627

如果能成功连接,说明网络问题已经解决。

5. 重启Supervisor并测试拓扑

在166、172节点重启Supervisor进程:

storm supervisor stop
storm supervisor &

然后重新提交拓扑,检查jps -l是否能看到Worker进程,同时查看supervisor.log是否还有连接拒绝的错误。

额外排查点

如果上述步骤无效,可以检查以下内容:

  • 确认storm.local.dir目录在所有节点都存在,且Storm进程有读写权限(执行ls -ld /opt/storm/data查看权限)。
  • 验证ZK的连通性:在166/172节点执行zkCli.sh -server 192.168.23.165:2181,确认能正常连接ZK。
  • 检查Storm版本一致性:所有节点的Storm版本都是1.2.3,避免版本不兼容导致的通信问题。

内容的提问来源于stack exchange,提问作者xj y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:04:55