温馨提示×

如何使用Linux Zookeeper管理节点

小樊
46
2026-01-03 04:09:47
栏目: 智能运维

Linux 下使用 Zookeeper 管理节点

一 准备与连接

  • 启动服务:在安装目录的 bin 下执行
    ./zkServer.sh start
    查看状态:./zkServer.sh status
    停止服务:./zkServer.sh stop
  • 连接客户端:
    本地:./zkCli.sh
    远程:./zkCli.sh -server IP:2181(默认端口 2181
    连接成功提示符类似:[zk: 127.0.0.1:2181(CONNECTED) 0]。必要时可用 -timeout 5000 设置超时。

二 常用节点管理命令

  • 查看与查询
    • 列出子节点:ls /path;可加 -s 同时显示状态、加 -w 注册监听、加 -R 递归列出。
    • 查看数据:get /path;加 -s 同时显示状态。
    • 查看元数据:stat /path
    • 递归查看:ls -R /(示例会列出如 /zookeeper 等系统节点)。
  • 创建节点
    • 持久节点:create /app/node1 “data”
    • 顺序节点:create -s /app/seq “data”(自动追加序号)
    • 临时节点:create -e /app/tmp “data”(会话断开自动删除)
    • 容器节点:create -c /app/container “data”(子节点清空后会被自动删除)
    • 说明:ZooKeeper 路径以 / 开头,不支持相对路径;部分版本支持 -t ttl 创建带过期时间的节点(需启用扩展类型)。
  • 更新与删除
    • 更新数据:set /app/node1 “new”;可用 -v version 做版本校验(乐观锁)。
    • 删除节点:delete /app/node1;递归删除:rmr /app/parent(或 deleteall)。
    • 配额管理:setquota -n|-b val /path(配额)、listquota /path(查看)、delquota -n|-b /path(删除配额)。

三 监听与 ACL 要点

  • 一次性监听(Watch)
    • 子节点变化:ls -w /path
    • 数据变化:get -w /path
    • 元数据变化:stat -w /path
      说明:监听是一次性的,触发后即移除,需要重新注册。
  • ACL 权限控制
    • 查看:getAcl /path
    • 设置:setAcl /path scheme:id:perms
    • 常用模式:world(全开放)、ip(按 IP/网段)、digest(用户名:密码的摘要)、auth(已认证用户)
    • 常用权限:c(create)、r(read)、w(write)、d(delete)、a(admin)
    • 示例:setAcl /app ip:127.0.0.1:cdrwa

四 实用示例

  • 连接并查看根节点
    ./zkCli.sh -server 127.0.0.1:2181
    ls /
    get /zookeeper
  • 创建顺序节点与临时节点
    create -s /demo/seq “hello”
    create -e /demo/tmp “session”
  • 读取并带状态
    get -s /demo/seq
  • 条件更新与删除
    set -v 0 /demo/seq “world”(如版本不匹配则拒绝)
    delete /demo/tmp
    rmr /demo/old(递归删除)

五 运维与安全提示

  • 递归删除前务必确认路径,生产环境建议先备份或导出子树数据。
  • 临时节点不能创建子节点;容器节点适合做“自动清理”的父节点(如分布式锁父节点)。
  • 监听是一次性的,关键业务需做好监听重注册与失败重试。
  • 合理设置 ACL,避免使用 world:anyone;涉及敏感路径建议采用 digestip 模式并限制可写范围。
  • 版本校验(set/delete 的 -v)能有效避免并发写冲突,但也可能造成操作失败,需结合业务重试策略。

0