zookeeper笔记整理

253 阅读2分钟

1.集群角色和分工

  • leader 领导者
    集群中的领导者节点。
    
  • flower 跟随者
    跟随者参与选举和数据同步。
    
  • observer 观察者
    observer节点中有业务数据,但是不参与选举。从而可以保证数据同步和选举的效率。
    

2.常用命令

  • 启动服务节点
    ./zkServer.sh start ../conf/zoo.cfg 
    
  • 查看节点状态(主从)
    ./zkServer.sh status
    
  • 启动客户端连接
    ./zkCli.sh -server 127.0.0.1:2181
    
  • 列出节点
    ls /
    
  • 创建节点
    create /test 'content'
    
  • 创建临时节点(临时节点下不能创建子节点)
    create -e /test-e 'content'
    
  • 创建顺序节点
    create -s /test_seq_ 1
    结果显示: Created /test_seq_0000000001
    
  • 获取节点内容
    get /test
    
  • 查看节点信息
    stat /test
    结果显示: cZxid = 0x8b                           #创建节点的事务ID
             ctime = Mon Apr 26 12:28:29 CST 2021   #创建节点的时间
             mZxid = 0x8b                           #节点修改的事务ID
             mtime = Mon Apr 26 12:28:29 CST 2021   #节点修改的时间
             pZxid = 0x8b                           #节点增、删、改的事务ID
             cversion = 0                           #此节点的更改次数
             dataVersion = 0                        #该节点数据的更改次数
             aclVersion = 0                         #该节点权限的更改次数
             ephemeralOwner = 0x0                   #值为0或者是临时节点的sessionID
             dataLength = 1                         #该节点数据的长度
             numChildren = 0                        #子节点的数量
    
  • 删除节点
    delete /test                 #删除当前节点
    rmr /test                    #级联删除节点
    
  • 查看节点权限
    getAcl /test
    结果显示:'world,'anyone
              : cdrwa
    ACL权限控制,使用schmea:id:permission来标识,主要涵盖3个方面:
    - 权限模式(Schema):鉴权的策略
    - 授权对象(ID)
    - 权限(Permission)
    
    schema 
    . world:只有一个用户;anyone 代表所有人(默认)
    . ip:使用ip地址认证
    . auth:使用已添加认证的用户认证
    . digest: 使用“用户名:密码”方式认证
    权限
    . CREATE 简写为c,可以创建子节点
    . DELETE 简写为d,可以删除子节点
    . READ   简写为r,可以读取节点数据
    . WRITE  简写为w,可设置节点数据
    . ADMIN  简写为a,可以设置节点访问控制列表
    
  • 增加用户
    addauth digest zhangsan:123456  
    
    
    
    

3.其他

  • 每个节点内容默认最大为1M
  • 子节点不会继承父节点的权限,客户端可能无权访问某节点,但可以访问其子节点。
  • zookeeper原生客户端监听器只能监听一次 new Zookeeper()。
  • 可以注册监听器的操作有 getData(),
  • 使用ZkClient客户端

4.集群搭建

1.准备三台虚拟机
    node1 ip 192.168.108.13
    node2 ip 192.168.108.11 
    node3 ip 192.168.108.8
2.apache官网下载zookeeper
3.拷贝zoo_sample.cfg文件,命名为zoo.cfg
4.修改dataDir路径
5.在dataDir路径下新建myid文件
6.修改zoo.cfg文件追加内容
    server.1=192.168.108.13:2888:3888
    server.2=192.168.108.11:2888:3888
    server.3=192.168.108.8:2888:3888
    ps:必须填写server ip地址,否则会有如下报错信息Unable to read additional data from server 
    sessionid 0x0, likely server has closed socket, closing socket connection and 
    attempting reconnect