跳转至

zookeeper学习笔记

启动

  1. 启动 ./zkServer.sh start

  2. 客户端连接 ./zkCli.sh

客户端命令学习

  • ls /

  • ls2 /

  • stat

    shell cZxid = 0x0 #id ctime = Thu Jan 01 08:00:00 CST 1970 #创建时间 mZxid = 0x0 #修改id mtime = Thu Jan 01 08:00:00 CST 1970 #修改时间 pZxid = 0x6 #子节点id cversion = 2 #子节点版本 dataVersion = 0 #当前节点数据版本号 aclVersion = 0 #当前节点权限的版本号 ephemeralOwner = 0x0 #是否是临时节点 dataLength = 0 #数据长度 numChildren = 2 #子节点数量

  • session过期,则临时节点znode会被抛弃

  • create命令

  • set命令

  • delete命令

watcher 机制

watcher

  • 针对每个节点的操作,都会有一个监督者->watcher
  • 当监控的某个对象(znode)发生变化,则触发watcher事件
  • zk中的watcher是一次性的,触发后立即销毁

watcher事件类型1

  • 创建父节点触发:NodeCreated
  • 修改父节点数据触发:NodeDataChanged
  • 删除父节点触发:NodeDeleted

watcher事件类型2

  • ls为父节点设置watcher,创建子节点触发:NodeChildrenChanged
  • ls为父节点设置watcher,删除子节点触发:NodeChildrenChanged
  • ls为父节点设置watcher,修改子节点不触发事件

ACL权限控制

定义

针对节点设置相关读写权限,目的是为了保证数据安全

acl命令

  1. getAcl:获取某个节点的acl权限信息
  2. setAcl:设置某个节点的acl权限信息
  3. addauth:输入认证授权信息,注册时输入明文密码(登录),但在zk系统中,密码是以加密的形式存在的

acl构成

  1. zk的acl通过[scheme:id:permisions]来构成权限列表

  2. scheme:代表采用的某种权限机制

    • world:world下只有一个id,即只有一个用户,也就是anyone,组合写法world:anyone[permissions]
    • auth:代表认证登录,需要注册用户有权限就可以,形式为auth:user:password:[permissions]
    • digest:需要对密码加密才能访问,组合形式为:digest:username:BASE64(SHA1(password))[permissions]
    • ip:此时现在ip访问,比如:ip:192.168.1.1:[permissions]
    • super:代表超级管理员,拥有所有权限
  3. Id:代表允许访问的用户
  4. permisions:权限组合字符串
  5. CREATE:创建子节点
    • READ:获取节点、子节点
    • WRITE:设置节点数据
    • DELETE:删除子节点
    • ADMIN:设置权限

四字命令

定义

  • zk可以通过它自身提供的简写命令来和服务器进行交互
  • 需要使用到nc命令,安装 yum install nc
  • echo [commond] | nc [ip][port]

命令

  • [stat]:查看zk的状态信息,以及是否mode
  • [ruok]:查看当前zkserver是否启动,返回imok
  • [dump]:列出未经使用的会话和临时节点
  • [conf]:查看服务器配置
  • [cons]:连接到服务端的客户端信息
  • [envi]:环境变量
  • [mntr]:监控zk健康信息
  • [wchs]:展示watch的信息
  • [wchc][wchp] :session 与watch 及path 与watch 的信息