温馨提示×

ubuntu kafka配置怎么扩容

小樊
46
2026-10-02 15:11:01
栏目: 智能运维

在 Ubuntu 上对 Kafka 进行扩容,一般分两种场景:

  1. Broker 节点扩容(加机器 / 加进程)
  2. Topic 分区扩容(增加分区数)

下面按常见生产做法说明。


一、Kafka Broker 扩容(增加节点)

1. 新节点准备

在 Ubuntu 上新机器或新目录下:

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

下载并解压 Kafka(版本要和集群一致):

wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1

2. 修改 server.properties

复制已有 broker 的配置,并修改:

broker.id=3                 # 不能和已有冲突
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181

如果是 KRaft 模式(无 ZooKeeper):

process.roles=broker
node.id=3
controller.quorum.voters=1@broker1:9093,2@broker2:9093,3@broker3:9093

3. 启动新 Broker

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

查看是否加入集群:

bin/kafka-broker-api-versions.sh --bootstrap-server broker1:9092

4. 数据再均衡(重要)

新 broker 启动后 不会自动迁移数据。

生成迁移计划

bin/kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --topics-to-move-json-file topics.json \
  --broker-list "1,2,3" \
  --generate

执行迁移

bin/kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassign.json \
  --execute

查看进度

bin/kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassign.json \
  --verify

二、Topic 分区扩容(增加吞吐)

查看当前分区

bin/kafka-topics.sh --bootstrap-server broker1:9092 \
  --describe --topic my-topic

增加分区

bin/kafka-topics.sh --bootstrap-server broker1:9092 \
  --alter --topic my-topic \
  --partitions 12

⚠️ 注意:

  • 分区只能增加,不能减少
  • 已有消息的 key 路由会改变

三、磁盘 / 目录扩容(单节点)

多 log.dir(JBOD)

log.dirs=/data1/kafka-logs,/data2/kafka-logs

Kafka 会自动在目录间分配 partition。


四、常见注意点

  • Broker ID 必须唯一
  • 版本必须一致(大版本不同容易出问题)
  • 扩容后一定要做 partition rebalance
  • 生产环境建议低峰期操作

如果你用的是:

  • ZooKeeper 还是 KRaft
  • 单节点还是集群
  • Docker 还是物理机

可以告诉我,我可以给你更精确的 Ubuntu 配置示例。

0 踩