在 CentOS 上测试 ZooKeeper 服务是否正常运行,通常可以从服务状态、端口、命令行客户端、日志几个层面来做。下面按常用程度给你一个完整清单。
systemctl status zookeeper
或
service zookeeper status
看到 active (running) 说明服务已启动。
ZooKeeper 默认端口是 2181
netstat -lntp | grep 2181
或
ss -lntp | grep 2181
示例输出:
LISTEN 0 50 :::2181 :::* users:(("java",pid=1234,fd=45))
如果没有监听,说明服务没起来或配置有问题。
zkCli.sh -server 127.0.0.1:2181
如果连接成功,会进入:
[zk: 127.0.0.1:2181(CONNECTED) 0]
ls /
create /test "hello"
get /test
delete /test
能正常创建、读取、删除节点,说明 ZooKeeper 工作正常。
退出:
quit
ZooKeeper 提供了一组四字监控命令:
echo ruok | nc 127.0.0.1 2181
返回:
imok
表示服务正常。
其他常用:
echo stat | nc 127.0.0.1 2181
echo mntr | nc 127.0.0.1 2181
echo conf | nc 127.0.0.1 2181
注意:
- CentOS 7+ 可能默认没有
nc- 安装:
yum install -y nc
日志位置取决于安装方式:
/var/log/zookeeper/zookeeper.log
或
$ZOOKEEPER_HOME/logs/
查看最新日志:
tail -f /var/log/zookeeper/zookeeper.log
关注关键字:
binding to portStartedERRORException如果是集群:
echo srvr | nc 127.0.0.1 2181
查看:
| 问题 | 可能原因 |
|---|---|
| 连不上 2181 | 防火墙、未启动、配置错误 |
| ruok 无响应 | 四字命令被禁用 |
| 启动失败 | myid 不一致、dataDir 权限问题 |
防火墙检查:
firewall-cmd --list-all
如果你愿意,可以告诉我:
我可以帮你更精准地排查。