zkCli.sh客户端连接到ZK服务器的语法为:zkCli.sh -timeout 5000 -r -server ip:port
连接参数解释:
-timeout:表示客户端向zk服务器发送心跳的时间间隔,单位为毫秒。因为zk客户端与服务器的连接状态是通过心跳检测来维护的,如果在指定的时间间隔内,zk客户端没有向服务器发送心跳包,服务器则会断开与该客户端的连接。参数5000,表示zk客户端向服务器发送心跳的间隔为5秒。
-r:表示客户端以只读模式连接,默认情况下,在ZK集群中,一个机器如果和集群中的半数以及半数以上的机器失去连接,那么这个机器将不再处理客户端请求(读请求+写请求均不处理);但是有时候我们希望在发生此类故障时不影响读取请求的处理,这个就是zk的read-only 模式
-server:指定zk服务器的IP与端口,zk默认的客户端端口为2181【具体查看配置文件zoo.cfg】
shell> cd /usr/local/zookeeper/bin
shell> ./zkCli.sh -timeout 5000 -server 127.0.0.1:2181
在客户端下的命令:
帮助命令:
h
help
stat path [watch]
set path data [version]
ls path [watch] //查看当前节点下的所有子节点 path
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
这些命令的作用和关系型数据库的SQL语句类似,zk的命令是对节点和数据进行增删改查操作,而SQL则是对表的数据增册改查操作。下面详细介绍所有命令的使用方法:
1、查询子节点列表
语法:ls path
path:节点路径
shell> ls /
[zookeeper]
目前根节点下只有zookeeper一个节点,是zk默认创建的,用于存储节点的一些状态信息,比如节点配额。
2、创建节点
语法:create path [-s] [-e] data acl
path:节点路径
-s:指定该节点是一个序列节点,创建同名的节点时,会给节点自动加上编号
-e:指定该节点是一个临时节点,默认是永久节点。临时节点会在客户端与服务器断开连接时,zk会将其创建的所有临时节点全部删除
data:存储在节点中的数据
acl:设置子节点访问权限,默认所有人都可以对该节点进行读写操作
# 1> 在根目录创建了一个`node_01`的节点,指定的数据为mydata
shell> create /node_01 mydata
Created /node_01
shell> ls /
[node_01, zookeeper]
# 2> 创建一个临时节点(创建之后,可退出客户端重新登录查看该节点是否存在,来验证临时节点是否被删除)
shell> create -e /node_02 "i is a ephemeral node"
Created /node_02
# 3> 创建一个序列临时节点
shell> create -s -e /node_03 'i is a ephemeral sequence node'
Created /node_03
# 4> 创建一个永久序列节点(节点会自动加上编号)
shell> create -s /node_04 data
Create