CentOS 上 Zookeeper 连接不上的排查与修复
一 快速自检
sudo systemctl status zookeeper、sudo systemctl start zookeeper、sudo systemctl restart zookeeper;日志路径通常为 /var/log/zookeeper/zookeeper.out,也可用 journalctl -u zookeeper 查看。若使用安装包自带的脚本,也可在 /path/to/zookeeper/bin/zkServer.sh status 查看。sudo netstat -tulpen | grep 2181 或 ss -lntp | grep 2181,确认 2181 处于监听状态且进程为 java。telnet ZK_IP 2181 或 nc -vz ZK_IP 2181;若不通,多半是网络或防火墙问题。echo stat | nc localhost 2181、echo ruok | nc localhost 2181、echo mntr | nc localhost 2181,分别用于查看状态、是否“OK”、以及监控指标。二 常见原因与对应修复
sudo systemctl stop firewalld;生产环境建议放行端口:sudo firewall-cmd --permanent --add-port=2181/tcp && sudo firewall-cmd --reload。如使用云主机,还需在安全组放行 2181/TCP。clientPort=2181、dataDir、server.x=host:2888:3888;集群中每个节点的 myid 必须与其 server.x 的数字一致,且文件权限正确。2181 被其他进程占用,使用 netstat/ss 找到 PID 并释放或终止:sudo kill <PID>;随后重启 Zookeeper。java -version 检查;若未安装,建议安装 OpenJDK 8:sudo yum install java-1.8.0-openjdk-devel。三 配置与连通性核对清单
tickTime=2000dataDir=/var/lib/zookeeperclientPort=2181server.1=192.168.1.100:2888:3888server.2=192.168.1.101:2888:3888server.3=192.168.1.102:2888:3888connectString=192.168.1.100:2181,192.168.1.101:2181,192.168.1.102:2181;必要时适当增大超时与重试。四 高频报错与处理
ping 与 telnet/nc 测试网络与端口;检查 clientPort、防火墙/安全组、以及 /etc/hosts 或 DNS 主机名解析是否正确。server.x 配置、myid 一致性、节点间 2888/3888 端口连通性,以及防火墙策略。五 一键排查命令清单
sudo systemctl status zookeeper、sudo systemctl restart zookeeper、tail -f /var/log/zookeeper/zookeeper.out、journalctl -u zookeeperss -lntp | grep 2181、netstat -tulpen | grep 2181、sudo lsof -iTCP:2181 -sTCP:LISTENping ZK_IP、telnet ZK_IP 2181、nc -vz ZK_IP 2181sudo firewall-cmd --list-all、sudo firewall-cmd --permanent --add-port=2181/tcp && sudo firewall-cmd --reloadecho stat | nc localhost 2181、echo ruok | nc localhost 2181、echo mntr | nc localhost 2181java -versioncat /etc/zookeeper/conf/zoo.cfg、cat /var/lib/zookeeper/myid