启动

  1. 启动 ./zkServer.sh start

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

客户端命令学习

  • ls /

  • ls2 /

  • stat

    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  #子节点数量
  1. session过期,则临时节点znode会被抛弃

  2. create命令

  3. set命令

  4. 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]来构成权限列表

    • 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:代表超级管理员,拥有所有权限
  • Id:代表允许访问的用户
    • permisions:权限组合字符串
    • 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 的信息