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 |
|
2. 解压完成,切换到 /usr/local
目录下,查看当前目录下的文件:
1 |
|
3. 这里对 kafka_2.13-3.0.0
文件夹创建一个软连接(类似 Windows 的桌面快捷方式):
1 |
|
4. 此时再次执行 ls
就可以看到软连接了:
5. 进入 Kafka 安装目录:
1 |
|
6. 在当前目录下创建一个 data
文件夹,用于存储 Kafka 数据:
1 |
|
7. 编辑 config/kraft
目录下的 server.properties
配置文件:
1 |
|
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 |
|
16. (在 debian100 上执行命令)为 debian101、debian102 配置软连接:
1 |
|
17. (在 debian101 和 debian102 上依次执行命令)切换到 Kafka 目录下,编辑 config/server.properties
文件,修改里面的 broker.id
值:
1 |
|
这里我为三台节点设置的
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 |
|
20. 复制如下内容:
1 |
|
21. 将上一步复制的内容粘贴到脚本文件中,效果图如下,完成后在左下角输入 :wq
保存并退出:
22. 将环境变量配置文件分发给 debian101 和 debian102:
1 |
|
23. 让三台机器配置的 Kafka 环境变量生效:
1 |
|
四、启动 Kafka 集群
1. (在 debian100 上执行命令)依次开放三台主机的 9092、9093 端口(Kafka 默认端口):
1 |
|
2. 初次启动前,需要初始化集群数据目录,依次执行如下命令,生成存储目录唯一 id:
说明:如果此处已经配置,请跳转到第 4 步。
1 |
|
这里生成了一个 id,下一步会用到(具体的 id 值以你们的为准):
3. 用这个 id 格式化三个 Kafka 节点存储目录:
1 |
|
4. 使用 parallel-execute
依次启动 Kafka:
1 |
|
5. 验证 Kafka 是否启动成功:由于 Kafka 是 Java 应用,因此可以使用 jps 命令查看对应的进程:
1 |
|
如果看到了对应的 Kafka 进程,就说明 Kafka 启动成功:
6. (可选)停止 Kafka 集群,执行如下命令即可停止 Kafka 集群:
1 |
|
7. 等待一段时间后(kafka 停止进程较慢),再次执行 jps -l
,看不到 Kafka 相关进程就说明 Kafka 集群已经停止了:
1 |
|