概述
本文主要简述如何搭建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
目录下
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /opt/zookeeper/
3. 配置
1). 在/opt/zookeeper/apache-zookeeper-3.8.0-bin
这个目录下创建 zkData
mkdir zkData
2).在zkData 目录下创建一个 myid 的文件, 在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)
vim myid
3). 复制/opt/zookeeper/apache-zookeeper-3.8.0-bin/conf
这个目录下的 zoo_sample.cfg 为zoo.cfg
cp zoo_sample.cfg zoo.cfg
4). 修改zoo.cfg文件, 修改数据存储路径,其他配置可以使用默认。
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末尾增加如下集群相关配置
#######################cluster########################## server.1=10.100.1.24:2888:3888 server.2=10.100.1.13:2888:3888 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
bin/zkServer.sh start
2). 查看状态
bin/zkServer.sh status
3).关停服务
bin/zkServer.sh stop