一、ZooKeeper的下载、目录分析
ZooKeeper的安装需要java环境,因此我们需要先安装jdk
sudo apt-get install openjdk-8-jdk
ZooKeeper的下载
下面的网址为:http://mirrors.hust.edu.cn/apache/zookeeper/,目前(截止于2020.7)最新的版本是ZooKeeper-3.6.1
上图中文件的区别:
apa-zookeeper-3.6.1-bin.tar.gz:该文件中的ZooKeeper服务端、客户端等内容都是以脚本(.sh、.cmd)形式提供的,可以直接运行(本文我们下载的就是这个)apa-zookeeper-3.6.1.tar.gz:这个文件中不仅提供二进制软件,还提供这些二进制软件的java源码实现
输入下面的命令即可下载:
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
输入下面的命令解压:
tar -zxf apache-zookeeper-3.6.1-bin.tar.gz
目录结构
bin:主要的一些执行命令
.sh相关文件:ZooKeeper服务端/客户端等运行脚本,可以在Linux下执行运行.cmd相关文件:与上面一样的,只不过是在Windows下运行的
conf:存放配置文件
docs:文档
lib:Java的JAR文件,在Java编程操作ZooKeeper时可以调用这些文件
ZooKeeper的配置文件
在conf/目录下有一个zoo_sample.cfg的配置文件,这个是ZooKeeper的
默认配置文件当使用zkServer.sh启动服务端时,
会在./conf目录下寻找一个名为zoo.cfg的配置文件,因此我们需要在./conf目录下创建一个名为zoo.cfg的配置文件,这样才能正常的启动ZooKeeper服务端(详情见下面的演示案例)
二、单机部署
单机部署是指:只启动一个ZooKeeper服务端
步骤如下
第一步:当我们在conf/目录下没有建立zoo.cfg配置文件时,我们启动zkServer.sh会报错
第二步:复制conf/目录下的zoo_sample.cfg配置文件,复制新建一个名为zoo.cfg的配置文件,用于后面启动ZooKeeper服务端
# zoo.cfg
# tickTime:CS通信心跳数
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime=2000
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=10
# syncLimit:LF同步通信时限
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
# dataDir:数据文件目录
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/tmp/zookeeper
# clientPort:客户端连接端口
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
clientPort=2181
第三步:使用bin/目录下的zkServer.sh可以用来启动ZooKeeper服务端,在启动时可以用--config参数指定其配置文件为我们上面创建的配置文件,否则其会使用./conf/zoo_sample.cfg作为默认配置文件
# 启动ZooKeeper服务端
./bin/zkServer.sh start
第四步:输入下面的命令来查看当前ZooKeeper服务端的状态
./bin/zkServer.sh status
第五步:输入下面的命令来查看服务端是否启动成功,可以看到成功的监听在了2181端口上
第六步:也可以通过./bin目录下的zkCli.sh去连接服务端
./bin/zkCli.sh
第七步:连接上之后可以通过命令来操作,例如我们查看当前ZooKeeper所有的节点
ls -R /
三、集群部署
集群部署就是让ZooKeeper以集群中的节点角色启动,需要修改配置文件的相关内容。集群不是本文介绍的重点,集群在后面的文章会有单独介绍