在 Debian 上部署 Apache Kafka 时,需要配置的核心项主要分为 系统环境、Kafka 自身配置、ZooKeeper(或 KRaft)配置 三部分。下面按“必须 → 常见 → 可选”的顺序说明。
Kafka 依赖 JVM:
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
建议:
JAVA_HOME:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
sudo useradd -r -m -s /bin/bash kafka
sudo mkdir -p /opt/kafka
sudo chown -R kafka:kafka /opt/kafka
ulimit -n
建议 ≥ 100000
sudo swapoff -a
ext4 / xfsnoatime配置文件路径:
/opt/kafka/config/server.properties
| 配置项 | 说明 | 示例 |
|---|---|---|
broker.id |
每个 broker 唯一 | broker.id=1 |
log.dirs |
数据目录 | log.dirs=/data/kafka-logs |
listeners |
监听地址 | listeners=PLAINTEXT://:9092 |
advertised.listeners |
对外暴露地址 | advertised.listeners=PLAINTEXT://debian:9092 |
⚠️ 生产环境必须配置 advertised.listeners
zookeeper.connect=localhost:2181
若集群:
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
bin/kafka-storage.sh random-uuid
server.propertiesprocess.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=PLAINTEXT
bin/kafka-storage.sh format -t <uuid> -c config/server.properties
log.dirs=/data/kafka-logs
log.retention.hours=168
log.segment.bytes=1073741824
default.replication.factor=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
min.insync.replicas=2
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
/opt/kafka/config/zookeeper.properties
dataDir=/data/zookeeper
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
[Unit]
Description=Apache Kafka
After=network.target
[Service]
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable kafka
sudo systemctl start kafka
broker.id=1
log.dirs=/data/kafka-logs
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://192.168.1.10:9092
zookeeper.connect=localhost:2181
✅ 使用 KRaft(无 ZooKeeper)
✅ 数据盘单独挂载
✅ 禁用 swap
✅ 生产环境至少 3 个 broker
✅ advertised.listeners ≠ localhost
如果你愿意,我可以:
只要告诉我你的 Kafka 版本 + 部署模式 即可。