Zookeeper安装入门

1. 下载Zookeeper

下载zookeeper3.4.6,上传,解压到/opt

2. Zookeeper配置安装

1.进入zookeeper/conf,cp zoo_sample.cfg zoo.cfg
,修改zoo.cfg

[root@BaseNode conf]# vim zoo.cfg 

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/var/tdp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

#设置服务器内部通讯地址和节点,给zookeeper使用的#ps:注意这里的名字要和主机名一致
server.1=BaseNode:2888:3888
server.2=zknode1:2888:3888
server.3=zknode2:2888:3888
server.4=zknode3:2888:3888
~                          

3. 在/var/bdp/zookeeper下创建myid文件

以此在每个虚拟机下存入和server.num相同的数字。

4.修改/etc/hosts文件

10.4.17.100 BaseNode
10.4.17.101 zknode1
10.4.17.102 zknode2
10.4.17.103 zkNode3                                                             

5. 修改zookeeper环境变量配置

vim /etc/profile
在文件末尾添加:

#Zookeeper
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

保存source /etc/profile.

6. 大功告成,试一下吧

zkServer.sh restart/start
再看一下运行状态,zkServer.sh status

停止机群,zkServer.sh stop

储存结构

  • zookeeper是一个树状结构,维护一个小型的数据节点znode
  • 数据以key-value的方式存在,目录是数据的key
  • 所有的数据访问都必须以绝对路径的方式呈现

一个znode的格式[1]

img

首先查看下我们的’/根’目录下的情况,

我们的根目录下有zookeeper、sxt、bdp三个节点。而bdp下还要一个001节点。

查看下bdp此节点的属性。

现在,我们对/bdp节点进行一次修改。

image-20211101144944452

可以看到,mZxid和mtime都发生了改变。

然后,我们在bdp下,再新增一子节点,

可见 bdp 节点的 pZxid、cversion、numChildren 都发生了相应的改变。

节点的分类

  1. PERSISTENT–持久化目录节点

    • 默认创建的就是持久化节点
    • 客户端与zookeeper断开连接后,该节点依旧存在。
  2. PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点

    • 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  3. EPHEMERAL-临时目录节点

    • 客户端与zookeeper断开连接后,该节点被删除
    • 可以被所有客户端查看
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点

    • 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
  5. Sequential序列化节点

    • 使用create -s /znode value 进行创建
    • 就是给该节点名称进行顺序编号,不会重复

zookeeper操作命令

  1. 启动zookeeper

    zkServer.sh start

  2. 登录到zookeeper

    zkCli.sh -server 127.0.0.1:2181

    zookeeper是一个集群,默认登录到了本地,(127.0.0.1),2181是zookeeper客户端端口。

  3. 查看某个目录下的子节点

    ls /path

  4. 查看某个目录下子节点的详细信息

    ls2 /path

  1. 新建节点:
    create /bdp "hello"

  2. 查看节点信息:

    get /bdp

  3. 修改节点值

    set /bdp "hey"

    最多1M

  4. 删除节点

    delete /bdp/001

当然也可以使用,rmr /node强行删除。

  1. 退出客户端

    quit

zkServer的监听机制

  • 官方说明
    • 一个Watch时间是一个一次性的触发器,当被设置了watch的数据发生改变的时候,则服务器将这个改变发送给设置Watch的客户端,以便通知它们。
  • 监听机制特点
    • 一次性触发数据改变时,一个watch event会被送到client,但是client只会收到一次这样的信息。
    • watcher event异步发送。
  • 数据监视
    • zookeeper有数据监视和子数据监视
    • getdata()和exists()设置数据监视
    • getchildren()设置子节点监视
  • 数据监听只会监听被设置watch,不会监听其子节点的任何变化

监听实现

  1. get /node watch

对/bdp的子节点进行操作时,watch都没有反应,只有对/bdp进行操作时,发生watchedEnvent。

  1. stat /node watch

