第 18 章 使用 Cruise Control 重新平衡集群
Cruise Control 是一个开源系统,它支持以下 Kafka 操作:
- 监控集群工作负载
- 根据预定义的限制重新平衡集群
运行更均衡的 Kafka 集群来帮助更有效地使用代理 pod。
典型的集群随着时间的推移可能会不均匀地加载。处理大量消息流量的分区可能无法在可用代理中均匀分布。要重新平衡集群,管理员必须监控代理上的负载,并将忙碌的分区手动分配给具有备用容量的代理。
Cruise Control 自动执行集群重新平衡过程。它为集群构建了一个基于 CPU、磁盘和网络负载的资源利用率 的工作负载模型,并为更多均衡的分区分配生成优化建议(您可以批准或拒绝)。一组可配置的优化目标用于计算这些提议。
您可以在特定模式中生成优化方案。默认 full 模式在所有代理间重新平衡分区。您还可以使用 add-brokers 和 remove-brokers 模式来适应扩展集群或缩减时的更改。
当您批准一个优化建议时,Cruise Control 会将它应用到您的 Kafka 集群。您可以使用 KafkaRebalance 资源配置和生成优化建议。您可以使用注解配置资源,以便自动或手动批准优化提议。
AMQ Streams 为 Cruise Control 提供示例配置文件。
18.1. Cruise Control 组件和功能 复制链接链接已复制到粘贴板!
Cruise Control 包括四个主要组件 - Load Monitor、Anomaly Detector 和 Executor- 以及用于客户端交互的 REST API。AMQ Streams 使用 REST API 来支持以下 Cruise Control 功能:
- 从优化目标生成优化方案。
- 根据优化提议,重新平衡 Kafka 集群。
- 优化目标
优化目标描述了从重新平衡实现的特定目标。例如,目标可能是在代理之间更均匀地分布主题副本。您可通过配置更改要包含的目标。目标定义为一个硬目标或软目标。您可以通过 Cruise Control 部署配置添加硬目标。您还具有适合这些类别的主要、默认和用户提供的目标。
- 硬 目标是预先设置的,必须满足优化建议才能成功进行。
- 为了成功优化提议,无需满足软目标。如果表示满足所有硬目标,则可以设置它们。
- 主要目标从 Cruise Control 中继承。其中一些预先设置为硬目标。默认在优化提议中使用主要目标。
- 默认情况下,默认目标与主目标相同。您可以指定您自己的一组默认目标。
- 用户提供的目标是 配置用于生成特定优化提议的默认目标子集。
- 优化提议
优化建议由您要从重新平衡实现的目标组成。您可以生成优化建议,以创建提议的更改概述,以及重新平衡的结果。目标以特定优先级顺序进行评估。然后您可以选择批准或拒绝提议。您可以使用调整的目标集合拒绝再次运行它。
您可以在三种模式之一中生成优化方案。
-
full是默认模式,运行完整重新平衡。 -
add-brokers是扩展 Kafka 集群时添加代理后使用的模式。 -
remove-brokers是缩减 Kafka 集群时删除代理之前使用的模式。
-
目前还不支持其他 Cruise Control 功能,包括自我修复、通知、编写目标以及更改主题复制因素。