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
是唯一的 集群内的每一台机器不允许重复
指定logs目录,这个路径与刚才你创建的logs目录保持一致
设置zookeeper链接信息
- 分发kafka至linux2,linux3 这与zookeeper的操作一致,不在赘述
- 分别修改linux2,linux3 中的
server.properties
文件broker.id=2
,broker.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
查看下后台的进程 jps
:
至此,说明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
我们可以发现,与我们刚才创建的主题一致,有三个分区,两个副本,到此,kafka集群也搭建完毕。接下来就可以实际的去使用和学习了