本文属于分布式系统学习笔记系列,上篇文章整理了整理了第四章ZAB协议。本篇继续梳理第5章。本文介绍:安装zookeeper。
一 zookeeper安装
1.1下载
下载地址:http://mirror.bit.edu.cn/apache/zookeeper
1.2上传并解压
tar -zxvf zookeeper-3.4.8.tar.gz
这里我找了一台机器,解压过程太多了显示不全,书上还提到了环境jdk。这里已经配好了不多介绍。
另外一点,zookeeper模式分为集群与单机,实际应用中都是集群,这里为了演示就介绍单机。
1.3 创建data文件目录并修改配置文件
我们用vi 来修改配置文件
简要参数说明:
tickTime:默认2000,单位毫秒,用于配置zookeeper中最小时间长度。下面别的参数会与之相关。
initLimit:默认为10,是个正整数,必须配置。
作用:这个配置项是用来配置 Zookeeper leader服务器接受客户端(Follower服务器)启动并完成数据同步的时间。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。通常不用调整,当集群很大的时候有必要调大。
syncLimit:默认值为5,是个正整数,必须配置。
作用:这个配置项标识 Leader 与 Follower 之间进行心跳机制的最大时延时间。也就是不能超过多少个 tickTime 的时间长度。超过了leader就会认为follower已经脱离了和自己的同步。
dataDir:用于存储zookeeper服务器快照文件的目录。默认在/tmp下,一般需要指向实际位置。
如果没有配置dataLogDir,那么事务日志也会记录在这里面,考虑到写日志影响到zookeeper整体服务能力,所以一般也会单独配置dataLogDir目录。
server.id:host:port:port 该参数无默认值,单机情况下可以不配,用于配置集群模式下组成zookeeper的机器列表。每一行代表一个机器的配置。参数含义如下:
id 是一个数字(1-255),表示这个是第几号服务器;同时,我们需要在每个机器对应的dataDir下创建一个myid的文件,文件就一行内容,就是每个机器对应的id数字。注意确保id的唯一性。
host 是这个服务器的 IP地址或/etc/hosts 文件中映射了 IP 的主机名;
port:第一个端口是这个服务器与集群中的 Leader服务器通信和数据同步的端口。
第二个端口是专用于leader选举期间投票通信。
如果是伪集群的配置方式,由于host都是一样,所以要给它们分配不同端口号.下图是从书上第八章截取的示例图。
1.4创建myid文件
如果是集群模式,按照上述步骤,为其他机器都配置上zoo.cfg和myid.
1.5启动服务器
通常情况下,为了使用方便需要吧zookeeper添加到环境变量。不然直接运行会提示
-bash: zkServer.sh: command not found。
这台机器我没权限修改环境变量(/etc/profile),所以直接到bin目录下执行
./zkServer.sh start
1.6 验证服务器
jps
其中,QuorumPeerMain 是 zookeeper 进程,启动正常
stat
单机模式所以Mode显示为standalone,集群模式会显示leader or follower。
日志输出在zookeeper.out里面。
1.7 停止
如上所示,执行stop命令就可以停止。
附带说一下bin的脚本功能。
zkCleanup.sh 用于清理zookeeper的历史数据,包括事务日志文件及快照数据文件。
zkCli.sh 用于简单客户端命令。
zkEnv.sh 设置zookeeper的环境变量。
zkServer.sh 用于zookeeper服务器的启动、停止和重启。
总结:
本书第8章详细介绍了zookeeper配置有关的参数。可以结合之前的系统模型去理解。