6.3.4. 扩展 Kafka 集群
这个步骤描述了如何在 Kafka 集群中增加代理数量。
先决条件
- 现有的 Kafka 集群。
- 安装了 AMQ 代理的新机器。
- 重新分配 JSON 文件,说明在扩大的集群中如何将分区重新分配给代理。
流程
-
使用与集群中的其他代理相同的设置创建新代理的配置文件,但
broker.id
应该是一个尚未被其他代理使用的数字。 启动新的 Kafka 代理,将您在上一步中创建的配置文件作为参数传递给
kafka-server-start.sh
脚本:su - kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
验证 Kafka 代理正在运行。
jcmd | grep Kafka
- 为每个新代理重复上述步骤。
使用
kafka-reassign-partitions.sh
命令行工具执行分区重新分配。kafka-reassign-partitions.sh --zookeeper <ZooKeeperHostAndPort> --reassignment-json-file <ReassignmentJsonFile> --execute
如果您要节流复制,您还可以使用每秒字节数(以字节为单位)传递
--throttle
选项。例如:kafka-reassign-partitions.sh --zookeeper zookeeper1:2181 --reassignment-json-file reassignment.json --throttle 5000000 --execute
此命令将显示两个重新分配 JSON 对象:第一个记录了正在移动的分区的当前分配。您应该将其保存到文件中,以便稍后需要恢复重新分配。第二个 JSON 对象是您在重新分配 JSON 文件中传递的目标重新分配。
如果您需要在重新分配期间更改节流,您可以使用具有不同节流率的同一命令行。例如:
kafka-reassign-partitions.sh --zookeeper zookeeper1:2181 --reassignment-json-file reassignment.json --throttle 10000000 --execute
使用
kafka-reassign-partitions.sh
命令行工具定期验证重新分配是否已完成。这与上一步中的命令相同,但使用--verify
选项而不是--execute
选项。kafka-reassign-partitions.sh --zookeeper <ZooKeeperHostAndPort> --reassignment-json-file <ReassignmentJsonFile> --verify
例如:
kafka-reassign-partitions.sh --zookeeper zookeeper1:2181 --reassignment-json-file reassignment.json --verify
-
当
--verify
命令报告每个分区成功完成时,重新分配已完成。最后的--verify
也会产生删除任何重新分配节的效果。现在,如果您保存了 JSON,将分配还原到其原始代理中,您可以删除还原文件。