zookeeper的日常运维命令大全

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 集群的运维效率和质量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值