Zookeeper shell


基本命令

create [-s] [-e] path data acl

$ create /baozi data-baozi

-e 创建临时节点
$ create -e /baozi/tmp data-tmp
Created /baozi/tmp
$ get /baozi/tmp
...
ephemeralOwner = 0x162ff8cabfb0002 //临时节点
...

-s 顺序节点
$ create -s /baozi/seq seq
Created /baozi/seq0000000001
$ create -s /baozi/seq seq
Created /baozi/seq0000000002
$ create -s /baozi/seq seq
Created /baozi/seq0000000003
$ create -s /baozi/seq seq
Created /baozi/seq0000000004
$ ls /baozi
[seq0000000003, seq0000000004, seq0000000001, seq0000000002]

stat/ls/ls2 path [watch]

ls2 = ls + stat
cZxid 创建事务id
ctime 创建时间
mZxid 修改事务id
mtime 修改时间
pZxid 子节点被修改的事务id

cversion 子节点更新次数
dataVersion 节点数据更新次数
aclVersion 节点acl的更新次数

ephemeralOwner 临时节点的话是session id
dataLength 节点数据的字节数
numChildren 子节点个数

$ ls /
[zookeeper]
$ ls2 /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
$ stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

get path [watch]

$ get /baozi
data-baozi
cZxid = 0x4
ctime = Thu Apr 26 09:42:32 CST 2018
mZxid = 0x4
mtime = Thu Apr 26 09:42:32 CST 2018
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0 //不是临时节点
dataLength = 10
numChildren = 0

set path data [version]

$ set /baozi data-newdata
cZxid = 0x4
ctime = Thu Apr 26 09:42:32 CST 2018
mZxid = 0x10
mtime = Thu Apr 26 10:08:46 CST 2018
pZxid = 0xf
cversion = 6
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 4

delete path [version]

//无视版本号直接删除
$ delete /baozi/seq0000000003

//根据版本号删除
$ delete /baozi/seq0000000004 1

rmr path

$ rmr /baozi

wacther

使用场景: 统一资源配置。(A服务器上的配置文件更新了,触发事件,去更新对应的客户端配置)
添加watcher事件: 通过stat/ls/ls2/get

NodeCreated
创建节点触发:NodeCreated

$ stat /baozi watch
$ create /baozi data-baozi

WATCHER::

WatchedEvent state:SyncConnected type:NodeCreated path:/baozi
Created /baozi

NodeDeleted
删除节点触发:NodeDeleted

$ ls /baozi watch
$ delete /baozi

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/baozi

NodeDataChanged
修改节点数据触发:NodeDataChanged

$ get /baozi watch
$ set /baozi data-new

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/baozi

NodeChildrenChanged
创建和删除子节点触发:NodeChildrenChanged,修改不触发事件。

$ ls /baozi watch
$ create /baozi/abc 88

WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/baozi
Created /baozi/abc


$ ls /baozi watch
$ delete /baozi/abc

WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/baozi

ACL

Zookeeper acl的构成: [scheme:id:permissions]
scheme:采用某种权限机制。

  • world: world下只有一个id,即只有一个用户anyone。world:anyone:[permissions]
  • auth: 需要认证登录。需要注册用户有权限就行。auth:user:pwd:[permissions]
  • digest: 需要对密码加密。digest:user:BASE64(SHA1(pwd)):[permissions]
  • ip: 指定可以访问的ip。ip:192.168.....:[permissions]
  • super: 超级管理员。拥有所有权限

id:允许访问的用户、用户与密码、ip等。
permissions:crdwa,权限组合字符串。

  • c create 创建子节点
  • d delete 删除子节点
  • r read 读取节点数据
  • w write 设置节点数据
  • a admin 设置权限
