在 CentOS 上启动 Zookeeper 失败通常是由于配置错误、端口冲突、权限问题或 Java 环境配置问题导致的。我们可以逐步排查:
一、查看错误日志
Zookeeper 的日志目录一般在:
/your-zookeeper-path/logs/zookeeper.out
或者:
/your-zookeeper-path/logs/zoo.log
先执行:
tail -n 100 logs/zookeeper.out
根据日志的报错内容来定位问题。
二、常见问题排查与解决
1. Java 环境没配置好
Zookeeper 依赖 Java 运行环境。
检查是否安装 Java:
java -version
没安装就安装:
sudo yum install java-1.8.0-openjdk -y
检查 JAVA_HOME 是否设置:
echo $JAVA_HOME
若未设置,可添加到 .bash_profile:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bash_profile
2. 配置文件错误
主要看 conf/zoo.cfg 文件。
一个最小配置如下:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/tmp/zookeeper
clientPort=2181
确保 dataDir 目录存在并有权限:
mkdir -p /tmp/zookeeper
chown -R your-user:your-user /tmp/zookeeper
3. 端口被占用
Zookeeper 默认使用 2181 端口,如果被其他程序占用了,也会导致启动失败。
检查端口是否被占用:
netstat -tulnp | grep 2181
或者
ss -tuln | grep 2181
如果被占用,可以:
杀掉该进程
或者修改 zoo.cfg 里的 clientPort=新端口
4. Zookeeper进程未正常退出
有时是因为上次异常关闭了,dataDir 中的 zookeeper_server.pid 文件还在。
可以尝试清理一下:
rm -f /tmp/zookeeper/zookeeper_server.pid
5. 权限问题
确保你是以合适用户运行,且有权限访问相关目录:
chmod -R 755 /your-zookeeper-dir
chown -R your-user:your-user /your-zookeeper-dir
6. 防火墙限制
如果你是在远程连接 ZooKeeper,还要确保端口已放行:
sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
sudo firewall-cmd --reload
三、启动方式建议
使用 zkServer.sh 启动:
bin/zkServer.sh start
查看状态:
bin/zkServer.sh status
额外建议:
尽量避免用 root 启动 Zookeeper,最好用普通用户。可以添加系统服务脚本,设置开机自启。