ZooKeeper 日常运维命令大全,涵盖服务管理、数据操作、状态监控和集群维护等方面。
一、服务启停与管理命令
1. 服务管理
bash
# 启动服务
zkServer.sh start
# 停止服务
zkServer.sh stop
# 重启服务
zkServer.sh restart
# 查看服务状态
zkServer.sh status
# 前台启动(调试用)
zkServer.sh start-foreground
2. 客户端连接
bash
# 连接本地ZooKeeper
zkCli.sh
# 连接远程ZooKeeper
zkCli.sh -server <host:port>
# 连接时指定超时时间
zkCli.sh -timeout 5000 -server localhost:2181
# 执行单个命令后退出
zkCli.sh -server localhost:2181 -cmd get /zookeeper
二、四字监控命令
四字命令通过 echo <command> | nc localhost 2181 执行:
1. 基础状态命令
bash
# 检查服务是否正常(返回 imok 表示正常)
echo ruok | nc localhost 2181
# 获取服务详细状态信息
echo stat | nc localhost 2181
# 获取服务配置信息
echo conf | nc localhost 2181
# 获取服务环境变量
echo envi | nc localhost 2181
2. 连接与会话监控
bash
# 查看当前所有连接
echo cons | nc localhost 2181
# 查看会话详情
echo dump | nc localhost 2181
# 重置连接统计
echo crst | nc localhost 2181
3. 性能与监控
bash
# 获取监控指标(适合监控系统采集)
echo mntr | nc localhost 2181
# 获取监控指标简版
echo srvr | nc localhost 2181
# 重置服务端统计
echo srst | nc localhost 2181
# 跟踪请求
echo trace | nc localhost 2181
三、zkCli.sh 客户端数据操作命令
连接客户端后可以执行以下命令:
1. 节点查看命令
bash
# 列出子节点
ls /
ls /path
# 列出子节点详情(包含状态信息)
ls2 /path # 旧版本
ls -s /path # 新版本
# 查看节点数据和状态信息
get /path
# 查看节点ACL权限
getAcl /path
2. 节点操作命令
bash
# 创建持久节点
create /path "data"
# 创建临时节点
create -e /ephemeral "data"
# 创建顺序节点
create -s /sequential "data"
# 创建临时顺序节点
create -e -s /ephemeral_sequential "data"
# 设置节点数据
set /path "new data"
# 设置节点数据并指定版本
set -v <version> /path "data"
# 删除节点
delete /path
# 递归删除节点(包括所有子节点)
deleteall /path
# 删除指定版本节点
delete -v <version> /path
3. 权限管理命令
bash
# 设置ACL权限
setAcl /path auth:user:password:cdrwa
# 添加认证信息
addauth digest username:password
# 查看ACL权限
getAcl /path
4. 其他实用命令
bash
# 查看操作历史
history
# 重新执行历史命令
redo <cmd_number>
# 同步节点(确保读取最新数据)
sync /path
# 退出客户端
quit
四、数据备份与清理命令
1. 数据备份
bash
# 备份数据目录
tar -czf zk-backup-$(date +%Y%m%d).tar.gz ${dataDir} ${dataLogDir}
# 使用zkSnapshotComparer工具比较快照(3.5.0+)
zkSnapshotComparer.cmd <snapshotFile1> <snapshotFile2>
2. 日志清理
bash
# 手动清理快照和事务日志(保留最近5个)
zkCleanup.sh -n 5
# 自动清理配置(在zoo.cfg中)
autopurge.snapRetainCount=5
autopurge.purgeInterval=24
五、集群运维命令
1. 集群状态检查
bash
# 检查每个节点的角色
for host in node1 node2 node3; do
echo "=== $host ==="
echo stat | nc $host 2181 | grep Mode
done
# 检查集群是否健康
echo mntr | nc localhost 2181 | grep -E "(zk_server_state|zk_avg_latency|zk_outstanding_requests)"
2. 配置管理
bash
# 动态重新加载配置(3.5.0+)
echo reconfig | nc localhost 2181
# 查看当前配置
echo conf | nc localhost 2181
六、JMX监控命令
1. 使用JConsole
bash
# 启动时启用JMX
export JMXLOCALONLY=false
export JMXDISABLE=false
export JMXPORT=9999
export JMXAUTH=false
export JMXSSL=false
zkServer.sh start
2. 命令行JMX查询
bash
# 使用jstat查看GC情况
jstat -gc <zk_pid> 1s
# 使用jstack查看线程堆栈
jstack <zk_pid>
# 使用jmap查看内存使用
jmap -heap <zk_pid>
七、实用脚本示例
1. 集群健康检查脚本
bash
#!/bin/bash
ZK_HOSTS=("node1:2181" "node2:2181" "node3:2181")
for host in "${ZK_HOSTS[@]}"; do
echo "Checking $host..."
result=$(echo ruok | nc ${host/:/ })
if [ "$result" == "imok" ]; then
mode=$(echo stat | nc ${host/:/ } | grep "Mode" | cut -d: -f2)
echo " OK - Mode: $mode"
else
echo " FAILED"
fi
done
2. 数据备份脚本
bash
#!/bin/bash
BACKUP_DIR="/backup/zookeeper"
DATA_DIR="/data/zookeeper"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建快照
echo "Creating snapshot..."
zkServer.sh snapshot
# 备份数据
tar -czf $BACKUP_DIR/zk_backup_$DATE.tar.gz $DATA_DIR/version-2
# 清理7天前的备份
find $BACKUP_DIR -name "zk_backup_*.tar.gz" -mtime +7 -delete
3. 监控关键指标脚本
bash
#!/bin/bash
HOST=localhost
PORT=2181
echo "=== ZooKeeper Metrics ==="
echo "Server State: $(echo stat | nc $HOST $PORT | grep Mode | cut -d: -f2)"
echo "Connections: $(echo stat | nc $HOST $PORT | grep Connections | cut -d: -f2)"
echo "Latency: $(echo mntr | nc $HOST $PORT | grep zk_avg_latency | cut -f2)"
echo "Outstanding Requests: $(echo mntr | nc $HOST $PORT | grep zk_outstanding_requests | cut -f2)"
echo "Node Count: $(echo mntr | nc $HOST $PORT | grep zk_znode_count | cut -f2)"
八、故障排查命令
1. 连接问题排查
bash
# 检查端口监听
netstat -ln | grep 2181
# 检查防火墙规则
iptables -L | grep 2181
# 测试网络连通性
telnet zk-host 2181
2. 日志分析
bash
# 查看实时日志
tail -f zookeeper.out
# 搜索错误日志
grep -i error zookeeper.out
# 查看特定时间段的日志
sed -n '/2024-01-01 10:00:00/,/2024-01-01 11:00:00/p' zookeeper.out
总结
这些命令覆盖了 ZooKeeper 日常运维的各个方面。建议:
定期执行监控命令:stat、mntr、ruok
建立自动化检查:使用脚本定期检查集群健康状态
做好数据备份:定期备份事务日志和快照文件
监控关键指标:连接数、延迟、节点数量等
熟练掌握这些命令将极大提高 ZooKeeper 集群的运维效率和质量。
12-23
958
958
05-14
1万+
1万+
01-15
6361
6361
06-30
4267
4267

被折叠的 条评论
为什么被折叠?



