上一章节我们看了如何搭建单机版的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,地址如下:
http://www.apache.org/dyn/closer.cgi/zookeeper/
这里有个坑,请注意下载带有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文件如下所示:
myid相应的,服务器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的集群。
网友评论