linux安装单机kafka
官网下载地址:https://kafka.apache.org/downloads
kafka 在 2.8 版本开始脱离 zookeeper。
参考:https://blog.csdn.net/zaixiaqin/article/details/134968110
在 Kafka 和 Zookeeper 的架构中,消息数据是存储在 Kafka 中,而 Zookeeper 仅用于管理和协调 Kafka 集群的元数据和状态。
消息存储:
- Kafka 负责存储实际的消息数据。
- Kafka 使用 主题(Topic) 和 分区(Partition) 来组织消息数据。每个分区可以有多个消息,Kafka 会将这些消息顺序地存储在磁盘上,保持持久化。
- Kafka 集群中的每个 Broker 存储一部分消息数据,这些消息会根据生产者发送的内容写入到对应的分区。
- 消费者通过读取分区中的消息来消费数据。
Zookeeper 的作用:
- Zookeeper 并不存储实际的消息内容,而是主要用于 Kafka 集群的协调和管理。
- 元数据存储:Zookeeper 存储 Kafka 集群的元数据,包括主题的配置信息、分区分配情况、Broker 的状态、Leader 节点的选举等。
- Leader 选举:Zookeeper 负责管理分区的 Leader 选举,确保 Kafka 中的每个分区有且只有一个 Leader(负责写入和读请求),并且在 Leader 宕机时重新选举一个新的 Leader。
- 消费者偏移量管理:在某些版本的 Kafka 中,消费者的消费进度(偏移量)也会存储在 Zookeeper 中,以便消费者在重启后能继续消费消息。
一、安装3.9.1版本kafka,使用zookeeper
1、下载
wget https://downloads.apache.org/kafka/4.1.1/kafka_2.13-4.1.1.tgz

2、解压
tar zxvf kafka_2.12-3.9.1.tgz -C /data/
3、配置
进入安装目录的config目录
cd /data/kafka_2.12-3.9.1/config

consumer.properties 是消费者的相关配置
producer.properties 是生产者的相关配置
server.properties 是 kafka 服务的配置
zookeeper.properties 是 zookeeper 的相关配置
zookeeper 中记录kafka的broker等信息
修改 server.properties 的配置
listeners:作用是 “Kafka 服务端监听哪些网卡 / 端口”,可以用0.0.0.0表示监听服务器所有网卡(内网 / 外网),这是合法的;advertised.listeners:作用是 “Kafka 告诉客户端(生产者 / 消费者)该连接哪个地址”,0.0.0.0是 “非 routable 元地址”(客户端无法通过这个地址连接),因此 Kafka 强制要求这里填服务器的真实 IP / 域名。
vim /data/kafka_2.12-3.9.1/config/server.properties # 修改2处,只能listeners可以填0.0.0.0,advertised只能填ip listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.1.94:9092 # kafka的数据存储路径,可改可不改 log.dirs=/tmp/kafka-logs
# kafka的topic的消息存储时间默认7天
log.retention.hours=168
zookeeper.properties配置可以
# zookeeper的默认数据存储路径
dataDir=/tmp/zookeeper
不用改
4、启动
启动 zookeeper,监听2181端口
cd /data/kafka_2.12-3.9.1/ ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动 kafka,监听9092端口
./bin/kafka-server-start.sh -daemon config/server.properties
服务器异常断电关机后启动报错,重新部署kafka
二、安装4.1.1版本kafka(KRaft 单机模式),不使用zookeeper
1、下载
wget https://downloads.apache.org/kafka/4.1.1/kafka_2.13-4.1.1.tgz
2、解压
tar zxvf kafka_2.13-4.1.1.tgz -C /usr/local/
3、修改配置
修改 server.properties 的配置
listeners:作用是 “Kafka 服务端监听哪些网卡 / 端口”,可以用0.0.0.0表示监听服务器所有网卡(内网 / 外网),这是合法的;advertised.listeners:作用是 “Kafka 告诉客户端(生产者 / 消费者)该连接哪个地址”,0.0.0.0是 “非 routable 元地址”(客户端无法通过这个地址连接),因此 Kafka 强制要求这里填服务器的真实 IP / 域名。
vim /usr/local/kafka_2.13-4.1.1/config/server.properties
#修改为本机ip listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://10.30.6.249:9092,CONTROLLER://10.30.6.249:9093 #配置数据存储目录和KRaft 元数据存储目录 log.dirs=/usr/local/kafka_2.13-4.1.1/data/kafka-logs metadata.log.dir=/usr/local/kafka_2.13-4.1.1/data/kafka-logs #topic消息过期为6小时 log.retention.hours=6
4、创建数据目录并赋权
# 创建专用数据目录(和 log.dirs 对应) mkdir -p /usr/local/kafka_2.13-4.1.1/data/kafka-logs # 赋权(避免启动时权限不足) chmod 755 -R /usr/local/kafka_2.13-4.1.1/data
5、初始化 KRaft 元数据(核心!生成 meta.properties)
cd /usr/local/kafka_2.13-4.1.1 # 1. 生成集群 ID(也可以手动指定,比如固定为 "kafka-cluster-123") CLUSTER_ID=$(./bin/kafka-storage.sh random-uuid) # 2. 初始化元数据(替换 CLUSTER_ID 为上面生成的值,或手动写) ./bin/kafka-storage.sh format -t $CLUSTER_ID -c config/server.properties # 示例(手动指定集群 ID,更易维护): # ./bin/kafka-storage.sh format -t kafka-cluster-123 -c config/server.properties
[root@clickhouse-middleware-production kafka_2.13-4.1.1]# cat data/kafka-logs/meta.properties # #Tue Jan 27 16:52:30 CST 2026 node.id=1 directory.id=Mjn3jF8tRtOYfD9MA-uu1g version=1 cluster.id=JVTMHHEvSKiaR17Se1-9pA
6、启动kafka
./bin/kafka-server-start.sh -daemon config/server.properties

浙公网安备 33010602011771号