zoukankan      html  css  js  c++  java
  • 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

    ---

  • 相关阅读:
    【SqlServer系列】表达式(expression)
    【SqlServer系列】语法定义符号解析
    Docker常用命令<转>
    VMware下的Centos7联网并设置固定IP
    redis的setbit命令
    Java并发编程:并发容器之CopyOnWriteArrayList<转>
    Java并发编程:volatile关键字解析<转>
    Java并发编程:阻塞队列 <转>
    Java并发编程:Lock和Synchronized <转>
    Jackson学习笔记(三)<转>
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/14533751.html
Copyright © 2011-2022 走看看