Kafka(三)集群之Zookeeper集群

我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛 。

上一章节我们看了如何搭建单机版的kafka,现在我们看看如何搭建集群版。需要搭建zookeeper的集群和kafka集群。

一、准备服务器

这里我准备了三台虚拟机:
192.168.184.134
192.168.184.135
192.168.184.136
每台机器部署一个zk和kafka。

二、zookeeper集群搭建

集群模式,为了保证高可用,我们需要对zookeeper做集群,可以使用kafka自带的zk,也可以自己去部署一套集群,自己部署一套与kafka彻底减少耦合,且便于维护,利于其他应用共同使用,所以我们选择自己搭建一套zk集群。

2.1下载并上传

在apache官网下载zookeeper,地址如下:
www.apache.org/dyn/closer.…

image.png

image.png

image.png

这里有个坑,请注意下载带有bin字样的tar包。不带的是源码包,理论上应该价格src才对。

上传到三台服务器/opt下,并解压:

[root@bogon /]# cd /opt/
[root@bogon opt]# tar -xvf apache-zookeeper-3.6.2-bin.tar.gz 
复制代码

2.2修改配置文件

[root@bogon opt]# cd apache-zookeeper-3.6.2-bin
[root@bogon apache-zookeeper-3.6.2-bin]# cd conf/
复制代码
2.2.1重命名zoo_example.cfg
[root@bogon conf]# cp zoo_sample.cfg zoo.cfg
[root@bogon conf]# ll
总用量 16
-rw-rw-r--. 1 1000 1000  535 9月   4 20:43 configuration.xsl
-rw-rw-r--. 1 1000 1000 3435 9月   4 20:43 log4j.properties
-rw-r--r--. 1 root root 1148 2月   2 10:51 zoo.cfg
-rw-rw-r--. 1 1000 1000 1148 9月   4 20:43 zoo_sample.cfg
复制代码
2.2.2编辑配置文件:
[root@bogon conf]# vi zoo.cfg
复制代码

增加以下配置:

server.0=192.168.184.134:2888:3888
server.1=192.168.184.135:2888:3888
server.2=192.168.184.136:2888:3888
复制代码

如上配置192.168.184.134:2888:3888:
2888是用于zk选举;
3888是zk服务器间的通信端口。

修改zk的默认data路径,将原本路径修改为如下所示:

#dataDir=/tmp/zookeeper
dataDir=/opt/apache-zookeeper-3.6.2-bin/data
复制代码
2.2.3创建myid文件

此文件的主要作用是标记当前zk节点的id,上面我们在zoo配置文件增加的server.0,其中0就表示当前节点id,我们在myid中只需要记录一个0即可。

[root@bogon conf]# cd ../
[root@bogon apache-zookeeper-3.6.2-bin]# mkdir data
[root@bogon apache-zookeeper-3.6.2-bin]# cd data/
[root@bogon data]# vi myid
复制代码

myid文件如下所示:

image.png

相应的,服务器135和136的myid分别是1、2。

到此为止所有的配置都修改完毕了。

2.3启动服务

我们进入到zk的bin文件夹下:

[root@bogon data]# cd ../
[root@bogon apache-zookeeper-3.6.2-bin]# cd bin/
复制代码

三台机器分别执行zkServer.sh:

[root@bogon bin]#  ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
复制代码

查看状态,follower是从节点,leader是主节点:

[root@bogon bin]#  ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
复制代码
[root@bogon bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
复制代码

有兴趣的同学试下将主节点停掉后,其他的从节点将会被选举为主节点。

如果启动服务失败的话,如下所示:

[root@bogon bin]#  ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.
复制代码

可以通过日志去查看问题,当前版本的日志在主目录的logs下:

[root@bogon bin]# cd /opt/apache-zookeeper-3.6.2-bin/logs/
[root@bogon logs]# ll
总用量 24
-rw-r--r--. 1 root root     0 2月   2 12:22 zookeeper_audit.log
-rw-r--r--. 1 root root 24352 2月   2 12:29 zookeeper-root-server-bogon.out
复制代码

使用以下命令即可常看日志:

cat zookeeper-root-server-bogon.out
复制代码

如果说存在端口不通导致启动失败:
阿里云的话请开放安全组端口
虚拟机或内网环境请自行设置防火墙
个人学习可以直接iptables -F

一个zookeeper的集群已经有很多内容了,我们在下个章节继续去搭建kafka的集群。