ZooKeeper安装部署与命令行客户端使用

ZooKeeper的安装部署比较简单,ZooKeeper同时提供了单机部署与集群部署两种部署形式,并且提供了命令行客户端。

ZooKeeper单机部署

从Zookeeper下载稳定的ZooKeeper版本,该学习笔记下载的地址为:Zookeeper下载。然后解压到要部署的目录,目录中包含以下文件夹:

  1. bin目录:为ZooKeeper的执行文件目录,包括服务启动执行文件和客户端执行文件等
  2. conf目录:为ZooKeeper的配置文件目录,包括日志的配置和Zookeeper服务的配置
  3. docs目录:为文档目录
  4. lib目录:为ZooKeeper依赖的jar包

一般我们只是使用到bin目录内的文件和conf目录的文件,下面我们介绍一下conf内的配置文件,其中log4j.properties用于配置Zookeeper的日志。ZooKeeper服务默认使用zoo.cfg,其目录内提供了示例文件:zoo_sample.cfg,再使用时,我们需要重命名zoo_sample.cfg为zoo.cfg。如下为zoo_sample.cfg文件内的配置介绍:

# ZooKeeper使用的基本时间单位(毫秒)。用于心跳时间和会话超时时间
tickTime=2000
# 初始同步阶段可以采用的基本时间的倍数,在集群中使用
initLimit=10
在发送请求和获得确认之间可以传递的时间(基本时间的倍数),在集群中使用
syncLimit=5
#存储内存中数据库快照以及数据库更新的事务日志(除非另有指定)的位置。
dataDir=/tmp/zookeeper
#ZooKeeper服务端口
clientPort=2181
#最大客户端连接数。
maxClientCnxns=60
#要保留在dataDir中的快照数
autopurge.snapRetainCount=3
# 清除任务间隔(单位小时)
# 设置为0,则禁止该功能
autopurge.purgeInterval=1
#数据收集提供者
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

一般情况下我们可以使用默认配置,即不修改任何配置项,直接重命名zoo_sample.cfg为zoo.cfg即可。介绍完配置项之后,我们可以使用bin目录中的命令启动ZooKeeper,请确保使用正确的JDK版本。进入到bin目录,然后执行./zkServer.sh 即可启动Zookeeper服务。

ZooKeeper集群部署

以单机运行ZooKeeper便于评估,某些开发和测试。但是在生产中,任何一个服务都不应该单点存在,我们需要将Zookeeper配置为集群模式。ZooKeeper的集群配置比较简单,ZooKeeper服务的个数需要是2N+1台,集群的配置也只需要修改zoo.cfg即可。我们在三台服务上部署ZooKeeper,然后修改ZooKeeper的zoo.cfg配置如下:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=10.0.10.60:2888:3888
server.2=10.0.10.61:2888:3888
server.3=10.0.10.62:2888:3888

上面配置中initLimit是ZooKeeper用来限制server.x中ZooKeeper服务器必须连接到leader服务的时间跨度。syncLimit限制从leader服务到followers服务之间的超时时间。而server.x则是配置的ZooKeeper配置的ip与端口。而ZooKeeper是根据数据存储目录即配置dataDir配置的目录下的myid文件确定哪一个ip端口属于本机服务。上面的配置中,10.0.10.60服务中/var/lib/zookeeper目录下myid的内容为1,其他的两台服务内容分别为2和3.至此,ZooKeeper集群就搭建成功了,我们可以通过./zkServer.sh启动三台ZooKeeper服务。

ZooKeeper命令行客户端

为了初学者操作方便,ZooKeeper为我们提供了以命令行的方式操作ZooKeeper服务,命令行客户端也位于bin目录为zkCli.sh。我们直接执行zkCli.sh会连接到当前Zookeeper服务,也可以指定服务和端口连接:zkCli.sh -server 10.0.10.62:2181。我们直接执行zkCli.sh会打印连接日志,连接成功之后会出现一下内容:

Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 

我们在命令行中输入help,可以获取可以从客户端执行的命令的列表,下面只是标注了命令行客户端最常用的命令,有兴趣的可以使用命令去一个一个测试,后续讲解如何使用Java客户端连接ZooKeeper。命令行客户端命令与解释如下所示:

[zkshell: 0] help
ZooKeeper -server host:port cmd args  ||连接zookeeper
addauth scheme auth  ||给当前客户端添加权限
close          ||关闭当前连接   
connect host:port  ||连接zookeeper
create [-s] [-e] [-c] [-t ttl] path [data] [acl] ||创建节点
set [-s] [-v version] path data ||给节点设置值,更改节点
setAcl [-s] [-v version] [-R] path acl ||给节点设置权限
delete [-v version] path  ||删除节点
deleteall path ||递归删除该节点与该节点的子节点。
rmr path ||递归删除该节点与该节点的子节点。
get [-s] [-w] path  ||获取节点值
getAcl [-s] path    ||获取节点权限
getAllChildrenNumber path  ||获取子节点数量
getEphemerals path        ||获取临时节点
History ||在当前客户端执行过的命令
ls [-s] [-w] [-R] path  ||查看节点下子节点
ls2 path [watch]  ||不仅仅展示节点下子节点,还会展示当前节点数据
quit ||退出客户端
stat [-w] path ||查询指定节点的一些描述信息
sync path ||由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作。
setquota -n|-b val path ||设置子节点个数和数据长度配额。-n为子节点数量,-b为节点长度最大值
delquota [-n|-b] path ||删除对子节点个数个数据长度的限制
listquota path  ||查看对子节点个数和长度的限制
printwatches on|off ||设置和显示监视状态,on或者off。
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]增量为集群添加或者删除ZooKeeper服务器
config [-c] [-w] [-s] ||查看服务器的配置
redo cmdno ||重新执行history命令展示的命令,cmd为数字 1为第一条命令,2为第二条,以此类推
removewatches path [-c|-d|-a] [-l] ||删除节点下的监听

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值