Kafka集群安装和配置教程(Linux通用版,Kraft模式启动)

本文最后更新于:2025年6月3日

Kafka 是一个开源的分布式事件流处理平台,由LinkedIn开发并捐赠给Apache基金会。它以高吞吐、低延迟和可扩展性著称,主要用于实时数据管道和流式数据处理。Kafka 的核心设计基于发布-订阅模型,数据以主题(Topic)为单位分类存储,生产者(Producer)将消息发布到主题,消费者(Consumer)订阅并消费这些消息。其持久化日志存储和分区机制保证了数据的可靠性和并行处理能力,适用于日志聚合、指标监控、事件溯源等场景。

Kafka集群是由多个Broker(服务器节点)组成的分布式系统,通过横向扩展提升整体性能和容错能力。集群依赖ZooKeeper(或KRaft模式)管理元数据、选举控制器(Controller)和协调分区副本。每个主题的分区(Partition)会被复制到多个Broker上形成副本(Replica),其中领导者副本(Leader)处理读写请求,追随者副本(Follower)同步数据,确保数据高可用。集群支持动态扩展节点、自动故障转移(如Leader重选举)和负载均衡,适合大规模、高并发的实时数据处理场景。

Kafka 2.8.0 以前需要依赖 Zookeeper 启动,本文介绍的是 Linux 环境下 Kafka 集群安装和配置教程。

说明:在 Kafka 2.8.0 版本以前,需要依赖 Zookeeper 启动,需要的小伙伴点击右侧链接查看安装教程:点我查看

一、准备操作

1. 请准备 3 台虚拟机,如需快速克隆并配置虚拟机相关设置,请点击右侧链接查看教程:点我查看

说明:这里我的 3 台主机信息如下,具体情况以你们的为准:

主机名称 IP地址 操作系统 说明
debian100 192.168.40.100 Debian 这台主机包含了parallel-execute命令,可以在三台主机同时执行一条命令
debian101 192.168.40.101 Debian
debian102 192.168.40.102 Debian

2. 本文使用 Electerm 作为远程登录和文件传输工具,需要安装的小伙伴根据自己电脑操作系统查看对应的教程:

Windows macOS
点我查看 点我查看

3. 推荐本地安装 NDM(Neat Download Manger),可以加快文件下载速度:点我查看

二、下载 Kafka 安装包

1. 点击右侧链接进入官网下载页:点我查看

2. 这里我们下载的是 Kafka 3.0.0 版本的安装包:

3. 下载完成后,将文件的后缀名改成 .tgz

4. 使用 Electerm 将安装包远程发送到 debian100 上:

三、修改配置文件

1. 将下载好的安装包解压到 /usr/local 目录下:

1
tar -zxvf kafka_2.13-3.0.0.tgz -C /usr/local/

2. 解压完成,切换到 /usr/local 目录下,查看当前目录下的文件:

1
2
cd /usr/local
ls

3. 这里对 kafka_2.13-3.0.0 文件夹创建一个软连接(类似 Windows 的桌面快捷方式):

1
ln -s /usr/local/kafka_2.13-3.0.0 /usr/local/kafka

4. 此时再次执行 ls 就可以看到软连接了:

5. 进入 Kafka 安装目录:

1
cd /usr/local/kafka

6. 在当前目录下创建一个 data 文件夹,用于存储 Kafka 数据:

1
mkdir data

7. 编辑 config/kraft 目录下的 server.properties 配置文件:

1
vim config/kraft/server.properties

8. 在左下角输入 :set nu 并按一下回车,显示行号:

9. 在左下角输入 /node.id 并按一下回车,跳转到27行,修改 node.id 的值:

说明:node.id 是 Kafka 集群中每一个节点的唯一标识,每一个节点对应的值都必须是一个唯一的整数。后续分发过程中还需要对这个 node.id 进一步配置。

10. 完成编辑后,按 Esc 键退出编辑模式,在左下角继续输入 /process.roles 并按一下回车,跳转到24行,修改 process.roles 的值为 broker,controller

11. 完成编辑后,按 Esc 键退出编辑模式。配置 Controller 链接信息,在左下角输入 /controller.quorm.voters 并按一下回车,跳转到第30行,修改 controller.quorm.voters 的值为** node.id@IP地址:9093**(主机名:9093也可以,但是前提需要到 /etc/hosts 文件配置),效果图如下:

