zookeeper集群搭建以及常用命令

一集群搭建:本次使用docker-compose.yml来搭建三个节点的zookeeper

1. 如果linux没安装docker-compose:

    

  1.curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  2. chmod +x /usr/local/bin/docker-compose

  3. docker-compose --version

2.编写docker-compose.yml文件:

version: '3'
services:
  zoo1:
    image: zookeeper
    restart: always
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
  zoo2:
    image: zookeeper
    restart: always
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
  zoo3:
    image: zookeeper
    restart: always
    ports:
      - 2184:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

3. 执行 docker-compose up -d 命令,等待安装完即可

 二:zookeeper常用命令:

1. 登录其中一个节点使用命令: docker exec -it 容器Id /bin/bash

2. 进入容器后,cd bin进入到bin目录,然后执行 zkCli.sh -server 127.0.0.1:2181 连接上zookeeper客户端

 3. 使用命令 ls -R /  查询当前zookeeper的目录:

 4. 创建一个永久节点: create  目录   数据        如: create  /order "ddddd"    重复执行该命令会报错

 5. 获取节点的数据: get 目录 如: get  /order

 6. 创建一个永久顺序节点: create -s 目录 数据  如: create  -s /order/dto "6666"     执行2次该命令,就多了2条数据

 7. 创建临时节点: create -e 目录 数据: 如 create -e /order/temp "ddd"   重复执行该命令会报错

8. 创建临时顺序节点: create -es 目录 数据  如:create -es /order /temp2  "ccc"  执行2次会多2条数据

 临时节点:当你退出客户端连接时,再次进来,临时节点就不存在了

9:退出客户端并且再次连接: 使用:quit命令退出客户端,然后再用命令zkCli.sh -server 127.0.0.1:2181 进行连接客户端:此时使用 ls -R /order观察临时节点是否还存在

 10. 给目录增加一次监控: ls -w 目录  如:ls -w /order 当/order节点发生改变时,如增加子节点,删除子节点会得到通知,但如果是改数据的话就不会得到通知

 11. 对路径增加永久监控:命令:addWatch -m PERSISTENT 目录  如 addWatch -m PERSISTENT /order  对order目录的修改会触发监控,但对/order下的子节点修改不会触发监控,如

create /order/order/dto0000000000/kk "aa" 不会触发监控,如果要子路径修改也触发监控,使用命令 addWatch -m PERSISTENT_RECURSIVE  目录  如: addWatch -m PERSISTENT_RECURSIVE /order 

12. 删除节点:delete 目录 如 delete /order,只能删除最后一级的目录,如果有子目录会报错,如果要删除包含子目录的节点,使用命令 deleteall 目录 如:deleteall /order

 13. 设置节点的值: set 目录 值: 如 set /order  "ddd"

 14. 查询集群的配置: config -c | -w |-s

 15. 查询历史执行的命令 history

 16. 重复执行历史的某个命令 redo +上面查询到的序号

 17. 移除监控   removewatches 目录 如:removewatches /order

18. 查询子节点的数量:  getAllChildrenNumber path 如  getAllChildrenNumber /shop

19. 查询临时节点:getEphemerals path  如 getEphemerals /shop

 20.关闭当前连接使用close命令

21. 连接其他节点:connect ip:port; 也可以直接写对方在节点中配置的服务名,如connect zoo1

 22: 查询目录的详细信息 stat 目录 如stat /shop效果和ls -s /shop差不多

 23.前面说的监听,对数据变更是没效果的,如果要对数据变更进行监听使用get -w 目录,如:

 三、权限管理:

   

 1. 登录账号(账户不存在会自动创建):addauth digest 账户:密码  如 addauth digest root:admin

 2. 查询当前登录的用户 whoami

 

 2. 给指定目录授权:setAcl 目录 auth:账户:密码:权限  如: setAcl /shop auth:root:admin:cdrwa

3. 查询指定目录的权限 getAcl 目录,如getAcl /shop

 登录其他节点,再访问该目录看看:connect zoo3登录节点3,然后再查询该节点(可以发现没权限访问)

 

 但你访问子节点是有权限的 如: get /shop/dto  

 因此,如果你想所有的子节点都要权限访问,在设置权限时加上-R参数,如setAcl -R /shop auth:root:admin:cdrwa

4.登录账户再次访问看看:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2023-07-07 16:56  yangxiaohui227  阅读(107)  评论(0编辑  收藏  举报