Centors下搭建Zookeeper v3.5.9集群(支持kafka2.7.1集群)教程

前言:

本文将介绍搭建Zookeeper集群,用以支持kafka最后一个需要Zookeeper做注册中心的版本。当然,你也可以用此集群作为Dubbo的注册中心。

提示: kafka v2.6版~v2.7.1版需要zookeeper v3.5.8+以上版本支持。kafka v2.8及以上版本将不需要Zookeeper作为注册中心了。点击查看kafka官方介绍

本教程使用的版本:

名称版本
操作系统centos 7
zookeeper3.5.9
kafka(配套)2.7.1
JDK(非必要)11.0.12

一.下载Zookeeper

1.如何选择zookeeper安装包

  • 线上服务器使用,选择stable版本中的最新版。
    原因:最新版经常有bug,不建议线上使用。
  • 选择安装包格式为apache-zookeeper-{version}-bin.tar.gz,名字必须带有-bin
    原因:如果选择apache-zookeeper-{version}.tar.gz包,解压后发现里面没有lib文件夹,启动会报错,错误代码:
    Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

2.下载地址:

版本地址
最新稳定版https://downloads.apache.org/zookeeper/stable/
全部版本https://downloads.apache.org/zookeeper/

二.集群部署

目标:搭建1个主节点,两个从节点的zookeeper集群。

1.准备三台linux主机

本文以centors为例,三台服务器的ip地址分别是:

10.39.88.58
10.39.88.59
10.39.88.60

2.下载zookeeper压缩包

分别进入三个服务器目录usr/local下,执行:

cd /usr/local
wget https://downloads.apache.org/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
注:搭配kafka v2.7.1版本,推荐使用apache-zookeeper-3.5.9-bin.tar.gz,不要使用zookeeper3.6.*,会出现kafka连接zookeeper报错。所以zookeeper版本不是越新越好,要根据kafka官网的提示,下载与之对应的zookeeper版本。

3.解压压缩包

在三台服务器上,都执行以下命令,解压并重命名文件夹名称为zookeeper(代码洁癖,文件夹名称必须优雅):

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

mv ./apache-zookeeper-3.5.9-bin zookeeper

4.修改配置文件

在三台服务器上,进入配置文件夹:

cd zookeeper/conf/

修改下面配置文件,并将其命名为zoo.cfg,复制到上面的文件夹下(完整复制即可,一字不差!!!):

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1


dataDir=/usr/local/zookeeper/data/

server.1=10.39.88.58:2888:3888
server.2=10.39.88.59:2888:3888
server.3=10.39.88.60:2888:3888

仅修改上述文件中的server内容,将ip改为你的三台主机ip地址即可。

举例:若你的三台主机ip是10.0.0.1,10.0.0.2,10.0.0.3,则修改为:

server.1=10.0.0.3:2888:3888
server.2=10.0.0.2:2888:3888
server.3=10.0.0.3:2888:3888

注:2888:3888不要改动,其含义在文末zookeeper配置文件详解中讲解。

注:三台服务器此配置文件一模一样!!!

5.创建myid文件

什么是myid文件?

myid文件用于区分zookeeper集群中各个主机的编号,是唯一不可重复的数字id。

myid内容

myid文件内容格式要求是数字,且必须与配置文件中的server.1=10.39.88.58:2888:3888中的server.1数字相等。

例:配置文件中写server.666=10.39.88.58:2888:3888,那么此台机器的myid就是666

myid文件放到何处?

myid文件应存放到配置文件dataDir指定的路径下。

上一步中,配置文件中有这样一个配置:dataDir=/usr/local/zookeeper/data/,这个地址表示将zookeeper的数据挂载到此处。我们应该把myid文件放到此路径下。

总结:
  • 三台服务的myid文件内容一定互不相同。
  • 每台服务器的myid必须与配置文件中的sever.x中的x相同。
  • myid文件存放到配置文件dataDir指定的路径下。

6.启动集群

分别进入三台linux主机中,进入zookeeper的安装目录:usr/local/zookeeper/bin,执行命令:

./zkServer.sh start

7.测试集群是否启动成功

分别进入三台linux主机中,进入zookeeper的安装目录:usr/local/zookeeper/bin,执行命令:

./zkServer.sh status

如果显示下列信息,则表示该主机被选举为leader(主节点),即启动成功。

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

如果显示下列信息,则表示该主机被选举为follower(从节点),即启动成功。

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

到此处,zookeeper集群部署完美落幕~

三.zookeeper配置文件详解

上面我们在配置集群时,一笔带过了配置文件各项参数的含义,现在我在把其中的含义列在下面,供你细细查阅:

属性含义
tickTime=2000表示在zookeeper里1 tick表示2000ms,所有其他用到时间的地方都会用多少tick来表示
initLimit=10集群中的follower服务器与leader服务器之间,初始化连接时,能容忍的最多心跳数为10 tick
syncLimit=5表示fowller与leader的心跳时间是5 tick
clientPort=2181客户端连接zookeeper服务的端口。这是一个TCP port。
dataDir=/usr/local/zookeeper/data/数据文件目录
server.1=10.39.88.58:2888:3888集群中服务的列表。端口2888由zookeeper服务器使用,用于互相通信;端口3888用于主节点leader选举。你可以选择自己喜欢的任何端口

四.zookeeper集群的运维手册

注:进入zookeeper安装目录bin文件夹下,执行命令:

1.常用命令

# 启动:
./zkServer.sh start
# 关闭:
./zkServer.sh stop
# 查看运行状态,以及当前节点是leader还是follower
./zkServer.sh status
# 重启:
./zkServer.sh restart

2.查看运行日志

zookeeper的运行日志所在目录:

/usr/local/zookeeper/logs

日志文件,如:zookeeper-root-server-i-6czujhq1.out

总结

本文从零开始搭建zookeeper集群,讲清楚了各个需要配置的地方,和常常碰到的坑,并且解释了配置文件中各个属性的含义,为以后部署kafka打下基础。喜欢本教程请收藏点赞,以备他日之需。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值