CentOS Kafka 集群扩容实操指南
一 前置检查与准备
二 添加新 Broker 到集群
sudo yum install -y java-11-openjdk java-11-openjdk-devel/opt/kafka_2.13-3.4.0.tgz 解压并软链为 /opt/kafkasudo useradd -r -s /bin/false kafka;sudo mkdir -p /kafka-logs;sudo chown -R kafka:kafka /opt/kafka /kafka-logsbroker.id=4listeners=PLAINTEXT://<新节点IP>:9092advertised.listeners=PLAINTEXT://<新节点IP>:9092log.dirs=/kafka-logszookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafkaprocess.roles=broker,controller、controller.quorum.voters=1@broker1:9093,2@broker2:9093,3@broker3:9093,4@broker4:9093、listeners=CONTROLLER://<IP>:9093,PLAINTEXT://<IP>:9092、inter.broker.listener.name=PLAINTEXT、controller.listener.names=CONTROLLER/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server <任一现有Broker>:9092 | grep -E '^[0-9]+',应能看到新 Broker ID。三 分区再平衡与限流
/opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper <ZK>:2181 --topics-to-move-json-file topics.json --broker-list "4,5" --generate/opt/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server <任一Broker>:9092 --topics-to-move-json-file topics.json --broker-list "4,5" --generate--execute --reassignment-json-file expand.json--execute --reassignment-json-file expand.json--verify--verify--generate(不指定 topics,基于当前分配生成建议)/opt/kafka/bin/kafka-configs.sh --bootstrap-server <任一Broker>:9092 --alter --entity-type broker --entity-name <BrokerID> --add-config 'replica.reassignment.throttled.rate=104857600'--entity-type topic --entity-name <TopicName> --add-config 'replica.reassignment.throttled.rate=104857600'/opt/kafka/bin/kafka-configs.sh --bootstrap-server <任一Broker>:9092 --describe --entity-type broker --entity-name <BrokerID>--delete-config 'replica.reassignment.throttled.rate'四 验证与优化
--verify 显示所有分区 Successfully completed/opt/kafka/bin/kafka-topics.sh --bootstrap-server <任一Broker>:9092 --describe --under-replicated-partitions 应无输出auto.leader.rebalance.enable=true(默认开启)/opt/kafka/bin/kafka-leader-election.sh --bootstrap-server <任一Broker>:9092 --election-type preferred --all-topic-partitions/opt/kafka/bin/kafka-topics.sh --bootstrap-server <任一Broker>:9092 --alter --topic <Topic> --partitions <新分区数>五 常见问题与回滚
--execute 并 --verify 直至完成