概述

本文主要简述如何搭建zookeeper集群。

安装步骤

1. 集群规划

zookeper集群至少需要3台服务器,并且强烈建议使用奇数个服务器。因为zookeeper通过半数机制来判断整个集群是否可用,也就是说集群中有一半以上的节点挂掉,集群才不可用。3个节点挂2个,认为已经挂掉,4个节点挂2个,也认为已经挂掉,所以奇数个服务器即可。
三台ZooKeeper服务器:

服务器地址 编号
10.100.1.24 1
10.100.1.13 2
10.100.1.14 3

2. 解压安装

1). 官网下载最新版本的安装包apache-zookeeper-3.8.0-bin.tar.gz
2). 分别上传到3台服务器的/opt/zookeer目录下
3). 解压安装包到/opt/zookeer目录下

  1. tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /opt/zookeeper/

3. 配置

1). 在/opt/zookeeper/apache-zookeeper-3.8.0-bin这个目录下创建 zkData

  1. mkdir zkData

2).在zkData 目录下创建一个 myid 的文件, 在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)

  1. vim myid

image.png
3). 复制/opt/zookeeper/apache-zookeeper-3.8.0-bin/conf 这个目录下的 zoo_sample.cfg 为zoo.cfg

  1. cp zoo_sample.cfg zoo.cfg

4). 修改zoo.cfg文件, 修改数据存储路径,其他配置可以使用默认。

  1. dataDir=/opt/zookeeper/apache-zookeeper-3.8.0-bin/zkData

zoo.cfg中配置说明

配置项 说明
tickTime=2000 心跳时间,默认2000毫秒
initLimit=10 zkserver中leader节点和follower节点初始通信时间,Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量)
syncLimit=5 zkserver中leader节点和follower节点同步通信时限,Leader和Follower之间通信时间如果超过syncLimit * tickTime,Leader认为Follwer死
掉,从服务器列表中删除Follwer。
dataDir 保存Zookeeper中的数据
注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。
clientPort 客户端连接端口,通常不做修改。

5). zoo.cfg末尾增加如下集群相关配置

  1. #######################cluster##########################
  2. server.1=10.100.1.24:2888:3888
  3. server.2=10.100.1.13:2888:3888
  4. server.3=10.100.1.14:2888:3888

配置参数说明:
格式:server.A=B:C:D

  • A是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
  • B是这个服务器地址。
  • C是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口。
  • D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

    4. 同步上面操作到剩余服务器

    注意:需要修改myid文件中的值为2和3。

    5. 启动

    1). 分别启动3台服务器的zookeeper
    1. bin/zkServer.sh start
    2). 查看状态
    1. bin/zkServer.sh status
    image.png
    image.png