zookeeper学习笔记
启动
启动 ./zkServer.sh start
客户端连接 ./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 #子节点数量
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命令
- getAcl:获取某个节点的acl权限信息
- setAcl:设置某个节点的acl权限信息
- addauth:输入认证授权信息,注册时输入明文密码(登录),但在zk系统中,密码是以加密的形式存在的
acl构成
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 的信息
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 haominglfs的博客!