下面给你一份**在 Ubuntu 上部署 Kafka(单机 / 基础生产可用)**的完整配置流程,基于 Kafka 3.x + Java 17(或 11)+ systemd 管理,适合学习、测试以及中小型生产环境。
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
Kafka 3.x 推荐使用 Java 11 或 17
sudo useradd -r -m -s /bin/bash kafka
去官网获取最新版本:https://kafka.apache.org/downloads
cd /opt
sudo wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
sudo tar -xzf kafka_2.13-3.6.1.tgz
sudo mv kafka_2.13-3.6.1 kafka
sudo chown -R kafka:kafka kafka
Kafka 3.x 仍可用 Zookeeper(KRaft 模式见后文)
sudo vim /opt/kafka/config/zookeeper.properties
常用配置:
dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
创建数据目录:
sudo mkdir -p /var/lib/zookeeper
sudo chown -R kafka:kafka /var/lib/zookeeper
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
sudo vim /opt/kafka/config/server.properties
关键配置项(必须改)
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka-logs
zookeeper.connect=localhost:2181
num.partitions=3
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
创建日志目录:
sudo mkdir -p /var/lib/kafka-logs
sudo chown -R kafka:kafka /var/lib/kafka-logs
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 3 \
--replication-factor 1
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--from-beginning \
--bootstrap-server localhost:9092
sudo vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper Service
After=network.target
[Service]
Type=simple
User=kafka
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 vim /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Server
After=zookeeper.service
[Service]
Type=simple
User=kafka
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
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka
Kafka 3.x 起支持 KRaft(不依赖 Zookeeper)
/opt/kafka/bin/kafka-storage.sh random-uuid
/opt/kafka/bin/kafka-storage.sh format \
--cluster-id <UUID> \
--config /opt/kafka/config/kraft/server.properties
/opt/kafka/config/kraft/server.properties
process.roles=broker,controller
node.id=1
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
controller.quorum.voters=1@localhost:9093
log.dirs=/var/lib/kafka-logs
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
| 服务 | 端口 |
|---|---|
| Zookeeper | 2181 |
| Kafka | 9092 |
| KRaft Controller | 9093 |
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
| 场景 | 推荐 |
|---|---|
| 学习 / 测试 | Zookeeper 模式 |
| 新项目 | KRaft |
| 生产 | KRaft + 多 Broker |
如果你需要:
可以告诉我你的实际场景,我可以直接给你生产可用的配置模板。