温馨提示×

怎么在Ubuntu运行Kafka

小樊
40
2026-08-02 16:05:13
栏目: 智能运维

Ubuntu 上运行 Apache Kafka,最常用、最稳妥的方式是 使用官方二进制包 + 本地启动(单机模式)。下面我按 从零到能收发消息 给你一个完整流程。


一、前置条件

1️⃣ 安装 Java(Kafka 依赖 JVM)

Kafka 需要 Java 8 或以上(推荐 Java 11 或 17)。

sudo apt update
sudo apt install openjdk-17-jdk -y

验证:

java -version

二、下载并安装 Kafka

2️⃣ 下载 Kafka

去官网复制最新版本链接(示例为 3.7.0):

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(单机模式)

Kafka 依赖 Zookeeper(旧版本)或 KRaft(新版本),下面分别说明。


✅ 方式一:使用 Zookeeper(最常用,入门推荐)

3️⃣ 启动 Zookeeper

cd /opt/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties

✅ 看到 binding to port 2181 表示成功


4️⃣ 启动 Kafka Broker

新开一个终端:

cd /opt/kafka
bin/kafka-server-start.sh config/server.properties

✅ 看到 started (kafka.server.KafkaServer) 表示成功


四、测试 Kafka 是否运行成功

5️⃣ 创建 Topic

bin/kafka-topics.sh \
  --create \
  --topic test-topic \
  --bootstrap-server localhost:9092 \
  --partitions 1 \
  --replication-factor 1

查看 topic:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

6️⃣ 发送消息(生产者)

bin/kafka-console-producer.sh \
  --topic test-topic \
  --bootstrap-server localhost:9092

输入内容后回车:

hello kafka

7️⃣ 接收消息(消费者)

新终端:

bin/kafka-console-consumer.sh \
  --topic test-topic \
  --from-beginning \
  --bootstrap-server localhost:9092

✅ 能看到 hello kafka 就说明 Kafka 正常运行了


✅ 方式二:使用 KRaft(无 Zookeeper,新版本推荐)

Kafka 3.x 开始支持,但配置稍复杂

生成集群 ID

bin/kafka-storage.sh random-uuid

格式化日志目录

bin/kafka-storage.sh format \
  -t <上面生成的UUID> \
  -c config/kraft/server.properties

启动 Kafka

bin/kafka-server-start.sh config/kraft/server.properties

五、常见问题

❌ Kafka 启动失败

  • Java 没装好
  • 端口 9092 / 2181 被占用
  • 配置文件路径错误

❌ 消费者收不到消息

  • 忘了加 --from-beginning
  • broker 没启动成功

六、关闭 Kafka

bin/kafka-server-stop.sh
bin/zookeeper-server-stop.sh

七、进阶建议

✅ 生产环境:

  • 使用 KRaft
  • 多 broker
  • systemd 管理 Kafka
  • 配置日志、内存、磁盘

✅ 学习推荐:

  • 先 Zookeeper 模式
  • 熟悉 topic / partition / consumer group

如果你愿意,我可以继续帮你:

  • ✅ 写成 systemd 服务
  • ✅ 配置 多 broker 集群
  • ✅ 用 Docker 运行 Kafka
  • ✅ 对接 Spring Boot / Python

你打算用 Kafka 做什么?

0