Zookeeper入门篇

第一部分 初识zookeeper?

1,什么是zookeeper?

1,高可用、高性能、开源的分布式协调服务。为分布式应用提供一致性服务,可以实现发布/订阅,负载均衡,分布式协调/通知,集群管理等
2,目标是封装好复杂易出错的关键服务,提供给用户
3,ZooKeeper保证了分布式一致性(顺序一致性、原子性、单一视图、可靠性、实时性/最终一致性)
4,客户端的读请求
5,有序性,所有更新都是全局有序的

2,zookeeper的linux环境搭建

官网下载地址Apache ZooKeeper

步骤:

  1. 因为zookeeper是java写的,所以要安装jdk,并配置好环境

  2. 将在官网下载好的压缩包上传到linux系统上(最好建一个专门存软件包的文件夹)解压,解压命令tar -zxvf 压缩文件名

  3. 进入解压后的目录,看到zoo_sample.cfg配置文件,这是模板文件,我们复制一份,并创建data文件夹(用于存储数据)

    cp zoo_sample.cfg zoo.cfg
    
  4. pwd命令复制data文件夹路径,cd到conf文件夹,vi修改我们复制的那个文件

    dataDir=复制的路径
    
  5. 尝试启动、连接、关闭zookeeper服务:cd到bin目录

    ./zkServer.sh start			//开启服务
    ./zkServer.sh stop			//关闭服务
    ./zkCli.sh					//连接服务
    ./zkCli.sh -server ip地址:端口号			//用ip地址连接
    ./zkServer.sh status		//查看服务状态
    

    启动服务成功截图
    Zookeeper入门篇
    关闭服务成功截图
    Zookeeper入门篇
    状态查看截图
    Zookeeper入门篇

3,zookeeper的数据模型

ozookeeper的数据节点可以视为树状结构(或者目录),树中的各节点被称为znode(即zookeeper node),一个znode可以有多个子节点。zookeeper节点在结构上表现为树状;使用路径path来定位某个znode,比如/ns-1/guigu/mysql/schema1/table1,此处ns-1、guigu、mysql、schema1、table1分别是根节点、2级节点、3级节点以及4级节点;其中ns-1是guigu的父节点,guigu是ns-1的子节点,guigu是mysql的父节点,mysql是guigu的子节点,以此类推。

oznode,兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。

一个znode可以分为三个部分:节点的数据 节点的子节点,节点的状态

第二部分 基本命令的使用

连接zookeeper客户端后,可以使用如下命令:

help 查看帮助信息(最重要,这是帮助文档,记住这个命令即可)

whoami 查看当前用户

stat 查看节点的属性

下面是所有命令

​ addauth scheme auth
​ close
​ config [-c] [-w] [-s]
​ connect host:port
​ create [-s] [-e] [-c] [-t ttl] path [data] [acl]
​ delete [-v version] path
​ deleteall path [-b batch size]
​ delquota [-n|-b|-N|-B] path
​ get [-s] [-w] path
​ getAcl [-s] path
​ getAllChildrenNumber path
​ getEphemerals path
​ history
​ listquota path
​ ls [-s] [-w] [-R] path
​ printwatches on|off
​ quit
​ reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,…]]] | [-add serverId=host:port1:port2;port3[,…]] [-remove serverId[,…]*]
​ redo cmdno
​ removewatches path [-c|-d|-a] [-l]
​ set [-s] [-v version] path data
​ setAcl [-s] [-v version] [-R] path acl
​ setquota -n|-b|-N|-B val path
​ stat [-w] path
​ sync path
​ version

使用监听器注意: 监听器是一次性的

参数说明

[]中的都是可选参数(即可加可不加)

-w watch,监听

-s sequence,顺序

-e ephemeral,临时

-v version,数据版本号

-R recursively,递归操作

节点属性说明

Zookeeper入门篇

acl权限控制

1,权限模式

world 只有一个用户:anyone,代表登录的所有人(默认)

ip 对客户端通过ip:端口连接的做认证

auth 对添加认证(addauth digest 用户名:密码)的用户认证

digest 使用“用户名:加密密码”方式认证

2,授予的权限

create、delete、read、writer、admin也就是 增、删、改、查、管理权限,这5种权限简写为cdrwa,注意:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

3,举例

world模式 setAcl /路径 world:anyone:cdrwa

ip模式 先用ip连接服务,setAcl /路径 ip:127.0.0.1:cdrwa

auth模式

  • addauth digest 用户名:明文密码
  • setAcl /路径 auth:用户名:cdrwa

digest模式

  • 用linux命令,echo -n 用户名:密码 | openssl dgst -binary -sha1 | openssl base64,复制加密后的密码
  • addauth digest 用户名:明文密码
  • setAcl /路径 digest:用户名:加密后的密码:cdrwa

4,多种模式授权

setAcl /node world:anyone:cdra,ip:192.168.211.129:crwa,auth:javagirl:drwa,digest:javagirl:tMWv2OiUQwAESYVpyRLr4NcbM1s=:ac

5,超级管理员

zookeeper的权限管理模式有一种叫做super,该模式提供一个超管可以方便的访问任何权限的节点,其它用户的所有权限super都会有

设置

重启服务,并 vi 修改conf文件夹中的zkServer.sh

  nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs=" \
    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

之后启动连接服务,并输入addauth digest super:admin添加用户认证

上一篇:OpenSSL 试用


下一篇:【安全算法之SHA256】SHA256摘要运算的C语言源码实现