● zookeeper概述
ZooKeeper::分布式协调工具,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
● zookeeper特点
● zookeeper数据结构
● zookeeper的应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等
统一命名服务
统一配置管理
统一集群管理
服务器动态上下线
软负载均衡
● zookeeper下载
----
----
----
----
----
● zookeeper安装
一:上传到/usr/local/soft/目录下、解压、重命名
# tar -zxvf zookeeper-3.4.14.tar.gz --解压
# mv zookeeper-3.4.14 zookeeper --重命名
二:新建ZK的数据目录和日志目录
# cd zookeeper --进入ZK目录
# mkdir data --新建数据目录
# mkdir log --新建日志目录
三:修改ZK配置文件
# cd conf/ --进入配置文件目录
# cp zoo_sample.cfg zoo.cfg --复制一份,ZK默认加载的配置文件名:zoo.cfg
# vim zoo.cfg --编辑配置文件
dataDIr、clientPort配置文件中已经指定,修改即可,dataLogDir需要添加列
dataDir=/usr/local/soft/zookeeper/data
dataLogDir=/usr/local/soft/zookeeper/log
clientPort=2181
● zookeeper启动、连接
一:启动
# cd bin --进入bin目录
# ./zkServer.sh start --启动zookeeper
./zkServer.sh { start | start-foreground | stop | restart | status | upgrade } --其他用法
二:查看状态
# ./zkServer.sh status 或者 jps
三:连接
./zkCli.sh -server 127.0.0.1:2181 --连接服务,指定ip、端口
● zoo.cfg文件详解
1.tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
2.initLimit =10:LF初始通信时限
集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
3.syncLimit =5:LF同步通信时限
集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。
4.dataDir:数据文件目录+数据持久化路径
主要用于保存Zookeeper中的数据。
5.clientPort =2181:客户端连接端口
监听客户端连接的端口。
● zookeeper命令详解
help命令
help命令用于查询客服端所支持的所用的命令,执行help,输入如下:
[zk: 127.0.0.1:2181(CONNECTED) 2] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
ls命令
ls命令用于获取路径下的节点信息,注意路径为绝对路径,如:ls /
ls2命令
ls2命令是ls命令的增强版,比ls命令多输出本节点信息
create命令 create [-s] [-e] path data acl
create命令用于创建节点,其中-s为顺序节点,-e临时节点
create /node1 'i am a node1'
delete命令
delete命令用于删除节点,如delete /nodeDelete
get命令
get命令用于获取节点的信息,注意节点的路径必须是以/开头的绝对路径。如get /node1
set命令
set命令用于设置节点的数据,如:set /node1 "i am 1"
addauth命令
addauth命令用于节点认证,使用方式:如addauth digest username:password
setAcl命令
setAcl命令用于设置节点Acl
Acl由三部分构成:1为scheme,2为user,3为permission,一般情况下表示为scheme:id:permissions
getAcl命令
获取节点的Acl,如getAcl /node1
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段
super: 在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)
permissions
CREATE(c): 创建权限,可以在在当前node下创建child node
DELETE(d): 删除权限,可以删除当前的node
READ(r): 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
WRITE(w): 写权限,可以向当前node写数据
ADMIN(a): 管理权限,可以设置当前node的permission
stat命令
stat命令用于查看节点的状态信息,如stat /
history命令
history用于列出最近的命令历史,可以和redo配合使用。如history
redo命令
redo命令用于再次执行某个命令,使用方式为redo cmdid 如 redo 20
常与history配合使用
connect命令
连接zk服务端,与close命令配合使用可以连接或者断开zk服务端
connect 127.0.0.1:2181
close命令
close命令用于关闭与服务端的链接
quit命令
退出客户端
listquota命令
listquota命令用于显示配额,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits
quota for /storm does not exist.
setquota命令
setquota命令用于设置节点个数以及数据长度的配额,如:
1 2 |
|
delquota命令
delquota命令用于删除配额,-n为子节点个数,-b为节点数据长度,如:delquota –n 2
sync命令
sync命令用于强制同步,由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作。
printwatchers命令
printWatchers命令用于设置和显示监视状态,值为on或则off
下一篇:搭建zookeeper集群:https://blog.csdn.net/qq_37936542/article/details/107096985