Docker外运行Storm Supervisor,Nimbus容器化部署连接失败求助
解决本地Supervisor连接Docker中ZooKeeper失败的问题
核心问题分析
日志中的Connection refused明确说明本地Supervisor无法连接到ZooKeeper服务,虽然UI能正常访问localhost:9090,但ZooKeeper的2181端口连通性故障是导致Supervisor启动失败的关键原因。
具体排查与修复步骤
1. 确认Docker Compose中ZooKeeper的端口映射配置
打开你的docker-compose.yml,检查ZooKeeper服务的端口映射和监听配置是否正确:
services: zookeeper: image: zookeeper:3.8 ports: - "2181:2181" # 必须保证本地2181端口映射到容器内的2181端口 environment: ZOO_LISTEN_ALL_IPV6: "true" # 确保ZK监听所有网络地址,而非仅容器内部
若配置缺失或错误,修改后重启ZK容器:
docker-compose up -d zookeeper
2. 验证本地到ZK端口的连通性
在本地终端执行命令测试2181端口是否可达:
nc -zv localhost 2181 # 或使用telnet命令 telnet localhost 2181
若返回连接失败,优先排查ZK容器是否正常启动、端口映射是否生效。
3. 检查ZK容器的运行状态与日志
查看ZK容器是否处于正常运行状态:
docker-compose ps zookeeper
若状态不为Up,查看容器日志定位启动故障:
docker-compose logs zookeeper
确保日志中出现binding to port 0.0.0.0/0.0.0.0:2181类信息,说明ZK已正确监听所有地址。
4. 修正本地Storm的storm.yaml配置
- ZooKeeper地址配置:确认配置为
localhost(端口映射正确时),若修改过ZK端口,需补充端口配置:zookeeper.servers: - "localhost" zookeeper.port: 2181 # 若映射了其他端口,替换为对应数值 - Nimbus地址配置:由于Nimbus在Docker容器中,本地Supervisor不能直接用
localhost访问,需替换为容器IP或确保Nimbus的6627端口已映射到本地:
可通过nimbus.seeds: - "127.0.0.1" # 若Nimbus的6627端口已映射到本地,可使用该值;否则用容器IP nimbus.thrift.port: 6627 # 对应容器映射的端口docker inspect <nimbus容器名称>获取容器IP。
5. 重启本地Supervisor
修改配置后,终止当前Supervisor进程,重新执行启动命令:
storm supervisor
内容的提问来源于stack exchange,提问作者Aravindh Vasu
相关产品推荐
相关产品推荐

