在 Ubuntu 上对 Kafka 集群进行节点扩容,通常指 增加 Broker 节点。下面按实操步骤说明,假设你已有 Kafka 集群(如 3 个节点),现在新增 1~N 个节点。
sudo apt update
sudo apt install openjdk-11-jdk -y
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
sudo mv kafka_2.13-3.6.1 /opt/kafka
server.propertiescd /opt/kafka/config
vim server.properties
# 每个 broker 必须唯一
broker.id=4
# 监听地址
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://新节点IP:9092
# ZooKeeper 模式
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
# 或 KRaft 模式
# process.roles=broker
# controller.quorum.voters=...
# listeners=PLAINTEXT://0.0.0.0:9092
# advertised.listeners=PLAINTEXT://新节点IP:9092
log.dirs=/data/kafka-logs
num.partition=1
default.replication.factor=3
⚠️ 注意:
broker.id 不能和现有节点冲突advertised.listeners 必须是 其他节点能访问的 IP/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
查看日志:
tail -f /opt/kafka/logs/server.log
确认已加入集群:
bin/kafka-broker-api-versions.sh --bootstrap-server 新节点IP:9092
新节点加入后,不会自动迁移数据,需要手动操作。
kafka-reassign-partitions(推荐)bin/kafka-reassign-partitions.sh \
--bootstrap-server 任意节点:9092 \
--topics-to-move-json-file topics.json \
--broker-list "1,2,3,4" \
--generate
topics.json 示例:
{
"topics": [
{"topic": "test-topic"}
],
"version": 1
}
bin/kafka-reassign-partitions.sh \
--bootstrap-server 任意节点:9092 \
--reassignment-json-file reassignment.json \
--execute
bin/kafka-reassign-partitions.sh \
--bootstrap-server 任意节点:9092 \
--reassignment-json-file reassignment.json \
--verify
bin/kafka-balancer.sh --bootstrap-server 任意节点:9092
bin/kafka-topics.sh --bootstrap-server 任意节点:9092 --describe
确认:
正常,必须执行 partition reassignment。
修改 server.properties 并重启。
检查:
advertised.listenersserver.properties如果你是 KRaft 模式 / Docker / 云服务器 / 单节点扩多节点,可以告诉我,我可以给你更针对性的配置示例。