在 Debian 上安装和使用 Apache Kafka,常见“坑”主要集中在 系统环境、Java、配置、权限、运维 这几块。下面按实战经验给你梳理。
Kafka 强依赖 JVM:
⚠️ 坑:
openjdk-17,但旧 Kafka 不兼容kafka-run-class.sh 启动失败✅ 建议:
apt install openjdk-11-jdk
update-alternatives --config java
Debian 官方仓库里的 Kafka:
✅ 推荐:
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
但你如果:
zookeeper-server-start.sh就会踩坑。
两种模式:
⚠️ 坑:
format 存储目录KRaft 初始化示例:
KAFKA_CLUSTER_ID=$(kafka-storage.sh random-uuid)
kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
这是 90% 连不上 Kafka 的原因。
错误示例:
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092
❌ 外部机器连不上
✅ 正确(远程访问):
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
虽然能跑,但不安全。
建议:
useradd -m kafka
chown -R kafka:kafka /opt/kafka
su - kafka
⚠️ 坑:
/tmp 被清理 → 数据丢失建议:
log.dirs=/data/kafka-logs
并确保:
mkdir /data/kafka-logs
chown kafka:kafka /data/kafka-logs
很多人:
bin/kafka-server-start.sh config/server.properties
然后一重启就没了。
✅ 建议写 systemd:
[Unit]
Description=Kafka
After=network.target
[Service]
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Restart=on-failure
[Install]
WantedBy=multi-user.target
ufw检查:
ss -lntp | grep 9092
| 报错 | 原因 |
|---|---|
java.net.UnknownHostException |
hostname 没解析 |
Broker may not be available |
advertised.listeners 错 |
Cannot format |
KRaft 没初始化 |
OutOfMemoryError |
heap 太大 |
Debian 装 Kafka 最大的坑不是安装,而是:Java 版本 + listeners 配置 + 启动方式不对。
如果你愿意,可以告诉我:
我可以直接给你一份 可复制的最小可用配置。