下面按**在 Ubuntu 上安装并配置 Kafka(以 Kafka 3.x + 自带 Zookeeper 为例)**来说明,适合单机/开发环境,也会提到生产环境要点。
Kafka 需要 JDK 8 或以上:
sudo apt update
sudo apt install openjdk-11-jdk -y
java -version
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
cd /opt/kafka
vi config/zookeeper.properties
常用配置:
dataDir=/tmp/zookeeper
clientPort=2181
启动 Zookeeper:
bin/zookeeper-server-start.sh config/zookeeper.properties
vi config/server.properties
最关键的几个配置:
# broker 唯一 ID
broker.id=0
# 监听地址(非常重要)
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://localhost:9092
# 日志(消息存储)目录
log.dirs=/tmp/kafka-logs
# Zookeeper 地址
zookeeper.connect=localhost:2181
# 单节点可关副本检查
offsets.topic.replication.factor=1
default.replication.factor=1
min.insync.replicas=1
⚠️ 如果是远程访问,要把
localhost改成服务器 IP
启动 Kafka:
bin/kafka-server-start.sh config/server.properties
如果你用的是 Kafka 3.3+ 且不想用 Zookeeper:
cd /opt/kafka
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
bin/kafka-storage.sh format \
-t $KAFKA_CLUSTER_ID \
-c config/kraft/server.properties
vi config/kraft/server.properties
process.roles=broker,controller
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://localhost:9092
controller.quorum.voters=0@localhost:9093
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-topics.sh --list --bootstrap-server localhost:9092
# 生产
bin/kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092
# 消费
bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092
sudo vim /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka
After=network.target
[Service]
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 kafka
sudo systemctl start kafka
| 问题 | 原因 |
|---|---|
| 连接超时 | advertised.listeners 配置错 |
| 无法远程连接 | Ubuntu 防火墙 / 云安全组 |
| 单节点报错 | replication.factor > 1 |
| 数据丢失 | log.dirs 在 /tmp |
如果你告诉我:
我可以给你更精确的一份配置。