目录
很尴尬的一点,手贱把Zookeeper拼错了,大家自己注意一下。。。。当然你也可以选择一直复制我的代码,到搭建集群的时候再带你改回去。
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。
3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
5)数据更新原子性,一次数据更新要么成功,要么失败。
6)实时性,在一定时间范围内,Client能读到最新数据。
ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

下载地址:Apache ZooKeeper

当然咱们在实际环境中不太可能会使用到最新的版本,如果想要找到较老的版本可以点下面的Older releases are available in the archive :

这里下载的版本是3.5.7,这个版本在实际环境中使用的还是较多的:

选择下载即可:

在安装Zookeeper之前,得先安装好JDK,咱们先来安装JDK:
下载JDK:Java Downloads | Oracle
传进Linux后开始安装:
rpm -ivh jdk-8u201-linux-x64.rpm

接着开始配置文件:
vim /etc/profile.d/java.sh
把一下内容粘贴进去,然后保存退出:
- export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
- export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
- export PATH=$JAVA_HOME/bin:$PATH
接着刷新一下(切记):
source /etc/profile.d/java.sh
检查java版本,反馈如下则代表安装成功:
java -version

把刚刚下载的Zookeeper安装包传上去:

opt 目录下创建一个新的目录 module :
mkdir module
接着开始解压:
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
然后咱们进到 module 目录看看:
- cd /opt/module
- ll

这里改了下名字,看着会舒服一些:
mv apache-zookeeper-3.5.7-bin/ zookpeer-3.5.7
进入 conf 目录进行配置,可以看到这里有三个文件,需要进行配置的只有第三个:
cd /opt/module/zookpeer-3.5.7/conf

咱们给他改个名字然后进行配置:
mv zoo_sample.cfg zoo.cfg
然后咱们 vim 进去改一下:
vim zoo.cfg
可以看到其内容如下:
- # The number of milliseconds of each tick
- ### 通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
- tickTime=2000
-
- # The number of ticks that the initial
- # synchronization phase can take
- ### Leader和Follower初始通信时限
- ### Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量)
- initLimit=10
-
- # The number of ticks that can pass between
- # sending a request and getting an acknowledgement
- ### Leader和Follower同步通信时限
- ### Leader和Follower之间通信时间如果超过syncLimit * tickTime,Leader认为Follwer死
- 掉,从服务器列表中删除Follwer
- syncLimit=5
-
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
- ### 保存Zookeeper中的数据
- ### 默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录
- dataDir=/tmp/zookeeper
-
- # the port at which the clients will connect
- ### 客户端连接端口,通常不做修改
- clientPort=2181
可以看到里面的大部分都是注释,其中的参数非常的少,咱们主要来看这一段:
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
- dataDir=/tmp/zookeeper
他说快照文件会存放在这里,不要使用临时目录来存储数据。所以很明显了,咱们得把这里改掉。我们先去创建一个目录:

然后把这个目录路径复制下来,填到刚刚的配置文件中然后保存退出:

修改完毕后回到上一级目录 zookpeer-3.5.7 中,这时候咱们得先启动服务端后再去启动客户端:
bin/zkServer.sh start
启动完成后可以 jps 查看一下进程:

服务端启动后咱们需要启动客户端对其进行访问,这里不需要再加上之前的 start :
bin/zkCli.sh
启动成功后的样式如下:

退出时输入 quit 即可:
quit

使用以下命令可以查看Zookeeper的进程状态:
bin/zkServer.sh status

关闭服务端:
bin/zkServer.sh stop
