zoukankan      html  css  js  c++  java
  • Zookeeper快速入门

    Zookeeper快速入门

    一、安装

    1. 安装

     环境要求:必须要有jdk环境

       从官网https://archive.apache.org/dist/zookeeper/下载最新的版本,如:zookeeper-3.4.9.tar.gz

    如果是windows,解压即可;
    如果是linux运行tar –zxvf zookeeper-3.4.9.tar.gz ,解压。

    解压之后如下:

     

    1. 配置

    需将conf/ zoo_sample.cfg  复制一份名为zoo.cfg的配置文件。其中重要的几项配置:

    clientPort=2181       端口

    dataDir=D:/logs/zookeeper/data   快照存放位置

    dataLogDir=D:/logs/zookeeper/log         日志存放位置

    snapCount=3   执行多少次事物就生成快照文件

    1. 运行服务端

    如果是windows ,双击zkServer.cmd

    如果是linux,运行sh zkServer.sh

    看到如下就代表成功

     

    或者通过jps查看,如果有QuorumPeerMain就代表成功

     

    1. 客户端连接服务端

    如果是windows ,双击zkCli.cmd,或者在命令窗口运行 zkCli.cmd  -server ip:port

    其中ip:port 为服务端的ip和端口,如127.0.0.1:2181

    如果是linux,运行sh zkCli.sh  -server ip:port

     

    二、使用

    创建节点

    create /node1 v1    (其中node1为节点名称,v1为节点的值)

     

    修改节点

    set /node1 v11  (其中node1为节点名称,v11为需要修改节点的值)

     

    删除节点

    delete /node2    (其中node2为节点名称)

     

    如果/node1下面有子节点,那么会报错,需要使用rmr /node1命令

     

    查看节点

    get /node1    (其中node1为节点名称)

     

    说明:

    如上的操作不带参数默认都是持久节点。

    三、节点类型:

    1.Zookeeper中有两种节点类型:

    持久节点persitent

    create /node1 v1,客户端断开连接之后,zk不删除persitent节点

    临时节点ephemeral

    create  -e /node1 v1 ,客户端断开连接之后,zk删除ephemeral节点

    2.zookeeper有四种形式的目录节点(默认是persistent)

    PERSISTENT 

    create /node1 v1

    PERSISTENT_sequence

    create  -s /node1 v1

    实际上创建了一个新的名称为node10000000001的节点。再次执行会生成一个新的名称为node10000000002的节点

     

    EPHEMERAL

    create  -e /node1 v1  当客户端退出之后,改节点就被删除了

    注意,临时节点下面不能创建子节点,会报错:

     

    EPHEMERAL_sequence

    create  -e -s /node1 v1  当客户端退出之后,改节点就被删除了。

    3.节点状态属性

    cZxid :节点被创建的事物id值  c:create

    ctime :节点被创建的时间

    mZxid :节点被修改的事物的事物id值 m:modify

    mtime :节点被修改的时间

    pZxid :子节点最后一次呗修改的事物id

    cversion :节点的子节点被修改的版本号

    dataVersion :数据被修改的版本号

    aclVersion : 节点的acl被修改的版本号

    ephemeralOwner :如果是持久节点值为0,临时节点非0

    dataLength : 节点值得长度

    numChildren :子节点个数

    如下为持久节点的值:

    [zk: localhost:2181(CONNECTED) 11] get /node1

    v11

    cZxid = 0x13

    ctime = Mon Oct 29 10:07:58 CST 2018

    mZxid = 0x14

    mtime = Mon Oct 29 10:08:39 CST 2018

    pZxid = 0x13

    cversion = 0

    dataVersion = 1

    aclVersion = 0

    ephemeralOwner = 0x0

    dataLength = 3

    numChildren = 0

    如下为临时节点的值:

    [zk: localhost:2181(CONNECTED) 12] get /node2

    v2

    cZxid = 0x29

    ctime = Mon Oct 29 10:28:13 CST 2018

    mZxid = 0x29

    mtime = Mon Oct 29 10:28:13 CST 2018

    pZxid = 0x29

    cversion = 0

    dataVersion = 0

    aclVersion = 0

    ephemeralOwner = 0x1000efbbe700001

    dataLength = 2

    numChildren = 0

    四、zookeeper的ACL

    4.1ACL机制

    ACL(Access Control List)机制,表示为scheme:id:permissions,第一个字段表示采用哪一种机制,第二个id表示用户,permissions表示相关权限(如只读,读写,管理等)。

    Scheme:

    world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的

    auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)

    digest: 它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication

    ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段

    id:

    id是验证模式,不同的scheme,id值不一样
    scheme为auth时:username:password

    scheme为digest时:username:BASE64(SHA1(password))

    scheme为ip时:客户端的ip地址。

    scheme为world时:anyone。

    permiddsion:

    CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)

    CREATE(c):创建子节点的权限

    DELETE(d):删除节点的权限

    READ(r):读取节点数据的权限

    WRITE(w):修改节点数据的权限

    ADMIN(a):设置子节点权限的权限

    4.2ACL的命令:

    4.2.1getAcl

    create /node1 v1  # 创建一个子节点

    getAcl /node1     # 获取该节点的acl权限信息

     

    4.2.2setAcl

    setAcl /node1 world:anyone:craw  把删除权限d去除 ,那么在node1下面创建的子节点是不能被删除的,但是/node1本身这个节点还是可以被删除的。

     

    4.2.3addauth:注册会话授权信息(相当于创建用户或者切换用户)

    4.2.3.1  auth

    addauth digest u1:123456       新增用户,名为u1,密码为123456

    setAcl /node3 auth:u1:123456:crdwa  给node3节点设置Acl ,scheme为auth类型,id 为auth类型即 u1:123456   ,permission为crdwa

     

    退出本次客户端后:

    再次重新连接客户端  (或者新启动一个客户端)

    ls /node3/testAcl  #没有权限无法访问

    create /node3/testAcl/testb bbb #没有权限无法访问

    addauth digest user1:123456  # 重新新增权限后可以访问了

     

    如果忘记密码那就没办法了,查看不了

    4.2.3.1  digest

    auth与digest的区别就是,前者使用明文密码进行登录,后者使用密文密码进行登录

    create /node3/testDigest  dd

    addauth digest u2:654321

    setAcl /node3/testDigest digest:u2:Fqb0cTcVtn704lhrUTPitrq88fg=:ca   # 使用digest来设置权限

     

    其中:addauth digest u2:654321 ,怎么查看加密的密码呢

    通过执行如下java命令可获得:

    java -Djava.ext.dirs=D:lurenzspringbootzookeeperzookeeper-3.4.13lib -cp D:lurenzspringbootzookeeperzookeeper-3.4.13zookeeper-3.4.13.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider u2:654321

     

    五、常用四字命令

    ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

    echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader 

    使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。  

    echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。  

    echo kill | nc 127.0.0.1 2181 ,关掉server  

    echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。  

    echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息  

    echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。  

    echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。  

    echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。  

    echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。  

    echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径

    5.1通过nc向zookeeper提交命令:

    注意:需要安装nc否则会报错:

     

    Linux(centos)安装命令:yum –y install nc

    Windows安装netcat: 下载链接https://eternallybored.org/misc/netcat/

     

    5.2通过telnet向zookeeper提交命令

    首先要执行telnet 127.0.0.1 2181

    连接成功之后,输入四字命令,如:stat

     

    六、查看快照或日志文件

    直接打开快照或日志文件时乱码,可用如下命令查看

    在linux中执行:

    java -cp /usr/local/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.jar:/usr/local/zookeeper/zookeeper-3.4.8/lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter log.11089bb

    java -cp /usr/local/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.jar:/usr/local/zookeeper/zookeeper-3.4.8/lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.SnapshotFormatter snapshot.ffd9b6

    注意:java cp 命令在windows中执行分隔符为;而在linux为:

    java cp 命令:

    -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”分隔,linux上是分号“:”分隔

    java -cp D:lurenzspringbootzookeeperzookeeper-3.4.13zookeeper-3.4.13.jar;D:lurenzspringbootzookeeperzookeeper-3.4.13libslf4j-api-1.7.25.jar org.apache.zookeeper.server.SnapshotFormatter D:logszookeeperdataversion-2snapshot.1a

    java -cp D:lurenzspringbootzookeeperzookeeper-3.4.13zookeeper-3.4.13.jar;D:lurenzspringbootzookeeperzookeeper-3.4.13libslf4j-api-1.7.25.jar org.apache.zookeeper.server.LogFormatter D:logszookeeperlogversion-2log.1

     

    七、zookeeper信息查看工具

    下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

    输入ip,端口

     

    查看如下,代表链接成功

     

  • 相关阅读:
    响应式开发: 宽高等比例缩放
    node服务成长之路
    node压力测试
    前端开发工具
    sequelize问题集锦
    webpack引入handlebars报错'You must pass a string or Handlebars AST to Handlebars.compile'
    夏夜无题
    jmeter在windows环境下系统参数设置
    服务端性能优化指南
    修车备忘
  • 原文地址:https://www.cnblogs.com/lookupthesky/p/9874831.html
Copyright © 2011-2022 走看看