温馨提示×

debian上kafka如何配置

小樊
44
2026-09-22 02:33:20
栏目: 智能运维

下面按在 Debian(如 Debian 11/12)上从零配置 Kafka的思路,给你一份实用、可落地的配置说明,包含单节点基本配置常见生产建议


一、前置准备

1. 安装 Java

Kafka 依赖 JVM(推荐 JDK 8 / 11 / 17)

sudo apt update
sudo apt install -y openjdk-17-jdk
java -version

2. 创建专用用户(可选但推荐)

sudo useradd -m -s /bin/bash kafka
sudo su - kafka

二、下载并安装 Kafka

以 Kafka 3.6 为例:

cd /opt
sudo wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
sudo tar -xzf kafka_2.13-3.6.1.tgz
sudo mv kafka_2.13-3.6.1 kafka

三、ZooKeeper(Kafka 依赖)

Kafka 3.x 仍可用 ZooKeeper(KRaft 模式可不用,后面说明)

1. 配置 ZooKeeper

cd /opt/kafka
vi config/zookeeper.properties

常用配置:

dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=0

创建数据目录:

sudo mkdir -p /var/lib/zookeeper
sudo chown -R kafka:kafka /var/lib/zookeeper

四、Kafka 核心配置

1. server.properties(最重要)

vi config/server.properties

基础配置(单节点)

broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092

log.dirs=/var/lib/kafka-logs
num.partitions=3
default.replication.factor=1

zookeeper.connect=localhost:2181

⚠️ advertised.listeners 必须能被客户端访问


2. 创建日志目录

sudo mkdir -p /var/lib/kafka-logs
sudo chown -R kafka:kafka /var/lib/kafka-logs

五、启动 Kafka

1. 启动 ZooKeeper

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

2. 启动 Kafka

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

后台运行:

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

六、快速验证

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

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

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

七、生产环境建议配置

1. 数据可靠性

acks=all
min.insync.replicas=2
unclean.leader.election.enable=false

2. 日志管理

log.retention.hours=168
log.segment.bytes=1073741824

3. JVM 调优

export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"

八、使用 systemd(推荐)

zookeeper.service

[Unit]
Description=ZooKeeper
After=network.target

[Service]
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
Restart=on-failure

[Install]
WantedBy=multi-user.target

kafka.service

[Unit]
Description=Kafka
After=zookeeper.service

[Service]
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now zookeeper kafka

九、KRaft 模式(无 ZooKeeper,新方案)

如果你用的是 Kafka 3.x+,可不使用 ZooKeeper:

bin/kafka-storage.sh random-uuid
bin/kafka-storage.sh format \
  --config config/kraft/server.properties \
  --cluster-id <uuid>

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

十、常见坑

advertised.listeners 配成 localhost → 远程连不上
❌ 防火墙未放行 9092
❌ 磁盘权限不是 kafka 用户
❌ 单机 replication.factor > 1


如果你告诉我:

  • Kafka 版本
  • 单节点 / 集群
  • 是否公网
  • 是否用 Docker

我可以给你更精确的配置模板

0