温馨提示×

kafka在debian如何配置好

小樊
40
2026-10-01 00:37:03
栏目: 智能运维

下面给你一份**在 Debian 上把 Kafka 配置“能稳定跑起来”**的实用指南,从安装到常见配置,偏生产/可用方向,不绕弯。


一、前置条件

1. 安装 Java(Kafka 需要 JVM)

Kafka 3.x 推荐 Java 11 或 17

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

java -version

二、安装 Kafka(官方二进制方式,最稳)

⚠️ 不推荐 apt 装 kafka,版本旧、坑多

1. 下载 Kafka

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

三、基础配置(重点)

1. 配置 Zookeeper(如果你用 Kafka < 3.3)

Kafka 3.3+ 可用 KRaft,但 新手建议先用 Zookeeper

编辑:

/opt/kafka/config/zookeeper.properties

常用配置:

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

创建目录:

sudo mkdir -p /var/lib/zookeeper
sudo chown -R $USER:$USER /var/lib/zookeeper

2. 配置 Kafka Server

编辑:

/opt/kafka/config/server.properties

最关键的几个配置:

# 每个 broker 唯一
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
zookeeper.connect=localhost:2181

# 清理策略
log.retention.hours=168
log.segment.bytes=1073741824

创建目录:

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

四、做成 systemd 服务(推荐)

1. Zookeeper 服务

sudo nano /etc/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper
After=network.target

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

[Install]
WantedBy=multi-user.target

2. Kafka 服务

sudo nano /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka
After=zookeeper.service

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

[Install]
WantedBy=multi-user.target

⚠️ youruser 改成你实际运行用户


3. 启动

sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka

查看状态:

journalctl -u kafka -f

五、验证 Kafka 是否正常

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

另一个终端:

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

六、常见坑(很重要)

1. 外网连不上

  • advertised.listeners 必须写 外部能访问的 IP
  • 云服务器注意安全组放行 9092

2. 磁盘爆了

  • 设置 log.retention
  • 或开启 compaction

3. 单机别用 replication > 1

否则直接报错


七、如果你想要“更现代”的方案(KRaft)

Kafka 3.3+ 可不用 Zookeeper:

bin/kafka-storage.sh random-uuid
bin/kafka-storage.sh format ...

但 生产环境仍建议 Zookeeper 或等 KRaft 更成熟


如果你愿意,可以告诉我:

  • 是 单机 / 集群
  • 是否 生产环境
  • 是否要 外网访问 / SSL / SASL

我可以直接给你一份完整可用配置文件。

0 踩