栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

zookeeper的安装与特性

zookeeper的安装与特性

一.zk的安装

 

        Step1:配置JAVA环境,检验环境:

                java -version

        Step2: 下载解压 zookeeper(可能网络不通,就上传压缩包)

                wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

                tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

                cd apache-zookeeper-3.5.8-bin

        Step3: 重命名配置文件 zoo_sample.cfg

                cp zoo_sample.cfg zoo.cfg

                mkdir data

                vim zoo.cfg 修改持久化文件地址为我们创建的data文件夹

        Step4: 启动zookeeper

                bin/zkServer.sh start conf/zoo.cfg

        Step5:连接服务器

                bin/zkCli.sh -server ip:port

二.使用命令行操作zookeeper

1. 创建zookeeper 节点命令

        create [-s] [-e] [-c] [-t ttl] path [data] [acl]

        中括号为可选项,没有则默认创建持久化节点

-s: 顺序节点

-e: 临时节点

-c: 容器节点

-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用

创建节点

create  /test-node some-data

如上,没有加任何可选参数,创建的就是持久化节点 

 

查看节点:

get  /test-node

        

 

修改节点数据:

set /test-node some-data-changed

 

查看节点状态信息:

stat /test-node

 

Stat

  • cZxid:创建znode的事务ID(Zxid的值)。
  • mZxid:最后修改znode的事务ID。
  • pZxid:最后添加或删除子节点的事务ID(子节点列表发生变化才会发生改变)。
  • ctime:znode创建时间。
  • mtime:znode最近修改时间。
  • dataVersion:znode的当前数据版本。
  • cversion:znode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个版本)。
  • aclVersion:表示对此znode的acl版本。
  • ephemeralOwner:znode是临时znode时,表示znode所有者的 session ID。 如果znode不是临时znode,则该字段设置为零。
  • dataLength:znode数据字段的长度。
  • numChildren:znode的子znode的数量。

 

查看节点状态信息同时查看数据

get -s /test-node

创建子节点:

         这里要注意,zookeeper是以节点组织数据的,没有相对路径这么一说,所以,所有的节点一定是以 / 开头。

create /test-node/test-sub-node

三.Zookeeper 的 ACL 权限控制

Zookeeper 的ACL 权限控制,可以控制节点的读写操作,保证数据的安全性,Zookeeper ACL 权限设置分为 3 部分组成,分别是:权限模式(Scheme)、授权对象(ID)、权限信息(Permission)。最终组成一条例如“scheme:id:permission”格式的 ACL 请求信息。

                Scheme(权限模式):用来设置 ZooKeeper 服务器进行权限验证的方式。ZooKeeper 的权限验证方式大体分为两种类型:

        一种是范围验证。所谓的范围验证就是说 ZooKeeper 可以针对一个 IP 或者一段 IP 地址授予某种权限。比如我们可以让一个 IP 地址为“ip:192.168.0.110”的机器对服务器上的某个数据节点具有写入的权限。或者也可以通过“ip:192.168.0.1/24”给一段 IP 地址的机器赋权。

        另一种权限模式就是口令验证,也可以理解为用户名密码的方式。在 ZooKeeper 中这种验证方式是 Digest 认证,而 Digest 这种认证方式首先在客户端传送“username:password”这种形式的权限表示符后,ZooKeeper 服务端会对密码 部分使用 SHA-1 和 base64 算法进行加密,以保证安全性。

        授权对象(ID)

        授权对象就是说我们要把权限赋予谁,而对应于 4 种不同的权限模式来说,如果我们选择采用 IP 方式,使用的授权对象可以是一个 IP 地址或 IP 地址段;而如果使用 Digest 或 Super 方式,则对应于一个用户名。如果是 World 模式,是授权系统中所有的用户。

        权限信息(Permission)

        权限就是指我们可以在数据节点上执行的操作种类,如下所示:在 ZooKeeper 中已经定义好的权限有 5 种:

  • 数据节点(c: create)创建权限,授予权限的对象可以在数据节点下创建子节点;
  • 数据节点(w: wirte)更新权限,授予权限的对象可以更新该数据节点;
  • 数据节点(r: read)读取权限,授予权限的对象可以读取该节点的内容以及子节点的列表信息;
  • 数据节点(d: delete)删除权限,授予权限的对象可以删除该数据节点的子节点;
  • 数据节点(a: admin)管理者权限,授予权限的对象可以对该数据节点体进行 ACL 权限设置。

命令:

  • getAcl:获取某个节点的acl权限信息
  • setAcl:设置某个节点的acl权限信息
  • addauth: 输入认证授权信息,相当于注册用户信息,注册时输入明文密码,zk将以密文的形式存储

可以通过系统参数zookeeper.skipACL=yes进行配置,默认是no,可以配置为true, 则配置过的ACL将不再进行权限检测

生成授权ID的两种方式:

a.代码生成ID:

@Test
public void generateSuperDigest() throws NoSuchAlgorithmException {
    String sId = DigestAuthenticationProvider.generateDigest("gj:test");
    System.out.println(sId);//  gj:X/NSthOB0fD/OT6iilJ55WJVado=
}

b.在xshell 中生成

echo -n : | openssl dgst -binary -sha1 | openssl base64

设置ACL有两种方式

        节点创建的同时设置ACL

                create [-s] [-e] [-c] path [data] [acl]

        或者用setAcl 设置

                setAcl /zk-node digest:gj:X/NSthOB0fD/OT6iilJ55WJVado=:cdrwa

添加授权信息后,不能直接访问,直接访问将报如下异常

egt /zk-node
异常信息:
org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /zk-node    

 

访问前需要添加授权信息

addauth digest gj:test
get /zk-node
datatest

 

另一种授权模式: auth 明文授权

使用之前需要先addauth digest username:password 注册用户信息,后续可以直接用明文授权

addauth digest u100:p100
create /node-1 node1data auth:u100:p100:cdwra
这是u100用户授权信息会被zk保存,可以认为当前的授权用户为u100
get /node-1
node1data

IP授权模式:

setAcl /node-ip ip:192.168.109.128:cdwra
create /node-ip  data  ip:192.168.109.128:cdwra

 多个指定IP可以通过逗号分隔, 如 setAcl /node-ip ip:IP1:rw,ip:IP2:a

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号