下面给你一份**在 Debian 上把 Kafka 配置“能稳定跑起来”**的实用指南,从安装到常见配置,偏生产/可用方向,不绕弯。
Kafka 3.x 推荐 Java 11 或 17
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
⚠️ 不推荐 apt 装 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
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
编辑:
/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
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
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改成你实际运行用户
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka
查看状态:
journalctl -u kafka -f
/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
advertised.listeners 必须写 外部能访问的 IPlog.retention否则直接报错
Kafka 3.3+ 可不用 Zookeeper:
bin/kafka-storage.sh random-uuid
bin/kafka-storage.sh format ...
但 生产环境仍建议 Zookeeper 或等 KRaft 更成熟
如果你愿意,可以告诉我:
我可以直接给你一份完整可用配置文件。