在 Debian 上对 Kafka 扩容,通常分为几种场景:Broker 节点扩容(加机器)、Topic 分区扩容、磁盘/存储扩容。下面按常见运维场景说明。
在新 Debian 机器上:
# 安装 Java
apt update
apt install -y openjdk-17-jdk
# 创建 kafka 用户(可选)
useradd -m kafka
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz -C /opt
ln -s /opt/kafka_2.13-3.7.0 /opt/kafka
编辑:
vi /opt/kafka/config/server.properties
关键配置(broker.id 必须唯一):
broker.id=2
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<新节点IP>:9092
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
log.dirs=/data/kafka-logs
如果是 KRaft 模式(无 ZooKeeper):
process.roles=broker
controller.quorum.voters=...
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
新 Broker 启动后 不会自动迁移数据,需要手动迁移。
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--topics-to-move-json-file topics.json \
--broker-list "0,1,2" \
--generate
topics.json 示例:
{
"topics": [
{"topic": "test-topic"}
],
"version": 1
}
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--reassignment-json-file reassignment.json \
--execute
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--reassignment-json-file reassignment.json \
--verify
bin/kafka-topics.sh \
--bootstrap-server broker1:9092 \
--alter \
--topic test-topic \
--partitions 12
⚠️ 注意:
log.dirs=/data1/kafka-logs,/data2/kafka-logs
Kafka 会自动做 分区级别负载均衡
Debian 上:
lvextend -L +100G /dev/vg0/kafka
resize2fs /dev/vg0/kafka
✅ 扩容前:
min.insync.replicas ≥ 2✅ 监控:
✅ 自动化:
如果你能告诉我:
我可以给你 更精确的 Debian 实操步骤。