温馨提示×

Linux下Kafka如何配置

小樊
38
2026-08-17 03:08:59
栏目: 智能运维

下面以 Linux 环境下 Kafka 的基本配置 为例,按 单节点 → 常用配置 → 启动 → 验证 的顺序说明。
示例基于 Kafka 3.x(自带 Zookeeper 或 KRaft),如果你用的是旧版本或生产集群,可再细化。


一、前置条件

1. 安装 JDK

Kafka 依赖 Java:

java -version

推荐:

  • JDK 8 / 11 / 17(Kafka 3.x 推荐 11+)

如未安装(以 OpenJDK 11 为例):

sudo yum install -y java-11-openjdk   # CentOS
sudo apt install -y openjdk-11-jdk   # Ubuntu

二、下载并解压 Kafka

cd /opt
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -zxvf kafka_2.13-3.6.0.tgz
mv kafka_2.13-3.6.0 kafka
cd kafka

三、Kafka 配置方式(两种)

✅ 方式一:Zookeeper 模式(传统,最常用)

适合学习、测试、老集群

✅ 方式二:KRaft 模式(无 Zookeeper,新版本推荐)

Kafka 2.8+ 支持,3.x 开始成熟

下面先讲 Zookeeper 模式,再补充 KRaft 配置。


四、Zookeeper 模式配置(最常见)

1. 配置 Zookeeper(可选)

默认已可用,如需修改:

vim config/zookeeper.properties

常见配置:

dataDir=/opt/kafka/zookeeper-data
clientPort=2181

启动 Zookeeper:

bin/zookeeper-server-start.sh config/zookeeper.properties

后台运行:

nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log 2>&1 &

2. 配置 Kafka(重点)

编辑配置文件:

vim config/server.properties

✅ 必须修改的核心配置

# broker 唯一 ID
broker.id=0

# 监听地址(非常重要)
listeners=PLAINTEXT://localhost:9092

# 对外暴露地址(客户端连接用)
advertised.listeners=PLAINTEXT://localhost:9092

# 日志(数据)目录
log.dirs=/opt/kafka/kafka-logs

# Zookeeper 地址
zookeeper.connect=localhost:2181

✅ 常用优化配置(生产建议)

# 每个 topic 默认副本数
default.replication.factor=1

# 是否允许自动创建 topic
auto.create.topics.enable=true

# 日志保留时间(小时)
log.retention.hours=168

# 单日志段大小
log.segment.bytes=1073741824

3. 启动 Kafka

bin/kafka-server-start.sh config/server.properties

后台启动:

nohup bin/kafka-server-start.sh config/server.properties > kafka.log 2>&1 &

五、验证 Kafka 是否成功

1. 查看进程

jps

应看到:

QuorumPeerMain   # Zookeeper
Kafka

2. 创建 Topic

bin/kafka-topics.sh \
--create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1

3. 查看 Topic

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

4. 发送 & 消费消息

生产者:

bin/kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092

消费者(新终端):

bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092

✅ 输入消息后能消费,说明 Kafka 正常工作。


六、KRaft 模式(无 Zookeeper,新)

1. 生成集群 ID

bin/kafka-storage.sh random-uuid

示例输出:

xtz1234567890

2. 格式化存储

bin/kafka-storage.sh format \
--cluster-id xtz1234567890 \
--config config/kraft/server.properties

3. 修改 KRaft 配置

vim config/kraft/server.properties

关键配置:

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093
log.dirs=/opt/kafka/kafka-logs

4. 启动 Kafka

bin/kafka-server-start.sh config/kraft/server.properties

七、常见 Linux 问题

1. 端口被占用

netstat -tunlp | grep 9092

2. 内存不足

修改:

vim bin/kafka-server-start.sh
export KAFKA_HEAP_OPTS="-Xms256M -Xmx512M"

八、总结(快速对照)

项目 配置
配置文件 config/server.properties
数据目录 log.dirs
监听端口 listeners
协调器 Zookeeper / KRaft
启动 kafka-server-start.sh

如果你需要:

  • 生产环境参数调优
  • 集群部署(3 节点)
  • 安全认证(SASL / SSL)
  • Docker / systemd 自动启动

告诉我你的具体场景,我可以给你一份 可直接用的生产级配置

0