下面以 Debian(如 Debian 11 / 12) 为例,系统性地说明 Kafka 的部署与常见配置,包含:
Kafka 依赖 JVM:
sudo apt update
sudo apt install -y openjdk-17-jdk
验证:
java -version
Kafka 3.x 推荐 Java 11 / 17
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
目录结构:
/opt/kafka
├── bin
├── config
├── libs
└── logs
sudo nano /opt/kafka/config/zookeeper.properties
常用:
dataDir=/opt/kafka/zookeeper-data
clientPort=2181
sudo nano /opt/kafka/config/server.properties
最基础配置:
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://localhost:9092
log.dirs=/opt/kafka/kafka-logs
zookeeper.connect=localhost:2181
Kafka 3.3+ 支持 KRaft(生产可用)
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
bin/kafka-storage.sh format \
--cluster-id $KAFKA_CLUSTER_ID \
--config config/kraft/server.properties
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://localhost:9092
log.dirs=/opt/kafka/kafka-logs
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &
bin/kafka-server-start.sh config/kraft/server.properties
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
bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092
| 参数 | 说明 |
|---|---|
| broker.id | 唯一 ID |
| listeners | 监听地址 |
| log.dirs | 数据目录 |
| num.partitions | 默认分区数 |
| default.replication.factor | 默认副本数 |
| offsets.topic.replication.factor | offset 副本 |
sudo nano /etc/systemd/system/kafka.service
示例:
[Unit]
Description=Apache Kafka
After=network.target
[Service]
Type=simple
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 --now kafka
advertised.listenerssudo chown -R kafka:kafka /opt/kafka
修改:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
如果你需要:
告诉我你的使用场景,我可以直接给你完整配置。