Linux 上 ZooKeeper 连接失败,常见原因可以按下面几类排查:
现象:Connection refused
检查:
ps -ef | grep zookeeper
或
netstat -tunlp | grep 2181
如果没监听 2181:
zkServer.sh start
tail -f zookeeper.out
现象:本机能连,远程连不上
检查:
telnet ip 2181
防火墙:
# centos
firewall-cmd --list-all
# 或
iptables -L -n
开放端口:
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
云服务器还要看 安全组。
常见问题:
clientPort 不是 2181127.0.0.1检查:
cat conf/zoo.cfg | grep clientPort
如果:
clientPortAddress=127.0.0.1
远程是无法连接的。
现象:Cannot open channel to x at election address
检查:
myid 文件是否存在server.x=host:2888:3888 是否写对myid 和 server.x 对应错误示例:
new ZooKeeper("localhost:2181", 5000, null);
但在远程机器上跑。
确认:
| 报错 | 原因 |
|---|---|
| Connection refused | 服务没起 / 端口错 |
| Connection timed out | 防火墙 / 网络 |
| Session expired | 网络抖 / 超时短 |
| No route to host | IP 错 / 网络不通 |
如果你愿意,可以把 具体报错信息 + zoo.cfg + 启动日志 发出来,我可以直接帮你定位是哪一条。