木心

毕竟几人真得鹿,不知终日梦为鱼

导航

zookeeper记录1(安装、配置、命令行watcher、acl)

1、zookeeper介绍
2、linux安装zookeeper
3、zookeeper配置文件介绍
4、zookeeper基本数据模型
5、ZK基本特性与基于Linux的ZK客户端命令行学习
    5.1、help和查看节点
    5.2、创建命令
    5.3、修改命令
    5.4、删除命令
6、zk特性--watcher机制
    6.1、创建父节点触发NodeCreated事件
    6.2、修改父节点数据触发NodeDataChanged事件
    6.3、删除父节点触发NodeDeleted事件
    6.4、创建子节点触发NodeChildrenChanged事件
    6.5、删除子节点 触发NodeChildrenChanged事件
7、acl权限
    7.1、acl的构成
    7.2、acl相关命令操作getAcl和setAcl
    7.3、addauth digest user:pwd
    7.4、设置权限ip
    7.5、设置权限super
    7.6、zk四字命令

1、zookeeper介绍    <--返回目录

简介

  1)中间件,提供协调服务

  2)作用于分布式系统,发挥其优势,可以为大数据服务

  3)提供java和c语言的客户端api

 

zookeeper的特性

  1)一致性:数据一致性,数据按照顺序分批入库

  2)原子性:事务要么成功,要么失败,不会局部化

  3)单一视图:客户端连接集群中的任一zk节点,数据都是一致的

  4)可靠性:每次对zk的操作状态都会保存在服务端

  5)实时性:客户端可以读取到zk服务端的最新数据

 

zookeeper的作用体现

  1)master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也是所谓首脑模式,从而保证我们的集群式高可用的。

  2)统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算中用的特别多。

  3)发布与订阅,类似消息队列MQ,dubbo发布者把数据存在znode上,订阅者会读取这个数据。

  4)提供分布式锁,分布式环境中不同进程之间争夺资源,类似多线程中的锁。

  5)集群管理,集群中保证数据的强一致性。

 

2、linux安装zookeeper    <--返回目录

  首先要有jdk环境。

  zookeeper下载、安装以及配置环境变量

  1)下载zookeeper linux安装包:zookeeper-3.4.11.tar.gz

  2)安装 tar -xzvf zookeeper-3.4.11.tar.gz -C /usr/local

  3)配置环境变量 vim /etc/profile

3、zookeeper配置文件介绍    <--返回目录

  tickTime: 用于计算的时间单元。比如session超时:N*tickTime

  initLimit: 用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示

  syncLimit: 用于集群,master主节点与从节点之间发送消息,请求和应答时间长度。(心跳机制)

  dataDir:数据存储的位置,必须配置

  dataLogDir: 日志目录,如果不配置会和dataDir共用

  clientPort: 连接服务器的端口,默认2181

 

  bin目录的命令

  启动:./zkServer.sh start

   查看状态: ./zkServer.sh status

   客户端连接:./zkCli.sh

 

4、zookeeper基本数据模型    <--返回目录

  https://blog.csdn.net/qq_39827935/article/details/81214063

  session基本原理:

  客户端与服务器之间的连接存在会话;每个会话可以设置一个超时时间;心跳结束,session则过期;

  session过期,则临时节点znode会被抛弃;

  心跳机制:客户端向服务器的ping包请求

 

5、ZK基本特性与基于Linux的ZK客户端命令行学习    <--返回目录

5.1、help和查看节点    <--返回目录

  help:查看所有指令

  查看节点: ls /zookeeper 或 ls2 /zookeeper(保护状态信息)

  查看节点状态信息: stat /zookeeper

  查看节点数据和状态信息: get /zookeeper

5.2、创建命令    <--返回目录

  默认创建持久节点(不加参数): create /oy data。如果ephemeralOwner=0x0则表示是持久节点,如果是其他,则是临时节点。

  创建临时节点: create -e /oy/temp aaa, 断开客户端则临时节点被删除

  创建顺序节点:create -s /oy/sec seq

5.3、修改命令    <--返回目录

  set /oy/temp new-data。修改data后,dataVersion增1。

  修改时的乐观锁控制

5.4、删除命令    <--返回目录

  delete path [version]: 带版本号进行乐观锁控制;如果不带版本好,则直接删除

 

6、zk特性--watcher机制    <--返回目录

  针对每个节点的操作,都会有一个监督者watcher;当监控的某个对象znode发生了变化,则触发watcher事件;zk中的watcher是一次性的,触发后立即销毁;

  父节点、子节点增删改都能够触发其watcher;针对不同类型的操作,触发的watcher事件也不同:

    (子)节点创建事件;(子)节点删除事件;(子)节点数据变化事件;

  watcher使用场景:统一资源配置

