当前位置: 首页 > 工具软件 > ZK > 使用案例 >

Zookeeper--(四)ZK基本特性

马魁
2023-12-01

前面我们已经对watcher进行基本命令操作和了解,我们回顾下

watcher机制

  • 针对每个节点的操作,都会有一个监督者 ->wathcer

  • 当监控的某个对象(znode)发生了变化,则出发watcher事件

  • zk中的watcher是一次性的,触发后立即销毁

  • 父节点,子节点增删改都能触发器watcher

  • 针对不同类型的操作,触发的watcher事件也不同:

    • (子)节点创建事件
    • (子)节点删除事件
    • (子)节点数据变化事件
  • get path [watch]设置watcher

  • 父节点增删改操作触发watcher

  • 子节点增删改操作触发watcher

watcher使用场景

  • 统一资源配置,通过watch得知更新来更新其他客户端配置

session 的基本原理

  • 客户端与服务端之间的连接存在会话
  • 每个会话都可以设置一个超时时间
  • 心跳结束,session则过期
  • Session过期,则临时节点znode会被抛弃
  • 心跳机制:客户端想服务端的Ping包请求

ACL(access control lists)权限控制

  • 设置相关读写等权限,可以保障数据安全性
  • 通过permissions权限来指定不同的权限范围和角色

ACL的构成

  • zk的acl通过[scheme?permissions]来构成权限列表
scheme:代表采用的某种权限机制
id:代表允许访问的用户
permissions:权限组合字符串
  • scheme
    • world:world下只有一个id,即一个用户,也就是任何人,world:anyone:[permissions]
    • auth:代表认证登录,需要注册用户有权限就可以,auth:user:password:[permissions]
    • digest:需要对密码加密才能访问,digest:username:BASE64(SHA1(password)):[permissions]
    • auth是明文,digest是密文
  • ip:设置为ip指定的ip地址,此时限制ip进行访问,ip:192.168.1.1:[permissions]
  • super:代表超级管理员,拥有所有权限
  • permissions(字符串缩写crdwa)
    • create:创建子节点
    • read:获取节点/子节点
    • write:设置节点数据
    • delete:删除子节点
    • admin:设置权限

auth读取会以第一次的值为准

ACL常用命令

  • getAcl:获取某个节点的acl权限信息
[zk: localhost:2181(CONNECTED) 24] create /chandler/abc aa
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/chandler
Created /chandler/abc
[zk: localhost:2181(CONNECTED) 25] getAcl /chandler/abc
'world,'anyone
: cdrwa
  • setAcl:设置某个节点的acl权限信息
[zk: localhost:2181(CONNECTED) 26] setAcl /chandler/abc world:anyone:dra
cZxid = 0xe
ctime = Sun Jan 13 23:09:49 CST 2019
mZxid = 0xe
mtime = Sun Jan 13 23:09:49 CST 2019
pZxid = 0xe
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
[zk: localhost:2181(CONNECTED) 27] getAcl /chandler/abc
'world,'anyone
: dra
  • addauth:输入认证授权信息,注册时输入明文密码,
  • world:anyone:cdrwa
  • Super:1.修改zkServer.sh 增加super管理员. 2.重启zkServer.sh
搜索nohup
    nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=chandler:密文密码"\

ACL的常用使用场景

  • 开发/测试环境分离,开发者无权操作测试库的节点,只能看
  • 生产环境上控制指定Ip的服务可以访问相关节点,防止混乱,(ip动态改变可能需要手动改,比较麻烦)

zk四字命令

  • zk可以通过它自身提供的简写命令和服务器进行交互
  • 需要使用到nc命令,安装:yum install nc
  • echo [commond] | nc [ip] [port]
  • stat :查看zk的状态信息,以及是否mode
  • ruok :查看当前zkserver是否启动,返回imok
  • dump :列出未经处理的会话和临时节点
  • conf :查看服务器配置
  • cons :展示连接到服务器的客户端信息
  • envi :环境变量
  • mntr :监控zk健康信息
  • wchs :展示watch的信息
  • wchc 与 wchp session与watch及path与watch信息(需要在cfg文件配置 4lw.commands.whitelist=*)

其他更多命令可以去官网查看

 类似资料: