ZooKeeper集群leader+follower模式搭建步骤(示例3台)

Zookeeper集群通常由2n+1台servers组成。
这是为了保证Leader选举(基于Paxos算法的实现)能够得到多数的支持。

一、本地搭建leader+follower模式准备

实际的Zookeeper集群是部署在多台真实服务器上,为节省资源,此次模拟搭建集群采用本地主机配置3台虚拟机进行操作

环境准备(示例1台)

检查jdk配置:
在这里插入图片描述
检查时间同步:
在这里插入图片描述
确认防火墙全部关闭:
在这里插入图片描述
检查主机映射配置:
在这里插入图片描述

二、集群搭建

2.1、上传、解压安装包

#安装包存放目录
cd /app/soft
#上传安装包
rz

#解压安装包
tar -zxvf  apache-zookeeper-3.7.0-bin.tar.gz -C ../servers/

2.2、修改配置文件:

#修改配置文件名称(默认加载zoo.cfg文件)
cd /app/servers/zookeeper/conf/
mv zoo_sample.cfg zoo.cfg

#修改配置文件
vim zoo.cfg

#添加内容:  (2888心跳端口、3888选举端口)
dataDir=/export/data/zkdata
server.1=node01:2888:3888    
server.2=node02:2888:3888
server.3=node03:2888:3888

2.3、分发安装包

cd /export/servers

scp -r zookeeper/ node02:$PWD
scp -r zookeeper/ node03:$PWD

2.4、ZK集群创建数据文件夹

#创建zk数据文件夹
mkdir -p /app/data/zkdata

##在zkdata文件夹下新建myid文件,内容对应zk服务的id
#node01
echo 1 > /app/data/zkdata/myid
#node02
echo 2 > /app/data/zkdata/myid
#node03
echo 3 > /app/data/zkdata/myid
#检查
cat /app/data/zkdata/myid

2.5、ZK集群配置环境变量

#编辑
vim /etc/profile

export ZOOKEEPER_HOME=/app/servers/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#生效
source /etc/profile

2.6、Observer模式

指定节点使用Observer模式,需在对应节点的配置文件添加如下配置:

#修改配置文件
vim zoo.cfg

#添加内容:
peerType=observer
#指定哪些节点被指定为Observer
server.1:node01:2181:3181:observer  

三、集群验证

3.1、启动命令

该命令为Zookeeper自带启动命令,启动时需在每台服务器启动一次,从而完成集群的启动。

zkServer.sh start

3.2、批量启动集群脚本

实际的Zookeeper集群起码要涉及几十上百台服务器,所以需要一个一键启动或停止集群的脚本命令。

#编写一个脚本来批量启动所有机器:
vim startZK.sh
#!/bin/bash
for host in node01 node02 node03;
do
   ssh $host "source /etc/profile;/app/servers/zookeeper/bin/zkServer.sh start"
done

#编写一个脚本来批量停止所有机器:
vim stopZK.sh
#!/bin/bash
for host in node01 node02 node03;
do
   ssh $host "source /etc/profile;/app/servers/zookeeper/bin/zkServer.sh stop"
done

3.3、集群状态

启动时会生成zookeeper.out日志存放详细信息,若不指定日志存放位置,则默认在启动位置。

##查看启动进程
jps

#查看集群状态,主从信息
zkServer.sh status

四、集群参数配置

参数默认值作用
tickTime2000(ms)zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每个tickTime时间就会发送一个心跳。
initLimit10zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit5leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir/app/data/zkdatazookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里。
clientPort2181客户端连接Zookeeper服务器的端口,zookeeper会监听这个端口接受客户端的访问请求。
server.AB:C:DA:是一个数字,表示这个是第几号服务器;B:是这个服务器的IP地址或主机名;C:第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口;D:是在leader挂掉时专门用来进行选举leader所用的端口。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