1. 前置需求1.1 环境需求1.1.1 安装java1.1.2 安装zookeeper2. 下载Kafka2.1 官网下载2.2 解压2.3 集群规划3. 修改配置信息4. 配置环境变量5. 启动Kafka6. 集群启动停止脚本6.1 创建脚本6.2 赋予权限6.3 使用脚本7. jps脚本8. 启动集群8.1 zookeeper集群8.2 Kafka集群注意
1. 前置需求
1.1 环境需求
- Java环境
- zookeeper
- 可以使用Kafka自带的zk
- 也可以使用
1.1.1 安装java
# 安装Java环境 apt install openjdk-17-jre-headless # 查看java版本 java -version
1.1.2 安装zookeeper
参考:
2. 下载Kafka
2.1 官网下载
- 我这里下载的版本:
kafka_2.13-3.1.0.tgz
- 分发到三台服务器
- 2.8.0及以后版本 可以替换zookeeper
# 分发给redis02,redis03机器上 root@redis01:/usr/local# xsync kafka_2.13-3.1.0.tgz
2.2 解压
# 三台机器分别解压文件 root@redis01:/usr/local# tar -zxvf kafka_2.13-3.1.0.tgz # 重命名 root@redis01:/usr/local# mv kafka_2.13-3.1.0 kafka
2.3 集群规划
主机名 | 服务器IP | 角色 | 端口号 |
redis01 | 192.168.92.145 | leader | 2181 |
redis02 | 192.168.92.146 | follower | 2181 |
redis03 | 192.168.92.147 | follower | 2181 |
redis04 | 192.168.92.147 | ㅤ | ㅤ |
3. 修改配置信息
- 在每个服务器上面都有相同的配置,只不过broker.id和host.name不同,根据当前服务器节点来修改。
config/server.properties
vim /usr/local/kafka/config/server.properties
- 三个参数
# 每台机器需要改为不同的0,1,2,我这里机器reidis01为0,redis02为1,redis03为2 broker.id = 0 # kafka 日志目录 log.dirs = /usr/local/kafka/datas # zookeeper的连接,(zookeeper目录树方式) # zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka zookeeper.connect=192.168.92.145:2181,192.168.92.146:2181,192.168.92.147:2181/kafka
4. 配置环境变量
sudo vim /etc/profile.d/my_env.sh
- 配置
my-env.sh
# KAFKA export KAFKA_HOME=/usr/local/kafka export PATH=$PATH:$KAFKA_HOME/bin
- 使配置生效
source /etc/profile
- 分发配置各台机器redis02,redis03
# 分发给每台机器 xsync /etc/profile.d/my_env.sh # 每台机器都需要运行,使配置生效 source /etc/profile
5. 启动Kafka
- 必须先启动zookeeper集群
# 每台机器都需要启动 root@redis01:/usr/local/kafka# bin/kafka-server-start.sh -daemon config/server.properties
5.2 查看启动
# 使用jps查看 jps # 如果没有,安装jps apt install openjdk-17-jdk-headless
6. 集群启动停止脚本
- 在目录下创建启动脚本
6.1 创建脚本
# 在目录下创建脚本 root@redis01:# cd /home/bigdata/bin/
- 写入脚本内容
#!/bin/bash case $1 in "start"){ for i in redis01 redis02 redis03 do echo ------------ kafka $i 启动 ---------- ssh $i "/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties" done };; "stop"){ for i in redis01 redis02 redis03 do echo ------------ kafka $i 停止 ---------- ssh $i "/usr/local/kafka/bin/kafka-server-stop.sh" done };; esac
6.2 赋予权限
# 赋予权限 root@redis01:/home/bigdata/bin# chmod 777 kf.sh
6.3 使用脚本
# 开启kafka集群 root@redis01:/home/bigdata/bin# ./kf.sh start # 停止kafka集群 root@redis01:/home/bigdata/bin# ./kf.sh stop
7. jps脚本
- 在
root@redis01:/usr/local/bin#
root@redis01:/usr/local/bin# touch xcall root@redis01:/usr/local/bin# vim xcall
xcall.sh
内容
#!/bin/bash for host in redis01 redis02 redis03 do echo =============== $host =============== ssh $host jps done
- 配置权限
# 赋予权限 root@redis01:/usr/local/bin# chmod 777 xcall
- 使用
xcall
8. 启动集群
8.1 zookeeper集群
# 启动zookeeper集群 root@redis01:/home/bigdata/bin# ./zk1.sh start # 查看集群 root@redis01:/home/bigdata/bin# ./zk1.sh status # 停止集群 root@redis01:/home/bigdata/bin# ./zk1.sh stop # 任意位置启动、停止、查看 /home/bigdata/bin/zk1.sh start /home/bigdata/bin/zk1.sh status /home/bigdata/bin/zk1.sh stop
- 连接访问zookeeper集群
# 在安装/usr/local/zookeeper/bin目录下启动 ./zkCli.sh -server 192.168.92.145:2181,192.168.92.146:2181,192.168.92.147:2181
8.2 Kafka集群
# 开启kafka集群 root@redis01:/home/bigdata/bin# ./kf.sh start # 停止kafka集群 root@redis01:/home/bigdata/bin# ./kf.sh stop # 任意位置启动、停止 /home/bigdata/bin/kf.sh start /home/bigdata/bin/kf.sh stop
注意
- 先启动zookeeper,后启动kafka
- 先关闭Kafka,后关闭zookeeper
停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper集群。因为 Z ookeeper 集群当中记录着 Kafka 集群相关信息, Zookeeper 集群一旦先停止,Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。