1. ZooKeeper服务无法启动
sudo systemctl status zookeeper确认服务是否处于“active (running)”状态。若未启动,尝试sudo systemctl start zookeeper启动服务。/var/log/zookeeper/zookeeper.out或/opt/apache-zookeeper-*/logs/zookeeper.log,通过tail -f /var/log/zookeeper/zookeeper.out实时查看启动错误信息(如配置错误、端口占用)。/etc/zookeeper/conf/zoo.cfg(或自定义路径)的关键配置:dataDir(数据目录需存在且可写)、clientPort(默认2181,需未被占用)、server.X(集群节点需与myid文件一致)。若有语法错误或多余空格,修正后重启服务。netstat -apn | grep 2181(或ss -ltnp | grep 2181)检查2181端口是否被其他进程占用。若占用,杀掉进程(kill -9 <PID>)后重启ZooKeeper。java -version验证。若未安装,使用sudo apt install openjdk-11-jdk安装;若版本不符,调整JAVA_HOME环境变量(在zkServer.sh中添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64)。2. 客户端无法连接ZooKeeper
ping <zookeeper-server-ip>测试客户端与服务器的网络连接。若不通,排查网络配置或防火墙。telnet <zookeeper-server-ip> 2181测试2181端口是否可达。若不可达,开放防火墙端口(sudo ufw allow 2181/tcp)。zoo.cfg中的clientPort是否与客户端连接的端口一致(默认2181)。zoo.cfg中的maxClientCnxns参数(如设置为500),重启服务生效。3. 集群无法形成Leader或节点状态异常
dataDir(如/var/lib/zookeeper)下需有myid文件,内容为zoo.cfg中server.X的X值(如server.1对应myid内容为1)。若不一致,修正后重启集群。zoo.cfg中的server.X列表需包含所有集群节点的IP和端口(格式:server.X=IP:2888:3888),且所有节点的配置文件一致。zkServer.sh status -path /path/to/zookeeper/conf/zoo.cfg查看每个节点的状态(Leader/Follower)。若状态为“standalone”或持续报错,检查节点间的网络延迟(使用ping或traceroute)。sudo ufw allow 2888/tcp; sudo ufw allow 3888/tcp)。4. Java环境问题
sudo apt install openjdk-11-jdk安装OpenJDK 11。zkServer.sh脚本开头添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64(路径根据实际安装位置调整),确保ZooKeeper能找到Java。which java确认Java可执行文件路径,确保JAVA_HOME/bin在PATH环境变量中。5. 资源不足导致运行不稳定
top、htop或free -h查看CPU、内存使用情况,使用df -h查看磁盘空间。若资源不足,考虑升级硬件或优化ZooKeeper配置(如减少tickTime降低心跳频率)。zkServer.sh中的JVM参数(如-Xmx2G -Xms1G),限制ZooKeeper使用的最大内存(避免占用过多内存导致系统OOM)。dataDir)过大,备份后删除旧数据(注意:此操作可能导致数据丢失,需谨慎)。