温馨提示×

ubuntu kafka配置如何部署

小樊
41
2026-08-29 01:37:25
栏目: 智能运维

下面给你一份**在 Ubuntu 上部署 Kafka(单机 / 基础生产可用)**的完整配置流程,基于 Kafka 3.x + Java 17(或 11)+ systemd 管理,适合学习、测试以及中小型生产环境。


一、环境准备

1. 安装 Java(Kafka 依赖)

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

Kafka 3.x 推荐使用 Java 11 或 17


2. 创建 Kafka 用户(可选但推荐)

sudo useradd -r -m -s /bin/bash kafka

二、下载并安装 Kafka

1. 下载 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

三、配置 Zookeeper(Kafka 依赖)

Kafka 3.x 仍可用 Zookeeper(KRaft 模式见后文)

1. 配置 Zookeeper

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

2. 启动 Zookeeper(测试)

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

四、配置 Kafka

1. 修改 Kafka 配置

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

2. 启动 Kafka(测试)

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

五、Kafka 基础测试

1. 创建 Topic

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

2. 查看 Topic

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

3. 发送消息

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

4. 消费消息

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

六、配置 systemd(推荐生产使用)

1. Zookeeper systemd

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

2. Kafka systemd

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

3. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka

七、KRaft 模式(无 Zookeeper,推荐新项目)

Kafka 3.x 起支持 KRaft(不依赖 Zookeeper)

1. 生成 Cluster ID

/opt/kafka/bin/kafka-storage.sh random-uuid

2. 格式化日志目录

/opt/kafka/bin/kafka-storage.sh format \
--cluster-id <UUID> \
--config /opt/kafka/config/kraft/server.properties

3. 修改配置

/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

4. 启动

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

八、常见问题

1. 端口说明

服务 端口
Zookeeper 2181
Kafka 9092
KRaft Controller 9093

2. 外网访问

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092

九、适用场景建议

场景 推荐
学习 / 测试 Zookeeper 模式
新项目 KRaft
生产 KRaft + 多 Broker

如果你需要:

  • 多节点 Kafka 集群
  • Docker / Docker Compose 部署
  • 生产级参数调优
  • 与 Spring Boot / Flink / Logstash 集成

可以告诉我你的实际场景,我可以直接给你生产可用的配置模板

0