ZooKeeper的安装模式可以大致分为3种:集群模式、单机模式和伪分布模式。其中ZK是由Java语言开发的,因此安装前需要保证本地已有JDK6及以上的Java环境。
下载
读者可以通过以下链接下载自己所需要的ZK版本:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/。下载解压缩后,目录结构如下所示:
bin:ZK的可执行脚本目录,其中包括:ZK服务进程、ZK客户端等。*.sh的是Linux环境下的脚本,*.cmd是Windows环境下的脚本。
conf:配置文件目录,zoo_sample.cfg是样例配置,一般修改为zoo.cfg。log4j.properties是日志配置。
lib:ZK的依赖包。
contrib:一些用于操作ZK的工具包。
recipes:ZK的一些用法Demo。
安装
在介绍具体的安装前,先说明一下后面可能会更改的配置的含义。
initLimit:ZK集群模式下,Leader与Follower之间需要同步一些数据。initLimit是Leader与Follower之间建立连接后,进行同步的最长时间。
syncLimit:配置Leader与Follower之间发送消息,请求和应答的最大时间长度。
tickTime:是上述2个时间值的单位。如:initLimit=5,说明其超时时间为2000ms*5=10。
server.{id}=host:port1:port2:其中id是一个数字,表示ZK进程的id,这个id也是dataDir目录下myid文件的内容。host表示的是ZK服务端进程所在的IP地址,port1表示Leader和Follower交换信息所使用的端口,port2表示选举Leader所使用的端口。
dataDir:必要配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。集群模式下,dataDir还需要有一个myid文件,其内容只能为1~255之间的数字,这个数字与server.id中的id对应,表示ZK服务进程的id。
集群模式
根据上述介绍的参数,下载解压软件后,分别在每台机器上面重复以下步骤。
1、配置zoo.cfg文件。初次使用时,可以将%ZK_HOME%/conf下的zoo_sample.cfg文件重命名为zoo.cfg。其配置内容如下:
2、创建myid文件。在dataDir目录下,创建一个名为myid的文件,写入内容为1~255的一个数字。数字对应着server.id中的id。
3、启动服务。在每台机器上面执行:
单机模式
单机模式的配置和启动比较简单,只是对上述集群模式的一个简化。其Demo配置如下:
由上面配置可以看出,其dataDir下面的myid文件的内容为1。
伪集群模式
伪集群模式和集群模式类似,不同就在于伪集群模式的机器只有一台。在一台机器上面开通了不同的端口号来模拟集群模式的通讯。其配置Demo如下:
相关命令
服务端相关
服务端启动
服务端停止
客户端相关
连接
客户端连接使用的是zkCli.sh命令,如直接执行./zkCli.sh,则连接的是本地的ZK。如需连接远程ZK,命令语法如下:
给出Demo如下:
创建
创建节点语法如下:
给出Demo如下:
读取
读取子节点列表语法如下:
给出Demo如下:
读取节点信息语法如下:
给出Demo如下:
更新
更新语法如下:
给出Demo如下:
删除
删除语法如下:
给出Demo如下:
这里需要注意一点的是,ZK不支持递归删除。
参考:《从Paxos到ZooKeeper》