服务端常用命令

命令

作用

zkServer.sh start

启动ZK服务

zkServer.sh status

查看ZK服务状态

zkServer.sh stop

停止ZK服务

zkServer.sh restart

重启ZK服务

客户端常用命令

使用 zkCli.sh -server 127.0.0.1:2181 连接到 ZooKeeper 服务(不指定就是本机),连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。

命令

作用

备注

ls

显示根目录下、文件

使用 ls 命令来查看当前 ZooKeeper 中所包含的内容

ls2

显示根目录下、文件

查看当前节点数据并能看到更新次数等数据

create /zk "test"

创建文件,并设置初始内容

创建一个新的 znode节点“ zk ”以及与它关联的字符串。

create -e创建临时节点;create -S创建顺序节点

get /zk

获取文件内容

确认 znode 是否包含我们所创建的字符串。get -s显示详细信息。

set /zk "zkbak"

修改文件内容

对 zk 所关联的字符串进行设置

delete /zk

删除文件

将刚才创建的 znode 删除,如果存在子节点删除失败

rmr /zk

递归删除

将刚才创建的 znode 删除,子节点同时删除

quit

退出客户端

help

帮助命令

ACL 命令常用命令

命令

作用

示例

getAcl

获取指定节点的 ACL 信息

getAcl /node1

setAcl

设置指定节点的 ACL 信息

setAcl /node1 world:anyone:cdrwasetAcl /node1 auth:user:123456:cdrwa 要先用addauth命令注册user:123456

如果使用 digest 策略,就要把密码改成BASE64(SHA1) 的密文

addauth

注册会话授权信息

addauth digest user:123456如果退出客户端后重新连接,要重新注册授权信息。

密文通过 DigestAuththenticationProvider 类生成。比如:

java -classpath /apache-zookeeper-3.6.2-bin/lib/ -cp /apache-zookeeper-3.6.2-bin/lib/zookeeper-3.6.2.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider user:123456

超级管理员

当只给节点读权限的话,那么这个节点就删除不了了,也不能给它在加权限了。只能使用超级管理员。
启动脚本里,在Java命令行里添加:

-Dzookeeper.DigestAuthenticationProvider.superDigest=super:[密文]

密文通过 DigestAuththenticationProvider 类生成。
然后在使用时添加超级管理员权限:

addauth digest super:[密码]

然后就能使用超级管理员的权限了。

ZooKeeper 常用四字命令

ZooKeeper 支持某些特定的四字命令字母与其的交互,用来获取 ZooKeeper 服务的当前状态及相关信息。可通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。

命令

作用

`echo stat

nc 127.0.0.1 2181`

`echo ruok

nc 127.0.0.1 2181`

`echo dump

nc 127.0.0.1 2181`

`echo kill

nc 127.0.0.1 2181`

`echo conf

nc 127.0.0.1 2181`

`echo cons

nc 127.0.0.1 2181`

`echo envi

nc 127.0.0.1 2181`

`echo reqs

nc 127.0.0.1 2181`

`echo wchs

nc 127.0.0.1 2181`

`echo wchc

nc 127.0.0.1 2181`

`echo wchp

nc 127.0.0.1 2181`

ZooKeeper 日志可视化

日志和快照文件打开全是乱码,需要用日志可视化工具查看。

# 事务日志可视化  (LogFormatter)
java -cp ../../zookeeper-3.4.6.jar;../../lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter log.xxxx

# 数据快照可视化  (SnapshotFormatter)
java -cp ../../zookeeper-3.4.6.jar;../../lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.SnapshotFormatter snapshot.xxxx

zk 重启后就是通过日志和快照恢复数据的(aof、rdb)。
zk 创建节点虽然是强一致性的,但是时间上的延迟还是有的。
临时节点甚至比持久节点用处大,比如分布式锁和服务注册与发现。
大多数节点存活(一半以上)的时候就能选举,所以适合奇数台。
zk权限用的不多。
zk节点一般存二进制数据,比如存分布式配置中心的相关配置。
dubbo 的服务注册中心用的zk。