在前两篇文章《大数据学习初级入门教程(三) —— Kafka 2.2.0 单节点的安装、启动和测试》和《大数据学习初级入门教程(四) —— Kafka 2.2.0 伪分布的安装、配置、启动和测试》中,已经对 Kafka 集群的单节点安装和伪分布式集群安装做了安装、配置、启动和测试,这篇文章主要对 Kafka 完全分布式集群安装进行详细的图文说明。
在没发表文章的这段时间,Kafka 最新版本已经从 2.2.0 升级到 2.3.0,所以这里也以官网最新的版本进行集群搭建。
一、环境说明
服务器:
CentOS release 6.9 (Final) x64,节点主机名分别为:node19、node18、node11
Java 环境:
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
Zookeeper 集群:
zookeeper-3.4.6,节点分别为:node19、node18、node11
Kafka 版本:
kafka_2.11-2.3.0.tgz
二、下载安装包并上传到测试服务器
下载地址为官网地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.11-2.3.0.tgz。
下载后上传到一个节点服务器,这里上传到 node19 机器的路径:/root 下。
三、解压安装包
# tar -xzvf kafka_2.11-2.3.0.tgz
四、移动目录到部署集群的目录
一般安装软件会安装在机器的 /usr、/opt 等目录下,这里我的集群一般都安装在 /home 下,所以把 Kafka 安装目录移动到 /home 下。
# mv kafka_2.11-2.3.0 /home/
# cd /home/kafka_2.11-2.3.0
五、启动 ZooKeeper 集群服务
Kafka 使用 ZooKeeper,如果 ZooKeeper 服务未启动,则需要先启动。在前两篇 Kafka 安装中,我们用的是 Kafka 安装包中内含的一个单节点 Zookeeper 集群,这里我们直接用已经在服务器上安装好的 Zookeeper 集群,我这里的版本是 zookeeper-3.4.6,具体 Zookeeper 的安装及启动测试等,参考其它一些相关文章。
# zkServer.sh start
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
六、修改 Kafka 配置中 Zookeeper 相关的配置
修改文件 /home/kafka_2.11-2.3.0/config/server.properties 文件,修改如下:
Kafka 相关配置:
Zookeeper 集群配置:
七、启动 Kafka 服务
ZooKeeper 服务启动后,可以启动 Kafka 服务了。先启动这一个机器节点上的 Kafka,查看是否能够启动正常。
# pwd
/home/kafka_2.11-2.3.0
# bin/kafka-server-start.sh config/server.properties
启动信息如下:
则说明该节点 Kafka 启动正常。
八、其它节点安装 Kafka
停掉已经启动的 Kafka 节点,把上一步中安装的 Kafka 包,直接拷贝到其它要安装 Kafka 集群的机器节点,比如这里拷贝到 node18 和 node11 上。
# scp -r kafka_2.11-2.3.0/ root@node18:/home/
# scp -r kafka_2.11-2.3.0/ root@node11:/home/
在 node18 和 node11 上创建日志目录,修改 Kafka 的配置文件,修改方式和第四步类似,只是 broker.id 分别为 2 和 3。
九、启动集群
依次启动 Kafka 各个节点上的 Kafka 服务,并查看日志是否启用成功。测试 Kafka 集群的步骤,参考前两篇文章,比如创建 Topic、生产数据、消费数据等。
十、脚本启动集群
由于一个个节点启动集群很麻烦,所以这里在一个节点上创建脚本,每次运行该脚本,所有节点的 Kafka 服务依次启动,当然前提是存放脚本的机器要到其它机器免密。
脚本 kafka_start.sh 内容如下:
- #!/bin/bash
- echo "Kafka 集群启动开始..."
- for host in node19 node18 node11
- do
- echo "--------------------------------"
- echo $host "节点 kafka 启动开始..."
- ssh $host "source /root/.bash_profile; kafka-server-start.sh /home/kafka_2.11-2.3.0/config/server.properties >/dev/null 2>&1 &"
- echo $host "节点 kafka 启动结束."
- done
- echo "Kafka 集群启动结束."
脚本 kafka_stop.sh 内容如下:
- #!/bin/bash
- echo "Kafka 集群停止开始..."
- for host in node19 node18 node11
- do
- echo "--------------------------------"
- echo $host "节点 kafka 停止开始..."
- ssh $host "source /root/.bash_profile; kafka-server-stop.sh >/dev/null 2>&1 &"
- echo $host "节点 kafka 停止结束."
- done
- echo "Kafka 集群停止结束."
Kafka 集群的安装就成功了,动手试验一下吧。