CentOS 上 ZooKeeper 启动失败的原因有很多,下面我按最常见原因 → 排查方法给你系统梳理一下,你可以逐条对照。
ZooKeeper 不报错在终端,但日志里一定有原因
# 默认日志位置
cat /opt/zookeeper/bin/zookeeper.out
# 或
tail -n 100 /opt/zookeeper/logs/zookeeper-*.log
90% 的问题看这里就能定位
典型问题:
dataDir 不存在检查:
cat conf/zoo.cfg
关键项:
dataDir=/var/lib/zookeeper
clientPort=2181
确保:
mkdir -p /var/lib/zookeeper
如果是 集群,每台机器必须有:
echo 1 > /var/lib/zookeeper/myid
⚠️ 注意:
netstat -tunlp | grep 2181
或
ss -tunlp | grep 2181
如果被占用:
clientPortZooKeeper 依赖 Java
java -version
如果没有:
yum install java-1.8.0-openjdk -y
⚠️ ZooKeeper 3.5+ 建议 JDK 8+
如果你用 root 启动过,后来用普通用户启动:
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /var/lib/zookeeper
否则会:
CentOS 默认 firewalld 开着
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
集群还要放行:
如果你用 service 启动:
systemctl status zookeeper
journalctl -u zookeeper
常见问题:
请你对照:
如果你愿意,直接把下面内容发我:
zookeeper.out 或日志报错zoo.cfgsystemctl status zookeeper(如果有)我可以精准告诉你哪一行错了。