我试着新增和删除node的子节点,不会发生watchedEnvent。删除node时发生了。

  1. ls /node watch

对其子节点进行监控,新增或删除子节点时,都会发生watchedenvent

ACL权限控制(了解)

  • ACL:Access Control List 访问控制列表

权限设置

概述

  • ACL 权限设置的格式时是scheme: id:permission三段式:

    • 授权方式:scheme

    • 授权对象:id

    • 授予的权限:permission

  • 特性如下:

    • ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限
    • 每个znode支持设置多种权限控制方案和多个权限
    • 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点

    例如:

    setAcl /test2 ip:128.0.0.1:crwda

    将/test2的crwad权限授予ip地址为128.0.0.1的用户

SCHEME 采用何种方式授权

  • world:全局权限授予
  • auth:代表已经认证通过的用户
  • digest:用户名-密码认证方式,这也是业务系统中最常用的。
  • ip:使用客户端的主机ip来进行授权

ID

  • 权限模式授权对象
    IP通常是一个IP地址,例如’192.168.3.2’
    Digest自定义,通常是“username:password(username:用户名,password,密码)”,例如"CCC:12311414141414124124124"
    World只有一个id:anyone
    Auth与Digest一致

permission 授予什么权限

  • ZK的节点有五种操作权限:CREATE(增)、DELETE(删)、READ(查)、WRITE(改)、ADMIN(管理员权限)
  • 五种权限中,delete是指对子节点的删除权限,而其他四种权限是对自身节点的操作权限
  • CREATE:创建子节点
  • DELETE:删除子节点
  • READ:读取节点数据及显示子节点列表
  • WRITE:可以设置节点数据
  • ADMIN:可以设置 节点访问控制列表权限

ACL相关命令[2]

  • getAcl path : 读取ACL权限配置
    • getAcl /
  • setAcl setAcl path acl : 设置ACL权限
    • setAcl / world:anyone:wa
    • setAcl / auth:zhang:123456:rcwda
  • addauth scheme auth : 添加认证用户
    • addauth digest zhang:123456

四字命令(了解)

安装nc

  • yum install nc -y

使用方式

  • 在终端输入

    echo 四字命令 | nc ip/node1 2181
    

可以看到BaseNode的集群配置情况。

  • 如果四字命令不可使用,那么在/zookeeper/conf/zoo.cfg文件最后加上

    4lw.commands.whitelist=*
    

    即可

四字命令

Zookeeper四字命令功能描述
conf打印出服务相关配置信息
cons列出所有链接到这台服务器的客户端全部连接/绘画详细信息.包括"接受/发送"的包数量,会话id,操作延迟,最后的操作执行等信息
crst重置所有连接的连接和会话统计信息
dump列出那些比较重要的会话和临时节点
envi打印出服务环境的详细信息。
reqs列出未经处理的请求
ruok测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应。
stat输出关于性能和连接的客户端的列表。
srst重置服务器的统计。
srvr列出连接服务器的详细信息
wchs列出服务器watch的详细信息。
wchc通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表。
wchp通过路径列出服务器watch的详细信息。它输出一个与session相关的路径。
mntr输出可用于检测集群健康状态的变量列表

Zookeeper环境搭建(增加一台虚拟机)

  1. 解压zookeeper

  2. 修改zookeeper/conf zoo.cfg

  3. echo 5 > /var/bdp/zookeeper/myid

  4. vi /etc/hosts

  5. vi /etc/profile

  6. zkServer.sh restart/start

也可以不重启添加zookeeper(热部署)

参考

​ [1]. ZooKeeper 数据模型 znode 结构详解 - Mr.peter - 博客园 (cnblogs.com)

​ [2]. zookeeper的ACL权限控制 - QiaoZhi - 博客园 (cnblogs.com)[zookeeper的ACL权限控制 - QiaoZhi - 博客园 (cnblogs.com)](

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值