Zookeeper 常见命令

1. 查看节点

1.1 get

  • 最简单的命令,和key value 键值对命令很像,就是用get命令。如果存在就返回值及状态。如果不存在,那就表示节点不存在。
    get /hadoop
    
    在这里插入图片描述
    在这里插入图片描述

1.2 stat

  • 与上面的命令类似,但只是用来查询状态,不查询数据。
    stat /hadoop
    
    在这里插入图片描述

1.3 znode状态解释

在这里插入图片描述

1.4 查看节点列表

  • 即查看节点的所有子节点
    ls /
    

    可以查看当前根路径的所有子节点
    在这里插入图片描述

  • 查看某个节点的所有子节点
    ls /node
    
    在这里插入图片描述
  • 查看某个节点的所有子节点,顺便看节点的状态
    ls2 /node
    
    在这里插入图片描述

2. 新增节点

2.1 create

create [-s] [-e] path data #其中-s 为有序节点,-e 临时节点

2.1.1 创建持久化节点并写入数据

create /hadoop "123456"

2.1.2 创建持久化有序节点

  • 此时创建的节点名为指定节点名 + 自增序号
    create -s /a "aaa"
    

    Created /a0000000000

  • 因此,查的时候,需要查/a0000000000

2.1.3 创建临时节点

  • 会在会话过期或关闭之后,删除节点
    create -e /tmp "tmp"
    

2.1.4 创建临时有序节点

create -s -e /aa 'aaa'

Created /aa0000000004
同样的,查该节点的时候需要查/aa0000000004

2.1.5 创建子节点

  • 其实操作与上面一样,不过还是演示一下以防万一。假设目前已经存在一个节点/hadoop,创建该节点的子节点
    create /hadoop/child "child"
    

3. 更新节点

3.1 set

  • 只能更新,不能创建不存在的节点。更新之后,节点版本号dataVersion会自增1,修改事务号、修改时间等都会发生变化
    set /hadoop "345"
    
  • 也可以添加一个版本号,实现乐观锁的效果(如果目前的版本号不符合输入的版本号,说明在此之前已经被修改过了,因此不能保存)
    set /hadoop "3456" 1
    

    表示如果目前版本号为1,则可以修改

4. 删除节点

4.1 delete

delete path [version]
  • 同样的,如果传入的版本号不符合,则没办法删除
  • 还有就是,只能删除没有子节点的节点,如果该节点底下还有子节点,则删除失败。

4.2 rmr

  • 递归删除该节点及其子节点
    rmr path
    

5. 监听器

  • 顾名思义,就是监听某个节点,如果节点的状态发生了变化,就提醒客户端,该节点发生了状态变化
  • 值得一提的是,该监听器都是一次性的,如果触发了一次之后,就不再工作了,如果还需要继续监听,那就需要再创建一个。

5.1 get path watch

  • 在查询节点的同时,顺便添加一个监听器。
  • 如果对该节点的内容进行修改、删除该节点,就会触发监听器。但给它添加、修改子节点并不会触发
    get /node watch
    

5.2 stat path watch

  • 感觉和上述没什么差别

5.3 ls path watch / ls2 path watch

  • 当给该节点增加、删除子节点,就会触发监听器

6. 权限控制

6.1 概述

  • 就像文件系统一样,不同的目录、文件,可以给不同的用户不同的权限。
  • zookeeper可以对节点的增删查改、修改权限(cdrwa)设置权限。
  • alc权限控制,使用scheme:id:permission来表示
    • 权限模式(scheme):权限的策略
    • 权限对象(id):权限的对象
    • 权限(permission):授予的权限
  • 特性:
    • 权限控制是基于每个znode节点的,需要给每个节点设置权限
    • 每个znode可以有多个权限控制方案和权限
    • 子节点不会继承父节点的权限,客户端没办法访问某个节点,但有可能访问它的子节点。

6.2 权限模式

  • 有很多不同的模式,其实相当于认证方式在这里插入图片描述
  • world是默认的方式,就是所有人,不做身份验证
  • ip:就是根据客户端的ip地址进行认证
  • auth:就是根据目前的客户端添加的用户进行验证。只有在客户端添加了相同的用户和密码,才能获取授权。
  • digest:与上方类似,不过这个设置用户名、密码的方式更加简单,直接在设置权限的时候设置即可,无需提前添加用户。

6.3 授权的对象

  • 授权对象ID是指,权限赋予的实体,例如:IP 地址或用户

6.4 授予的权限

  • create、delete、read、writer、admin也就是 增、删、改、查、管理权限, 这5种权限简写为cdrwa。
  • 值得注意的是,delete并不是自身的删除权限,而是自身子节点的删除权限。因此,如果要删除它自己,只要它的父节点没有设权限,就可以直接删。
  • create也指的是,创建该节点子节点的权限。在这里插入图片描述

6.5 授权相关命令

在这里插入图片描述

6.6 world 授权模式

  • 默认就是这种模式。默认就是开放所有用户,所有权限。
    setAcl <path> world:anyone:<acl>
    
  • setAcl /node1 world:anyone:cdrwa
    

6.7 ip 授权模式

  • 通过ip来限制授权
    setAcl <path> ip:<ip>:<acl>
    
  • 远程客户端登录命令。值得一提的是,即使是服务端和客户端在同一台机器上,打开客户端时如果不使用这种方式,也无法获取ip权限。
    ./zkCli.sh -server ip
    
  • setAcl /node2 ip:192.168.60.129:cdrwa
    

6.8 auth 授权模式

  • 首先,在客户端添加一个自己想用来认证的用户及密码
    addauth digest itcast:123456
    
  • 设置权限
    setAcl /node3 auth:itcast:cdrwa
    
  • 至此,设置好了权限,其他客户端想要拥有权限,也需要首先执行第一句话,添加认证用户。

6.9 digest 授权模式

  • 首先,在设置权限前,先要计算一下密文,因为这个设置密码需要用密文的形式。在linux 的命令界面
    echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64
    

    <user>:<password>位置添加自己的用户名密码

  • 设置权限
    setAcl <path> digest:<user>:<password>:<acl>
    
  • 如:
    setAcl /node4 digest:itheima:qlzQzCLKhBROghkooLvb+Mlwv4A=:cdrwa
    
  • 获取授权的方法也和auth 授权模式一样,在客户端添加一个用户即可。

6.10 多种模式授权

  • 可以给同一个节点添加多个授权
    setAcl /node5 ip:192.168.60.129:cdra,auth:itcast:cdrwa,digest:itheima:qlzQzCLKhBROghkooLvb+Mlwv4A=:cdrwa
    

    多个权限之间用逗号隔开

6.11 alc 超级管理员

  • 当关闭了一些权限之后,实在没办法修改、修改权限之后,其实还有另一种超级管理员的方法可以拯救!
  • 同样的,计算一下超级管理员的密码密文
    echo -n super:admin | openssl dgst -binary -sha1 | openssl base64
    

    目前将用户名密码设置为super:admin

  • zkServer.sh脚本中,找到启动zookeeper的位置,添加一句话
    "-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="
    

    等号后面就是用户名和密码密文,修改成自己的

    nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "- Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "- Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="\
    

    找到这句话之后,修改成现在这个样子。

  • 如往常一样启动服务器即可。
  • 而在客户端中,如果要使用超级管理员身份,也需要将超级管理员添加。
    addauth digest super:admin #添加认证用户
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值