zookeeper(zkCli)命令概览

本文详细介绍了 ZooKeeper 命令行界面 (CLI) 的使用方法,包括连接配置、常用命令如 ls、get、create 等的功能与参数说明,以及 ACL 权限管理的具体操作。

连接:

./zkCli.sh -timeout 0 -r -server ip:port

-timeout:当前会话的超时时间,zookeper依靠与客户端的心跳来判断会话是否有效,单位是毫秒
-r: 只读模式,zookeeper的只读模式指一个服务器与集群中过半机器失去连接以后,这个服务器就不在不处理客户端的请求,但我们仍然希望该服务器可以提供读服务。
-server: zookeeper服务器ip地址和端口号

h(help):查看帮助


ls:列出某一节点下的子节点信息


ls2:列出当前节点的子节点,同时列出节点状态


stat:查看节点的状态信息

在zookeeper中,每一次对节点的写操作都认为是一次事务,每一个事务,系统都会分配一个唯一的事务ID。
  czxid:节点被创建的事务ID
  ctime: 创建时间
  mzxid: 最后一次被更新的事务ID
  mtime: 修改时间
  pzxid:子节点列表最后一次被更新的事务ID
  cversion:子节点的版本号
  dataversion:数据版本号
  aclversion:权限版本号
  ephemeralOwner:用于临时节点,代表临时节点的事务ID,如果为持久节点则为0
  dataLength:节点存储的数据的长度
  numChildren:当前节点的子节点个数

get:获取当前节点存储的数据内容
  如:get /zk


create:创建节点
  -s:顺序节点
  -e:临时节点
  如:create /zk "myData"

set:修改节点数据,可携带版本号
  如:set /zk "myData"

delete:删除节点,只能删除没有子节点的节点
  如:delete /zk

rmr:递归删除节点(含子节点)
  如:rmr /zk

setquota:设置配额

  给节点限制值,比如限制子节点个数、节点数据的长度(当创建节点超出配额时,zookeeper不会抛出异常,会在zookeeper.out记录警告信息)
  -n:限制子节点个数
  -b:限制值的长度

listquota:查看配额,以及节点的配额状态


delquota:删除配额


close:关闭当前连接


history:查看历史执行指令


redo:重复执行指令

ACL相关


1、zookeeper的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
2、zookeeper的身份认证有4种方式:
(1)world:默认方式,相当于全世界都能访问
(2)auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
(3)digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
(4)ip:使用ip地址认证

3、认证实例:
(1)增加一个认证用户:addauth digest 用户名:密码明文,如:addauth digest user1:password1
(2)设置权限:
(2.1):setAcl /path auth:用户名:密码明文:权限,如:setAcl /test auth:user1:password1:cdrwa
(2.2):setAcl /path digest:用户名:密码密文:权限
(3)查看Acl设置:getAcl /path

### ZooKeeper zkCLI 命令使用教程 #### 连接至ZooKeeper服务器 为了通过`zkCli.sh`脚本连接到ZooKeeper服务端,可以指定主机名和端口号作为参数传递给该脚本。例如,在命令行输入如下指令来建立连接[^3]: ```bash ./zkCli.sh -server 192.168.0.142:2181 ``` #### 查看当前会话状态 成功连接之后,可以通过执行简单的命令查看客户端的状态以及所使用的API版本信息: ```bash version ``` 这将返回正在运行的ZooKeeper CLI工具的具体版本号及其编译时间戳记。 #### 创建节点(Create Node) 支持两种类型的节点创建——永久性和临时性的。对于持久化节点而言,即使创建它的会话结束也不会被自动移除;而临时节点则会在对应的客户端断线时消失不见。要新建一个普通的持久型节点可采用下面的形式[^2]: ```bash create /path/to/node "initial value" ``` 如果希望构建的是稍纵即逝式的瞬态节点,则需附加标志位 `-e` 或者 `--ephemeral` : ```bash create -e /temp/path/to/node "temporary content" ``` #### 设置ACL (Set ACL) 针对特定路径下的资源对象设定权限规则,允许定义哪些用户能够对该位置的数据实施读取、写入等操作。这里给出了一条用于配置访问控制列表的例子,其中包含了用户名与密码哈希值组合而成的身份验证令牌[^4]: ```bash setAcl /target_node_path digest:username:password_hash:rwcda ``` 上述命令中的字母分别代表不同的许可级别:r=Read,w=Write,c/Create,d=Delete,a=Admin. #### 获取数据(Get Data) 当想要获取某个具体节点存储的信息内容时,只需调用get函数并提供相应的绝对路径即可获得其最新副本。 ```bash get /existing_node_path ``` #### 列举子节点(List Children Nodes) 若想知道某一层级下存在多少个直接后代节点,那么list或ls都是不错的选择,它们能列举出目标目录里的全部成员名称而不涉及更深层次的内容结构。 ```bash ls /parent_directory/ ``` #### 删除节点(Delete Node) 最后,假如不再需要某些已经存在的实体,可通过delete语句将其彻底清除掉。需要注意的是,只有在确认待处理的目标确实为空的情况下才能顺利执行此动作; 否则应该先清理内部的所有子孙项目再做打算。 ```bash delete /node_to_be_removed ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值