Zookeeper基本操作
基本介绍
目录结构
# 存放系统脚本
bin
# 存放配置文件
conf
# zk 附加功能支持
contrib
# maven 仓库文件
dist-maven
# zk 文档
docs
# 依赖的第三方库
lib
# 经典场景样例代码
recipes
# zk 源码
src
其中 bin 和 conf 是非常重要的两个目录, 平时也是经常使用的
zoo.cfg主要配置参数
clientPort: 参数无默认值, 必须配置, 用于配置当前服务器对外的服务端口, 客户端必须使
用这端口才能进行连接
dataDir: 用于存放内存数据库快照的文件夹, 同时用于集群的 myid 文件也存在这个文件夹
里(注意: 一个配置文件只能包含一个 dataDir 字样, 即使它被注释掉了。 )
dataLogDir: 用于单独设置 transaction log 的目录, transaction log 分离可以避免和普通 log
还有快照的竞争
snapCount:快照生成阈值、默认是100000
ZK会话状态
## CONNECTING
## CONNECTED
## RECONNECTING
## RECONNECTED
## CLOSE
ZK的结构
zk的结构和Unix的结构一样,都是树形结构,
ZK节点类型
# 持久节点类型
PERSISTENT
# 临时节点类型
EPHEMERAL
# 持久带序号节点类型
PERSISTENT_SEQUENTIAL
# 临时带序号节点类型
EPHEMERAL_SEQUENTIAL
持久节点:关闭客户端不会删除,可以有子节点 create /tree1
临时节点:关闭客户端会删除,不能有子节点 create -e /tree1
带序号持久节点:create -s /tree1
带序号临时节点:create -e -s/tree1
ZK基本命令
# 查看
ls /
# 查看详情
ls2 /
# 创建
create /key val
# 查看数据
get /key
# 设置数据
set /key change_val
# 删除
delete /key
# 递归删除
rmr /key
# 退出
quit
# 帮助
help
# 显示历史命令
history
ACL操作
介绍
Zookeeper 的 ACL(Access Control List), 分为三个维度: scheme、 id、 permission
通常表示为: scheme:id:permission
schema:代表授权策略
id:代表用户
permission:代表权限
# 一般来说schema和id相对应
world:anyone:rwcad
auth:user:123456:rw
digest:user:6DY5WhzOfGsWQ1XFuIyzxkpwdPo=:wa
ip:192.168.0.1:wad
# 获取ACL操作
getAcl /key
# 设置ACL操作
setAcl /key
# 注册会话授权信息
addauth /key
getAcl
[zk: localhost:2181(CONNECTED) 31] getAcl /testAcl/acl1
'world,'anyone
: cdrwa
setAcl
# 无认证方式
# 无认证方式
[zk: localhost:2181(CONNECTED) 0] setAcl /testAcl/acl1 world:anyone:crwa
# 认证登录
# 访问拒绝
[zk: localhost:2181(CONNECTED) 4] get /testAcl/acl1
Authentication is not valid : /testAcl/acl1
# 认证
[zk: localhost:2181(CONNECTED) 5] addauth digest user:123456
# 用户认证方式
# 用户认证方式
## 创建用户
addauth digest user:123456
## setAcl用户认证方式
setAcl /testAcl/acl1 auth:user:123456:rwac
## 查看
[zk: localhost:2181(CONNECTED) 3] getAcl /testAcl/acl1
'digest,'user:6DY5WhzOfGsWQ1XFuIyzxkpwdPo=
: crwa
# 用户加密认证方式
[zk: localhost:2181(CONNECTED) 6] setAcl /testAcl/acl1 digest:user:6DY5WhzOfGsWQ1XFuIyzxkpwdPo=:crwa
# ip认证方式
setAcl /testAcl/acl1 ip:192.168.0.1:crwad
ZK四字命令
安装nc插件
yum install nc
命令详解
echo envi |nc 192.168.1.101 2181 ,输出关于服务环境的详细信息(区别于 conf 命令) 。
echo reqs | nc 192.168.1.101 2181 ,列出未经处理的请求。
echo wchs | nc 192.168.1.101 2181 ,列出服务器 watch 的详细信息。
echo wchc | nc 192.168.1.101 2181 ,通过 session 列出服务器 watch 的详细信息, 它的输出是一个
与 watch 相关的会话的列表。
echo wchp | nc 192.168.1.101 2181 ,通过路径列出服务器 watch 的详细信息。 它输出一个
与 session 相关的路径。
echo stat|nc 192.168.1.101 2181 来查看哪个节点被选择作为 follower 或者 leader
使用 echo ruok|nc 192.168.1.101 2181 测试是否启动了该 Server, 若回复 imok 表示已经启动。
echo dump| nc 192.168.1.101 2181 ,列出未经处理的会话和临时节点。
echo kill | nc 192.168.1.101 2181 ,关掉 server
echo conf | nc 192.168.1.101 2181 ,输出相关服务配置的详细信息。
echo cons | nc 192.168.1.101 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信
息
JAVA中MD5加密类
JDK类:DigestAuthenticationProvider
运行操作
数据持久化
# 存放的快照数据
dataDir
# 存放的是事务日志文件
dataLogDir
日志查看方式
java -cp /opt/my_app/zk/zookeeper-3.4.12/zookeeper-3.4.12.jar:/opt/my_app/zk/zookeeper-3.4.12/lib/slf4j-api-1.7.25.jar org.apache.zookeeper.server.LogFormatter log.100000001
快照查看方式
java -cp /opt/my_app/zk/zookeeper-3.4.12/zookeeper-3.4.12.jar:/opt/my_app/zk/zookeeper-3.4.12/lib/slf4j-api-1.7.25.jar org.apache.zookeeper.server.SnapshotFormatter snapshot.100000000