一、zookeeper节点:
1、PERSISTENT持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他永久存在
2、PERSISENT_SEQUENTIAL 持久化顺序编号目录节点:客户端与zookeeper断开连接后,该节点依旧存在,zookeeper给该节点名称顺序编号
3、EPHEMERAL 临时目录节点:客户端与zookeeper端开连接后,该节点被删除
4、EPHEMERAL_SEQUENTIAL 临时顺序编号目录节点:客户端与zookeeper端开连接后,该节点被删除,zookeeper给该节点名称顺序编号
5、Container节点:3.5.3版本新增,如果Container节点下没有子节点,则Container节点会被zookeeper自动清除,默认是60s检查一次。
6、TTL节点:默认禁用,只能通过系统配置zookeeper.extendedTypesEnable=true开启,不稳定。有一个时间,时间到了之后会自动删除该节点。
二、监听通知机制
1、 如果注册的是对某个节点的监听,则当这个节点被删除,或者被修改时,对应的客户端将被通 知
2、如果注册的是对某个目录的监听,则当这个目录有子节点被创建,或者有子节点被删除,对应 的客户端将被通知
3、如果注册的是对某个目录的递归子节点进行监听,则当这个目录下面的任意子节点有目录结构 的变化(有子节点被创建,或被删除)或者根节点有数据变化时,对应的客户端将被通知。
注意:所有的通知都是一次性的,及无论是对节点还是对目录进行的监听,一旦触发,对应的监 听即被移除。递归子节点,监听是对所有子节点的,所以,每个子节点下面的事件同样只会被触 发一次。
对set 进行监听(-w) :get -w /test
set /test
取消监听 :removewatches /path
监听路径:ls -R -w /test
每个节点只能被触发一次,该路径下的其他节点可以被触发,已触发的不可以被触发。
临时节点不可以有子节点,临时节点和临时顺序节点 只要客户端关闭、超时之后就一定会被删除
三、zookeeper权限控制
可以通过-Dzookeeper.skipACL=no开启权限控制,默认是开启的,可以吧no改为yes关闭权限控制。
在zkServer.sh 中的ZOOMAIN中修改参数
1、权限信息
(1)创建权限(c:create),授权的对象可以在节点下创建子节点。
(2)更新权限(w:wirted),可以更新该数据的节点
(3)读取权限(r:read),可以读取该节点下的内容和子节点的数据
(4)删除权限(d:delete),可以删除该节点的子节点
(5)管理者权限(a:admin),可以对该节点进行权限的设置
2、命令
(1)getAcl 获取谋而节点的acl权限
(2)setAcl 设置节点的权限
(3)addauth 输入认证授权信息
3、加密授权
生成授权id 在linux命令行中输入:
echo -n user1:pass1 |openssl dgst -binary -sha1 |openssl base64
创建加密节点:
+7K83PhyQ3ijGj0ADmljf0quVwQ=是上面命令生成的授权id ,user1是上面命令的user1
create /nodeauth aaa digest:user1:+7K83PhyQ3ijGj0ADmljf0quVwQ=:rw
如果要查看刚刚创建的节点信息,就需要如下命令:
addauth digest user1:pass1
4、明文授权
先登录才可以用明文
addauth digest user1:pass1
创建
create /nodeauth1 test auth:user1:pass1:rw
5、ip登录
create /ipnode aaa ip:ip地址:rw
通过指定的ip(ip为设置可以连接zookeeper节点的ip)连接,就可以操作该节点
./bin/zkCli.sh -server ip(ip为连接的zookeeper服务的ip)
6、超级管理员
执行:echo -n root:root |openssl dgst -binary -sha1 |openssl base64
生成:qiTlqPLK7XM2ht3HMn02qRpkKIE=
在zkServer.sh 中的ZOOMAIN中修改参数,添加如下命令:
-Dzookeeper.DigestAuthenticationProvider.superDigest=root:qiTlqPLK7XM2ht3HMn02qRpkKIE=
重启zookeeper
事物日志、数据快照