说明
ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。
ZooKeeper运行依赖Java环境,因此安装zk前需要配置好Java环境,否则会报错Error: JAVA_HOME is not set.
下载
下载地址:zookeeper.apache.org/releases.ht…
选择最新稳定版本,当前为3.8.3;
注意:
- Apache ZooKeeper 3.8.3(asc, sha512)下载文件名为
apache-zookeeper-3.8.3-bin.tar.gz - Apache ZooKeeper 3.9.1 Source Release(asc, sha512)下载文件名为
apache-zookeeper-3.9.1.tar.gz此处要下载第一个,名称为apache-zookeeper-3.8.3-bin.tar.gz的文件;
配置
1、解压后进入文件夹,新建data、log文件夹;
2、进入conf文件夹,复制zoo_sample.cfg后改名为zoo.cfg;(因为在bin/zkEnv.cmd中默认了zoo.cfg的名称)
3、修改zoo.cfg中的文件内容
# dataDir目录修改为解压zk的目录
dataDir=D:\apache-zookeeper-3.8.3-bin\data
# 新增日志目录
dataLogDir=D:\apache-zookeeper-3.8.3-bin\log
4、防止端口占用
在使用zookeeper 3.6之后的版本,开启服务器,zk会自动占用8080端口。
# admin.serverPort 默认占8080端口
admin.serverPort=8888
添加这行设置,可以更改zk的端口;
启动
1、启动服务端
进入bin/,打开运行zkServer.cmd,即可启动zk服务端。 打印内容出现以下内容,证明启动成功。
2023-12-18 15:27:34,164 [myid:] - INFO [main:o.a.z.s.NIOServerCnxnFactory@660] - binding to port 0.0.0.0/0.0.0.0:2181
2、启动客户端
进入bin/,打开运行zkCli.cmd,即可启动zk客户端。
注意:
注意顺序,先启动服务端,再启动客户端,否则报错。
zoo.cfg参数
- tickTime=2000 作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间(毫秒)就会发送一个心跳。
- initLimit=10 用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒
- syncLimit=5 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10秒
- dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
- clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。