单机模式安装

准备环境,需要提前安装好jdk,准备好zookeeper安装包

上传到用户目录下

在这里插入图片描述
安装工具使用rz命令进行上传,也可以使用xftp等工具上传

安装rz  $sudo yum install -y lrzsz(此命令仅限桌面环境使用ssh工具)

Cd到zookeeper安装目录

使用命令解压
Tar -zxvf ~/zookeeper -C.

在这里插入图片描述
解压完成目录出现文件夹

$ cd /app/zookeeper-3.4.13/conf/

在这里插入图片描述

将zoo_sample.cfg改名为zoo.cfg
$ cp zoo_sample.cfg zoo.cfg 
$ vim zoo.cfg

在这里插入图片描述
修改dataDir为zookeeper的数据目录,可以自定义,不要使用系统的/tmp目录修改dataDir为zookeeper的数据目录,可以自定义,不要使用系统的/tmp目录

配置zookeeper环境变量
$sudo vim /etc/profile.d/zookeeper.sh
export ZOOKEEPER_HOME=/app/zookeeper-3.4.13/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
Source /etc/profile

启动zookeeper服务器

查看所有命令
$ cd /app/zookeeper-3.4.13/bin/

在这里插入图片描述

-zkServer.sh 为zookeeper服务器启动命令(.sh为linux下脚本,.cmd为windows下脚本)

在这里插入图片描述

启动zookeeper为zkServer.sh start;停止则为zkServer.sh stop
启动默认占用2181端口;

开启zookeeper客户端
-zkCli.sh 同时可以指定连接的服务器 -zkCli.sh -server host
zoo.cfg相关配置信息
① tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
② initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5
③ syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2
④ dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data
⑤ clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
⑥ 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B
server.1=hadoop4:2888:3888
server.2=hadoop5:2888:3888
server.3=hadoop6:2888:3888
server.A=B:C:D 其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

Zookeeper的基本命令

在这里插入图片描述
在这里插入图片描述
从左向右表示,连接服务器的地址,与服务器连接状态,执行命令的次数
-ls / 使用 ls 命令来查看某个目录包含的所有文件,例如:
在这里插入图片描述
-ls2 / 使用 ls2 命令来查看某个目录包含的所有文件,与ls不同的是它查看到time、version等信息。
在这里插入图片描述
-stat / 列出指定节点的状态信息,或者说是元数据信息

[zk: localhost:2181(CONNECTED) 3] stat /
# 节点被创建时的事务ID
cZxid = 0x0
# 节点创建时间
ctime = Thu Jan 01 08:00:00 CST 1970
# 最近一次更新时的事务ID
mZxid = 0x0
# 最近一次更新时间
mtime = Thu Jan 01 08:00:00 CST 1970
# 该节点的子节点列表最近一次被修改的事务ID
# 添加、删除子节点会影响该值
pZxid = 0x100000014
# 子节点版本号
cversion = 1
# 数据版本号
dataVersion = 0
# 访问控制版本号
aclVersion = 0
# 创建临时节点的事务ID
# 如果是持久节点,则该值为0x0
ephemeralOwner = 0x0
# 当前节点的数据长度
dataLength = 0
# 当前节点的子节点数目
numChildren = 3

在这里插入图片描述

-create [-s] [-e] path data acl
    s:可选,表示该节点为顺序节点
    e:可选,表示该节点为临时节点
    path:节点路径
    data:节点数据
acl:访问控制列表

create /c 123 --必须要指定数据,否则无法创建成功
在这里插入图片描述

-set path data [version]
    path : 节点路径
    data : 新数据
    version : 版本号,要么不写,要么和上一次查询出的版本号一致

该操作会影响节点的mZxid、dataVersion和mtime属性
Set /a 123
在这里插入图片描述

-delete path [version]
path :要删除的节点的路径

在这里插入图片描述

-setquota -n|-b val path  //对节点增加限制(配额)
    n:表示子节点的最大个数
    b:表示数据值的最大长度
    val:子节点最大个数或数据值的最大长度
    path:节点路径

在这里插入图片描述
-listquota path //列出指定节点的quota
在这里插入图片描述
-1 表示不限
-delquota path //删除路径的限制
-ACL (Access Control List)和Linux文件系统的中的那个访问控制列表有点类似
权限主要有:

CREATE : 创建子节点
READ : 获取节点数据和子节点列表
WRITE : 更新节点数据
DELETE : 删除子节点
ADMIN : 设置节点ACL的权限

与授权相关的几个概念:

shchema:权限模式,有IP和digest两种
ID:授权对象 
schema为IP时,该值为具体的IP地址
scheme为digest时,该值为 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一个工具类org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:权限,指的就是上面所说的五种权限
最终的组合为: schema + ID + permission

-getAcl path //获取指定节点的ACL信息
在这里插入图片描述
-setAcl //设置节点的Acl

setAcl /node_3 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad

在这里插入图片描述

-addauth scheme auth
    schema:可取ip或digest
    auth
        schema==digest时为 userName:password
        schema==ip时为

注册会话授权信息

addauth digest hylexus:123456

-history // 历史执行的命令
在这里插入图片描述
-redo //重新执行指定命令编号的历史命令,命令编号可以通过history查看
在这里插入图片描述
欢迎扫码进群,期待更优秀的你!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