6.1、创建父节点触发NodeCreated事件    <--返回目录

  通过stat path [watch] 设置watcher,然后创建create /oy aaa会触发NodeCreated事件

6.2、修改父节点数据触发NodeDataChanged事件    <--返回目录

  首先通过stat path [watch] 设置watcher,然后修改事件set /oy bbb会触发NodeDataChanged事件

6.3、删除父节点触发NodeDeleted事件    <--返回目录

  首先通过命令get /oy watch注册事件;然后通过 delete /oy删除节点

6.4、创建子节点触发NodeChildrenChanged事件    <--返回目录

  ls 为父节点设置watcher: ls /oy watch , 然后创建 create /oy/son1 aaa

6.5、删除子节点 触发NodeChildrenChanged事件    <--返回目录

  ls 为父节点设置watcher: ls /oy watch , 然后创建 delete /oy/son1。

 

   注: 修改字节点数据,不触发事件。需要通过 get或stat /oy/son1 watch来给 “/oy/son1”注册事件,然后修改该节点数据触发的是父节点NodeDateChanged事件

 

7、acl权限    <--返回目录

  acl: access control lists 权限控制。针对节点可以设置相关读写权限,目的为了保障数据安全性。权限permissions可以指定不同的权限范围以及角色。

7.1、acl的构成    <--返回目录

  zk的acl通过  [scheme:id:permissions]  来构成权限列表。scheme: 代表采用的某种权限机制;id:代表允许访问的用户;permissions: 权限组合字符串。

  sheme之world: world下只有一个id,即只有一个用户,也就是anyone,那么组合的写法就是 world:anyone:[permissions]。

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

  scheme之digest: 需要对密码加密才能访问,组合形式为digest:username:BASE64(SHA1(password)):[permissions]。简而言之,auth与digest的区别就是,前者明文,后者密文。setAcl /path auth:lee:lee:cdrwa 和 setAcl /path digest:lee:BASE64(sha1(password)):cdrwa是等价的,在通过addauth digest lee:lee后都能操作指定节点的权限。

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

  sheme之super:代表超级管理员,拥有所有的权限。

 

  permissions:权限字符串缩写 cdrwa ==> create 创建子节点, delete 删除子节点,  read 获取节点/子节点 , write 设置节点数据,  admin 设置权限

7.2、acl相关命令操作getAcl和setAcl    <--返回目录

  getAcl:获取某个节点的acl权限信息。使用默认创建: create /oy/son1 aaa,默认的权限是 world:anyone:cdrwa 所有人有所有权限

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

  创建时指定权限

  path=/oy/son1的权限是crwa, 没有d(delete)删除子节点权限。

  auth:user:pwd:cdrwa

  digest:user:BASE64(SHA1(pwd)):cdrwa

7.3、addauth digest user:pwd    <--返回目录

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

  设置权限 auth:user:pwd:cdrwa 时,需要先用addauth创建用户。

  第一次设置完auth权限后,无法修改用户名和密码,可以修改permissons

  设置权限: digest:user:密文的密码

   退出当前客户端连接,再次使用客户端连接,需要先使用 "addauth diegest user:明文密码" 进行登陆

7.4、设置权限ip    <--返回目录

  设置权限 ip:192.168.213.100:cdrwa

7.5、设置权限super    <--返回目录

  修改zkServer.sh 增加super管理员,然后重启zkServer

  改前:

   改后:

  使用super用户登陆,可以操作

7.6、zk四字命令    <--返回目录

  需要使用nc命令,安装yum install nc

  四字命令格式:echo [commond] | nc [ip] [port]

 

  查看zk状态信息:echo stat | nc 192.168.213.200 2181

   查看当前zkServer是否启动,返回imok:echo ruok | nc 192.168.213.200 2181

  列出未经处理的会话和临时节点: echo dump | nc ip port

  创建一个临时节点create -e /oy/son6 aaa后再次使用dump查看

 

  查看服务器配置 echo conf |  nc ip port

  查看客户端信息 echo cons | nc ip port

 

  查看环境变量 echo envi | nc ip port

  监控zk健康信息 echo mntr | nc ip port

 

  展示watch的总数 echo wchs | nc ip port

  使用wchc和wchp(需要配置zoo.cfg:4lw.commands.whitelist=stat,wchc等或*), 测试前使用 get /oy watch和get /oy1 watch 注册watcher

---

posted on 2021-03-14 19:39  wenbin_ouyang  阅读(217)  评论(0编辑  收藏  举报