在 CentOS 上为 Kafka 扩容的实操指南
一 前置检查与准备
二 添加新 Broker 节点
sudo yum install -y java-11-openjdk java-11-openjdk-devel/opt/kafka_2.13-3.4.0.tgzsudo useradd -r -s /bin/false kafka;mkdir -p /kafka-logs;chown -R kafka:kafka /opt/kafka /kafka-logsprocess.roles=broker,controllercontroller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093,4@192.168.1.14:9093listeners=PLAINTEXT://192.168.1.14:9092,CONTROLLER://192.168.1.14:9093advertised.listeners=PLAINTEXT://192.168.1.14:9092listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXTinter.broker.listener.name=PLAINTEXTlog.dirs=/kafka-logsbroker.id=4broker.id=4listeners=PLAINTEXT://192.168.1.14:9092advertised.listeners=PLAINTEXT://192.168.1.14:9092log.dirs=/kafka-logszookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.11:9092 | grep -E "^[0-9]+" | sort -u/opt/kafka/bin/zookeeper-shell.sh zk1:2181 ls /brokers/ids(应含 4)三 分区再平衡与限流
cat > topics-to-move.json <<EOF { "topics": [{"topic": "my-topic"}], "version": 1 } EOF/opt/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server 192.168.1.11:9092 \ --topics-to-move-json-file topics-to-move.json --broker-list "4,5" --generate/opt/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server 192.168.1.11:9092 \ --reassignment-json-file expand-cluster-reassignment.json --execute/opt/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server 192.168.1.11:9092 \ --reassignment-json-file expand-cluster-reassignment.json --verify/opt/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server 192.168.1.11:9092 --generate --topics-to-move-json-file all-topics.json --broker-list "1,2,3,4,5"leader.replication.throttled.rate=5000000follower.replication.throttled.rate=5000000leader.replication.throttled.replicas 与 follower.replication.throttled.replicas)四 验证与收尾
/opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.1.11:9092 --describe --under-replicated-partitions(应无输出)/opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.1.11:9092 --describe --topic my-topic(各 Broker 的 Leader/副本分布大致均衡)auto.leader.rebalance.enable=true(部分版本默认开启)/opt/kafka/bin/kafka-leader-election.sh --bootstrap-server 192.168.1.11:9092 --election-type preferred --all-topic-partitions五 常见场景与排错要点
broker.id 唯一、监听地址可达、再分配计划中包含新 Broker ID、磁盘空间充足。advertised.listeners 对外 IP/端口是否可达,避免内外网错配。