在 Debian 上安装和部署 Kafka(通常指 Apache Kafka,或常见的 Confluent / Bitnami 版本),有几个容易踩坑但很关键的点。下面按「系统准备 → 安装 → 配置 → 运行 → 常见坑」给你梳理。
Kafka 依赖 JVM:
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
⚠️ 确认 JAVA_HOME:
echo $JAVA_HOME
# 若无输出
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
不要直接用 root 跑 Kafka
sudo useradd -m -s /bin/bash kafka
sudo passwd kafka
wget https://downloads.apache.org/kafka/3.7.0/k...tgz
tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 /opt/kafka
sudo chown -R kafka:kafka /opt/kafka
✅ 优点:干净、可控、适合生产
Debian 官方源 没有 Kafka 第三方源风险高,不建议生产使用
server.properties 重点项# 必须改
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
# 日志目录(必须存在且可写)
log.dirs=/data/kafka-logs
# Zookeeper(Kafka < 3.3)
zookeeper.connect=localhost:2181
⚠️ advertised.listeners 错了,客户端连不上
sudo mkdir -p /data/kafka-logs
sudo chown -R kafka:kafka /data/kafka-logs
✅ 新项目推荐 KRaft
❌ 老教程大多是 Zookeeper
KRaft 模式需生成集群 ID:
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
[Unit]
Description=Apache Kafka
After=network.target
[Service]
Type=simple
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 kafka
sudo systemctl start kafka
sudo ufw allow 9092
Kafka 很吃 fd:
sudo vim /etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000
sudo sysctl vm.swappiness=1
❌ 用 root 启动
❌ advertised.listeners 写 localhost
❌ 日志目录权限不对
❌ 忘记开端口
❌ Java 版本不匹配
❌ Zookeeper 没起来就启动 Kafka
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
如果你愿意,我可以:
你现在是 学习 / 测试 / 生产 用?