Linux环境下搭建Zookeeper + Kafka 集群

1.准备

需要三台Linux服务器,分别为linux1,linux2,linux3 保证三台机器网络互通且都可以访问外网。没机器的也可以在虚拟机里面搭建,可以参考我之前写的文章去搭建,本文中不再赘述。

2.下载安装包

下载zookeeper: https://pan.baidu.com/s/1FBZhIQAYkBo4urvkCig3cg
提取码:5r5d

下载kafka: https://pan.baidu.com/s/1YntAAZ23qO55O2Gl0qK8Pg 提取码:p8ke

3.安装

3.1 安装zookeeper

zookeeper安装配置

  • 将刚才下载的安装包上传至linux1机器内,解压并修改名称:
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin zookeeper
  • 进入zookeeper的config目录,修改配置文件,将 zoo_sample.cfg 改名为 zoo.cfg并且创建一个目录用于存放数据
cd ./zookeeper/conf
# 修改zookeeper配置文件。没有的就添加
mv zoo_sample.cfg  zoo.cfg
# 创建数据存放目录
mkdir /opt/zookeeper/conf/data
  • 修改zoo.cfg文件
vim zoo.cfg
# 添加如下内容
server.1=linux1:2188:2888
server.2=linux2:2188:2888
server.3=linux3:2188:2888
# 修改dataDir
dataDir=/opt/zookeeper/conf/data
  • 进入data目录,生成myid文件,指定myid服务号
echo "1" > myid
  • 将zookeeper分发至其他节点
# 分发到其他集群节点
scp -r zookeeper/ linux2:/opt/
scp -r zookeeper/ linux3:/opt/
  • 修改另外两个节点的配置文件
  • 登录linux2机器:
cd /opt/zookeeper/conf/data
# 指定myid服务号为 2
vim myid
  • 登录linux3机器:
cd /opt/zookeeper/conf/data
# 指定myid服务号为 3
vim myid
  • 编写集zookeeper集群启动脚本
case $1 in

"start"){
	for i in linux1 linux2 linux3
	do 
		 echo -------------------------------- $i zookeeper 启动 ---------------------------
		ssh $i "/opt/zookeeper/bin/zkServer.sh start"
	done
}
;;
"stop"){
	for i in linux1 linux2 linux3
	do
		echo -------------------------------- $i zookeeper 停止 ---------------------------
		ssh $i "/opt/zookeeper/bin/zkServer.sh stop"
	done
}
;;
"status"){
	for i in linux1 linux2 linux3
	do
		echo -------------------------------- $i zookeeper 状态 ---------------------------
		ssh $i "/opt/zookeeper/bin/zkServer.sh status"
	done
}
;;
esac

注意: 里面的路径要跟自己的安装路径一致,若是使用notepad++编辑的话,一定要切换至Linux(Unix)模式,windows模式下会有问题

脚本使用说明:

# 启动集群命令
./zk.sh start
# 停止集群命令
./zk.sh stop
# 查看集群状态命令
./zk.sh status
  • 启动。
# 启动zookeeper集群
cd /opt/zookeeper
./bin/zk.sh start
  • 查看状态
# 查看zookeeper集群状态
cd /opt/zookeeper
./bin/zk.sh status

看到一台 Mode: leader ,两台 Mode: follower 就OK了

3.2 安装kafka

  • 将下载的解压包上传至linux1机器,解压到自定义的目录下,修改名字
tar -zxvf kafka_2.13-3.2.0.tgz
mv kafka_2.13-3.2.0.tgz kafka
  • 创建logs目录用于存放数据
# 创建 logs目录
cd /opt/kafka/
mkdir logs
  • 修改配置文件 server.properties
cd /opt/kafka/config
vi  server.properties

设置主题是允许删的,broker.id是唯一的 集群内的每一台机器不允许重复

linux安装kafka教程 linux安装kafka集群_java-zookeeper

指定logs目录,这个路径与刚才你创建的logs目录保持一致

linux安装kafka教程 linux安装kafka集群_linux安装kafka教程_02

设置zookeeper链接信息

linux安装kafka教程 linux安装kafka集群_linux_03

  • 分发kafka至linux2,linux3 这与zookeeper的操作一致,不在赘述
  • 分别修改linux2,linux3 中的 server.properties文件 broker.id=2broker.id=3其他保持一致
  • 编写kafka集群启动脚本: kk.sh
#!/bin/bash

case $1 in
"start"){

for i in linux1 linux2 linux3

do 
    echo "------------$i kafka start----------------"
    ssh $i "source /etc/profile;/opt/kafka/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/kafka/config/server.properties"
   
done

};;

"stop"){

for i in linux1 linux2 linux3

do 
   echo "------------$i kafka end---------------"
   ssh $i "source /etc/profile;/opt/kafka/kafka/bin/kafka-server-stop.sh stop"

done
};;
esac

注意: 这里注意里面的路径,跟自己不一致的修改为跟自己一致

  • 启动
./kk.sh start

linux安装kafka教程 linux安装kafka集群_分布式_04


查看下后台的进程 jps

linux安装kafka教程 linux安装kafka集群_分布式_05

至此,说明kafka集群已经启动成功!

  • 测试,创建一个主题
./bin/kafka-topics.sh --create --bootstrap-server linux1:9092 --replication-factor 2 --partitions 3 --topic epac

注意: kafka的命令在3.0版本以后和以前是不一致的,我们使用的是3.0以上的版本。以上命令的含义是 创建一个名字为epac的主题,有三个分区和两个副本

  • 查看分区详情
./bin/kafka-topics.sh --describe --topic epac --bootstrap-server linux1:9092

linux安装kafka教程 linux安装kafka集群_java-zookeeper_06


我们可以发现,与我们刚才创建的主题一致,有三个分区,两个副本,到此,kafka集群也搭建完毕。接下来就可以实际的去使用和学习了