Linux下 Zookeeper 节点管理实操指南
一 环境准备与连接
- 进入安装目录的 bin 目录,常见路径如:/usr/local/zookeeper/apache-zookeeper-3.5.8-bin/bin。
- 启动服务:执行 ./zkServer.sh start;查看状态:执行 ./zkServer.sh status;停止服务:执行 ./zkServer.sh stop。
- 连接本地客户端:执行 ./zkCli.sh;连接指定主机与端口:执行 ./zkCli.sh -server 192.168.1.10:2181。
- 退出客户端:执行 quit。
- 提示:Zookeeper 默认客户端端口为 2181。
二 常用节点管理命令
- 创建节点
- 持久节点:create /app “hello”
- 持久有序节点:create -s /app/seq “data”(自动追加序号)
- 临时节点:create -e /app/tmp “tmp”(会话结束自动删除)
- 临时有序节点:create -s -e /app/tmp-seq “tmp”
- 容器节点:create -c /app/container(子节点清空后会被自动删除)
- 读取与查看
- 读数据:get /app
- 读数据并显示状态:get -s /app
- 查看元数据:stat /app
- 列子节点:ls / 或 ls -R /(递归)
- 更新与删除
- 更新数据:set /app “new”;可按版本更新:set -v 2 /app “new”
- 删除节点:delete /app/seq;递归删除:deleteall /app(旧版本亦可用 rmr /app)
- 版本条件删除
- 先取版本:get -s /app 得到 dataVersion,再删除:delete -v /app
- 说明
- 路径必须以 / 开头;临时节点不能创建子节点;容器节点用于容纳子节点,子节点清空后会被删除。
三 监听与事件
- 监听节点数据变化:get -w /app
- 监听子节点列表变化:ls -w /app
- 监听节点元数据变化:stat -w /app
- 一次性监听说明:Watcher 触发后即移除,如需持续监听需重新注册。
- 常见事件类型:NodeCreated、NodeDeleted、NodeDataChanged、NodeChildrenChanged。
四 ACL 权限管理
- 查看 ACL:getAcl /app
- 设置 world 权限:setAcl /app world:anyone:cdrwa
- 设置 IP 白名单:setAcl /app ip:192.168.60.129:cdrwa,ip:192.168.60.130:cdrwa
- 基于 Digest 认证设置 ACL:
- 先登录:addauth digest itcast:123456
- 再授权:setAcl /app auth:itcast:cdrwa
- 权限字符含义:c(create) r(read) w(write) d(delete) a(admin)。
五 常见问题与排查
- 节点不存在或创建失败:路径需以 / 开头,且父节点必须存在(例如先 create /app,再 create /app/child)。
- 删除失败:有子节点时不可直接 delete,需先删除子节点或使用 deleteall;旧版本可用 rmr。
- 会话过期导致节点消失:临时节点 -e 与会话绑定,退出或超时即被删除。
- 认证失败:对受保护路径操作前先 addauth digest user:pass 或使用正确 setAcl。
- 查看错误日志:服务端启动日志默认写入执行目录的 zookeeper.out,可用 tail -f zookeeper.out 排查。