addauth scheme auth
明文登录(只有digest的scheme能登录,存密码时用的密文通过sha1与BASE64
$ addauth digest baozi:baozi

getAcl path
$ getAcl /baozi

setAcl path acl
$ setAcl /baozi world:anyone:crwa

super超级管理员
1.修改zkServer.sh添加管理员,在nohup一行,添加"-Dzookeeper.DigestAuthenticationProvider.superDigest=管理员:密码(sha1然后base64)"
2.重启zkServer.sh

四字命令

stat: 查看状态信息

$ echo stat | nc localhost 2181
Zookeeper version: 3.4.5-cdh5.7.0--1, built on 03/23/2016 18:31 GMT
Clients:
 /0:0:0:0:0:0:0:1:45490[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/5
Received: 21
Sent: 20
Connections: 1
Outstanding: 0
Zxid: 0xd
Mode: standalone
Node count: 4

ruok: 查看zkServer是否启动(ruok :are you ok imok:i am ok)

$ echo ruok | nc localhost 2181
imok

dump: 列出未经处理的会话和临时节点

$ echo dump | nc  localhost 2181
SessionTracker dump:
Session Sets (4):
0 expire at Fri Apr 27 10:59:44 CST 2018:
0 expire at Fri Apr 27 10:59:52 CST 2018:
0 expire at Fri Apr 27 11:00:02 CST 2018:
1 expire at Fri Apr 27 11:00:04 CST 2018:
    0x16304ab3e430001
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x16304ab3e430001:
    /tmp

conf: 查看服务器配置

$ echo conf | nc localhost 2181
clientPort=2181
dataDir=/home/user000/tmps/zookeeper-tmp/version-2
dataLogDir=/home/user000/tmps/zookeeper-tmp/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0

cons: 客户端连接信息

$ echo cons | nc localhost 2181
 /0:0:0:0:0:0:0:1:45506[0](queued=0,recved=1,sent=0)
 /127.0.0.1:34892[1](queued=0,recved=43,sent=43,sid=0x16304ab3e430001,lop=PING,est=1524797923862,to=30000,lcxid=0x2,lzxid=0xf,lresp=1524798333642,llat=1,minlat=0,avglat=0,maxlat=4)

envi: 环境变量

$ echo envi | nc localhost 2181
Environment:
zookeeper.version=3.4.5-cdh5.7.0--1, built on 03/23/2016 18:31 GMT
host.name=host000
java.version=1.8.0_162
java.vendor=Oracle Corporation
java.home=/home/user000/tools/jdk1.8.0_162/jre
java.class.path=/home/user000/tools/zookeeper/bin/../build/classes:/home/user000/tools/zookeeper/bin/../build/lib/*.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/zookeeper-3.4.5-cdh5.7.0.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/slf4j-log4j12-1.7.5.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/slf4j-api-1.7.5.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/netty-3.2.2.Final.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/log4j-1.2.16.jar:/home/user000/tools/zookeeper/bin/../share/zookeeper/jline-2.11.jar:/home/user000/tools/zookeeper/bin/../src/java/lib/*.jar:/home/user000/tools/zookeeper/bin/../conf:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=
os.name=Linux
os.arch=amd64
os.version=3.10.0-693.el7.x86_64
user.name=user000
user.home=/home/user000
user.dir=/home/user000/tools/zookeeper-3.4.5-cdh5.7.0/bin

mntr: 监控zk健康信息

$ echo mntr | nc localhost 2181
zk_version  3.4.5-cdh5.7.0--1, built on 03/23/2016 18:31 GMT
zk_avg_latency  0
zk_max_latency  0
zk_min_latency  0
zk_packets_received 2
zk_packets_sent 1
zk_num_alive_connections    1
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count  5
zk_watch_count  0
zk_ephemerals_count 1
zk_approximate_data_size    39
zk_open_file_descriptor_count   28
zk_max_file_descriptor_count    4096

srvr: server的简要信息

$ echo srvr | nc localhost 2181
\Zookeeper version: 3.4.5-cdh5.7.0--1, built on 03/23/2016 18:31 GMT
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x71
Mode: standalone
Node count: 4

wchs: 展示watch的信息

$ echo wchs | nc localhost 2181
0 connections watching 0 paths
Total watches:0

wchc wchp: 显示session与path

------------------
3.4.10以后版本需要配置这两个命令到白名单
修改zoo.cfg,添加41w.commands.whitelist=wchc,wchp
重启zkServer
------------------
$ echo wchc | nc localhost 2181
0x163051797180001
    /baozi
    /baozi2

$ echo wchp | nc localhost 2181
/baozi
    0x163051797180001
/baozi2
    0x163051797180001

你可能感兴趣的:(Zookeeper shell)