说明:配置过程中,具体 IP 地址/主机名称以你们的为准,这里我的配置仅作参考。

12. 完成编辑后,按 Esc 键退出编辑模式,在左下角继续输入 /log.dir 并按一下回车,跳转到74行,修改 log.dirs 的值为 /usr/local/kafka/data

13. 完成编辑后,按 Esc 键退出编辑模式,在左下角继续输入 /advertised.listeners 并按一下回车,跳转到50行,修改 advertised.listeners 的值为 PLAINTEXT://主机名:9092 或者 PLAINTEXT://当前主机IP地址:9092,效果图如下:

14. 编辑完成后,按 Esc 键退出编辑模式,左下角输入 :wq 保存并退出。

15. 将 Kafka 安装目录分发给另外两台主机 debian101、debian102:

1
2
scp -r /usr/local/kafka_2.13-3.0.0 root@debian101:/usr/local
scp -r /usr/local/kafka_2.13-3.0.0 root@debian102:/usr/local

16. (在 debian100 上执行命令)为 debian101、debian102 配置软连接:

1
parallel-execute ln -sf /usr/local/kafka_2.13-3.0.0 /usr/local/kafka

17. (在 debian101 和 debian102 上依次执行命令)切换到 Kafka 目录下,编辑 config/server.properties 文件,修改里面的 broker.id 值:

1
2
cd /usr/local/kafka
vim config/kraft/server.properties

这里我为三台节点设置的 node.id 值如下,仅供参考(切记要保证每一台主机的 node.id 是整数且互不相同):

主机名称 node.id值
debian100 1
debian101 2
debian102 3

18. (在 debian101 和 debian102 上依次执行命令)将配置文件的 advertised.listeners 修改成 PLAINTEXT://主机名:9092(或者PLAINTEXT://当前主机的IP地址:9092),修改后的效果图如下:

19. (在 debian100 上执行命令)配置 Kafka 环境变量。创建 /etc/profile.d/kafka_env.sh

1
vim /etc/profile.d/kafka_env.sh

20. 复制如下内容:

1
2
3
#KAFKA_HOME
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin

21. 将上一步复制的内容粘贴到脚本文件中,效果图如下,完成后在左下角输入 :wq 保存并退出:

22. 将环境变量配置文件分发给 debian101 和 debian102:

1
2
scp /etc/profile.d/kafka_env.sh root@debian101:/etc/profile.d/
scp /etc/profile.d/kafka_env.sh root@debian102:/etc/profile.d/

23. 让三台机器配置的 Kafka 环境变量生效:

1
parallel-execute source /etc/profile.d/kafka_env.sh

四、启动 Kafka 集群

1. (在 debian100 上执行命令)依次开放三台主机的 9092、9093 端口(Kafka 默认端口):

1
2
parallel-execute "ufw allow 9092/tcp"
parallel-execute "ufw allow 9093/tcp"

2. 初次启动前,需要初始化集群数据目录,依次执行如下命令,生成存储目录唯一 id:

说明:如果此处已经配置,请跳转到第 4 步。

1
2
cd /usr/local/kafka
bin/kafka-storage.sh random-uuid

这里生成了一个 id,下一步会用到(具体的 id 值以你们的为准):

3. 用这个 id 格式化三个 Kafka 节点存储目录:

1
parallel-execute "cd /usr/local/kafka && bin/kafka-storage.sh format -t 上一步的id值 -c config/kraft/server.properties"

4. 使用 parallel-execute 依次启动 Kafka:

1
parallel-execute "cd /usr/local/kafka && bin/kafka-server-start.sh -daemon config/kraft/server.properties"

5. 验证 Kafka 是否启动成功:由于 Kafka 是 Java 应用,因此可以使用 jps 命令查看对应的进程:

1
parallel-execute jps -l

如果看到了对应的 Kafka 进程,就说明 Kafka 启动成功:

6. (可选)停止 Kafka 集群,执行如下命令即可停止 Kafka 集群:

1
parallel-execute "cd /usr/local/kafka && bin/kafka-server-stop.sh"

7. 等待一段时间后(kafka 停止进程较慢),再次执行 jps -l,看不到 Kafka 相关进程就说明 Kafka 集群已经停止了:

1
parallel-execute jps -l


Kafka集群安装和配置教程(Linux通用版,Kraft模式启动)
https://www.icode504.com/posts/122.html
作者
iCode504
发布于
2025年5月22日
许可协议