第 14 章 通过添加或删除代理来扩展集群
通过添加代理来扩展 Kafka 集群,可以提高集群的性能和可靠性。添加更多代理会增加可用资源,允许集群处理更大的工作负载并处理更多信息。它还可以通过提供更多副本和备份来提高容错。相反,删除使用率不足的代理可减少资源消耗并提高效率。必须仔细执行扩展,以避免中断或数据丢失。通过在集群中的所有代理间重新分发分区,每个代理的资源使用率会减少,这可以提高集群的整体吞吐量。
要增加 Kafka 主题的吞吐量,您可以增加该主题的分区数量。这允许在集群中的不同代理之间共享主题的负载。但是,如果每个代理受特定资源(如 I/O)的限制,则添加更多分区不会增加吞吐量。在这种情况下,您需要在集群中添加更多代理。
在运行多节点 Kafka 集群时添加代理会影响作为副本的集群中的代理数量。主题的实际复制因素由 default.replication.factor 和 min.insync.replicas 的设置决定,以及可用代理的数量。例如,一个复制因素为 3 表示主题的每个分区在三个代理之间复制,确保在代理失败时容错。
副本配置示例
default.replication.factor = 3 min.insync.replicas = 2
default.replication.factor = 3
min.insync.replicas = 2
当您添加或删除代理时,Kafka 不会自动重新分配分区。执行此操作的最佳方法是使用 Cruise Control。在扩展集群或缩减时,您可以使用 Cruise Control 的 add-brokers 和 remove-brokers 模式。
-
在扩展 Kafka 集群后,使用
add-brokers模式,将现有代理中的分区副本移到新添加的代理中。 -
在缩减 Kafka 集群前,使用
remove-brokers模式,将分区副本移出要删除的代理。
14.1. 在缩减操作后取消注册节点 复制链接链接已复制到粘贴板!
从 Kafka 集群中删除节点后,使用 kafka-cluster.sh 脚本从集群元数据中取消注册节点。取消注册删除的节点会导致过时的元数据,这会导致操作问题。
先决条件
在取消注册节点前,请确保以下任务已完成:
-
使用 Cruise control
remove-nodes操作,将分区从您计划的节点重新分配给剩余的代理。 -
如果需要,更新集群配置,以调整主题的复制因素(
default.replication.factor)和最低同步副本确认数量(min.insync.replicas)。 - 停止节点上的 Kafka 代理服务,并从集群中删除该节点。
流程
取消注册从集群中删除的节点:
/opt/kafka/bin/kafka-cluster.sh unregister \ --bootstrap-server <broker_host>:<port> \ --id <node_id_number>
/opt/kafka/bin/kafka-cluster.sh unregister \ --bootstrap-server <broker_host>:<port> \ --id <node_id_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过描述主题来验证集群的当前状态:
/opt/kafka/bin/kafka-topics.sh \ --bootstrap-server <broker_host>:<port> \ --describe
/opt/kafka/bin/kafka-topics.sh \ --bootstrap-server <broker_host>:<port> \ --describeCopy to Clipboard Copied! Toggle word wrap Toggle overflow