单机模式安装
准备环境,需要提前安装好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查看
欢迎扫码进群,期待更优秀的你!