浅谈Zookeeper的watch机制与ACL权限控制以及四字命令

Watcher机制

Watch机制主要有以下几个特点:

1)针对每个结点的操作,都会有一个监督者->watcher。

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

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

4)父结点,子结点的增删改查都能够触发其watcher。

5)针对不同类型的操作,触发的watcher事件也不同。

1、(子)结点创建事件

2、(子)结点删除时间

3、(子)结点数据变化事件

Watcher命令行学习

1)通过get path [watch]设置watcher。

2)父结点 增删改操作触发watcher。

3)子结点 增删改操作触发watcher。

Watcher事件类型

一、针对父结点

1)创建父结点触发:NodeCreated
在这里插入图片描述
2)修改父结点数据触发:NodeDataChanged
在这里插入图片描述

3)删除父结点触发:NodeDeleted
在这里插入图片描述

二、针对子结点

1)ls为父结点设置watcher,创建子结点触发:NodeChildrenChanged
在这里插入图片描述

2)ls为父结点设置watcher,删除子结点触发:NodeChildrenChanged
在这里插入图片描述

3)ls为父结点设置watcher,修改子结点不触发事件。

必须要把它当成父结点来设置,而不是子结点,即:get /lamar/abc watch

watcher使用场景

以上介绍了watcher的大致操作方法,接下来是它的使用场景。
1)统一资源配置
在这里插入图片描述
如果第一个zk服务器修改了相应的配置信息,那么客户端可以通过触发watcher事件,统一修改集群中剩余的zk服务器,做统一的配置更新。

ACL(access control lists)权限控制

ACL权限控制的作用如下:

1)针对结点可以设置相关读写等权限,目的是为了保障数据安全性。

2)权限permissions可以指定不同的权限范围以及角色。

ACL命令行

getAcl:获取某个结点的acl权限信息。

setAcl:设置某个结点的acl权限信息。

addauth:输入认证授权信息,注册时输入明文密码(登录),但是在zk的系统里,密码是以加密的形式存在的。

ACL的构成

一、主要形式

zk的acl通过[scheme:id:permissions]来构成权限列表。

scheme:代表采用的某种权限机制

id:代表允许访问的用户

permissions:权限组合字符串

二、Scheme介绍

1)world:world下只有一个Id,即只有一个用户,也就是anyone,那么组合的写法就是world:anyone:[permissons]

2)auth:代表认证登录,需要注册用户有权限就可以,形式为auth:user:password:[permissions]

3)digest:需要对密码加密才能访问,组合形式为digest:username:BASE64(SHA1(password)):[permissions]

auth与digest的区别就是,前者明文,后者密文

4)ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如ip:192.168.1.1:[permissions]

5)super:代表超级管理员,拥有所有的权限

三、permissions

1)权限字符串缩写cdrwa

CREATE:创建子结点

DELETE:删除子结点

READ:获取结点/子结点

WRITE:设置结点数据

ADMIN:设置权限

ACL命令行学习

1)world:anyone:cdrwa
在这里插入图片描述
其中,world:anyone是绑定的组合,意味着任何人都可以访问这个结点。在这里插入图片描述
可以发现,修改为crwa的结点不能被删除。

2)auth:user:pwd:cdrwa&digest:user:BASE64(SHA1(pwd)):cdrwa&addauth digest user:pwd
在这里插入图片描述
先注册用户,才可以设置auth属性。

使用addauth digest user:pwd命令进行注册,然后采用权限控制后,就可以使这个结点只能被特定的用户所访问。
在这里插入图片描述
使用getAcl获取结点的权限,可以发现密码进行了SHA1的加密处理,另外,在设置了用户名和密码的时候,可以用匿名的形式对结点的权限进行设置,如:setAcl /lamar/abc auth::cdrwa

3)ip:192.168.1.1:cdrwa
对特定的ip做出访问限制。
在这里插入图片描述
4)Super
增加超级管理员用户,可以无视任何权限控制。

(1) 修改zkServer.sh增加super管理员

(2) 重启zkServer.sh

在zkServer.sh中添加事先注册好的账号以及密码密文信息:

-Dzookeeper.DigestAuthenticationProvider.superDigest=lamar:***********(your pwd)=
在这里插入图片描述
在进行登录操作之后,就有了所有的权限。
在这里插入图片描述
可以观察到,在一般情况下无法取得的权限,在super账户下都可以获得(192.168.3.3非本服务器ip)。

ACL的常用使用场景

1)开发/测试环境分离,开发者无权操作测试库的结点,只能看。

2)生产环境上控制指定ip的服务可以访问相关结点,防止混乱。

zk四字命令Four Letter Words

1)zk可以通过它自身提供的简写命令来和服务器进行交互。

2)需要使用到nc命令,安装:yum install nc

3)echo [commond] | nc [ip] [port]

从官方文档中查看四字命令:Document->Admin&Ops->Administrator’s Guide->搜索The Four Letter Words。
具体链接:https://zookeeper.apache.org/doc/r3.5.5/zookeeperAdmin.html#sc_4lw

常见命令

1)[stat]:查看zk的状态信息,以及是否mode

​ 使用命令echo stat | nc 127.0.0.1 2181
在这里插入图片描述

2)[ruok]:查看当前zkServer是否启动,返回imok
在这里插入图片描述

3)[dump]:列出未经处理的会话和临时结点
在这里插入图片描述

4)[conf]:查看服务器配置
在这里插入图片描述

5)[cons]:展示连接到服务器的客户端信息
在这里插入图片描述

6)[envi]:环境变量
在这里插入图片描述
7)[mntr]:监控zk健康信息
在这里插入图片描述
8)[wchs]:展示watch的信息

1561965128816

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值