1.集群角色和分工
2.常用命令
-
启动服务节点
./zkServer.sh start ../conf/zoo.cfg
-
查看节点状态(主从)
./zkServer.sh status
-
启动客户端连接
./zkCli.sh -server 127.0.0.1:2181
-
列出节点
ls /
-
创建节点
create /test 'content'
-
创建临时节点(临时节点下不能创建子节点)
create -e /test-e 'content'
-
创建顺序节点
create -s /test_seq_ 1
结果显示: Created /test_seq_0000000001
-
获取节点内容
get /test
-
查看节点信息
stat /test
结果显示: cZxid = 0x8b
ctime = Mon Apr 26 12:28:29 CST 2021
mZxid = 0x8b
mtime = Mon Apr 26 12:28:29 CST 2021
pZxid = 0x8b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 0
-
删除节点
delete /test
rmr /test
-
查看节点权限
getAcl /test
结果显示:'world,'anyone
: cdrwa
ACL权限控制,使用schmea:id:permission来标识,主要涵盖3个方面:
- 权限模式(Schema):鉴权的策略
- 授权对象(ID)
- 权限(Permission)
schema
. world:只有一个用户;anyone 代表所有人(默认)
. ip:使用ip地址认证
. auth:使用已添加认证的用户认证
. digest: 使用“用户名:密码”方式认证
权限
. CREATE 简写为c,可以创建子节点
. DELETE 简写为d,可以删除子节点
. READ 简写为r,可以读取节点数据
. WRITE 简写为w,可设置节点数据
. ADMIN 简写为a,可以设置节点访问控制列表
-
增加用户
addauth digest zhangsan:123456
3.其他
-
每个节点内容默认最大为1M
-
子节点不会继承父节点的权限,客户端可能无权访问某节点,但可以访问其子节点。
-
zookeeper原生客户端监听器只能监听一次 new Zookeeper()。
-
可以注册监听器的操作有 getData(),
-
使用ZkClient客户端
4.集群搭建
1.准备三台虚拟机
node1 ip 192.168.108.13
node2 ip 192.168.108.11
node3 ip 192.168.108.8
2.apache官网下载zookeeper
3.拷贝zoo_sample.cfg文件,命名为zoo.cfg
4.修改dataDir路径
5.在dataDir路径下新建myid文件
6.修改zoo.cfg文件追加内容
server.1=192.168.108.13:2888:3888
server.2=192.168.108.11:2888:3888
server.3=192.168.108.8:2888:3888
ps:必须填写server ip地址,否则会有如下报错信息Unable to read additional data from server
sessionid 0x0, likely server has closed socket, closing socket connection and
attempting reconnect