第 14 章 使用 Cruise Control 进行集群重新平衡
Cruise Control 是一个用于自动化 Kafka 操作的开源系统,如监控集群工作负载、根据预定义的限制重新平衡集群,并检测和修复异常情况。它由四个主要组件组成,即 Load Monitor、Anomaly Detector 和 Executor-,以及用于客户端交互的 REST API。
您可以使用 Cruise Control 来重新平衡 Kafka 集群。Red Hat Enterprise Linux 上的 Cruise Control for AMQ Streams 作为单独的 zipped 发行版本提供。
AMQ Streams 使用 REST API 来支持以下 Cruise Control 功能:
- 从优化目标生成优化建议。
根据优化提议,重新平衡 Kafka 集群。
- 优化目标
优化目标描述了从重新平衡实现的特定目标。例如,目标是更加均匀地在代理之间分发主题副本。您可以更改配置要包含的目标。目标定义为一个硬目标或软目标。您可以通过 Cruise Control 部署配置添加硬目标。您还可以拥有适合以下每个类别的主要、默认和用户提供的目标。
- 硬 目标是预先设置的,必须满足优化建议才能成功。
- 软目标 不需要满足优化提议才能成功。如果表示满足所有硬目标,则可以对其进行设置。
- 主要目标从 Cruise Control 中继承。一些是预先设置的,就是硬目标。默认在优化提议中使用主要目标。
- 默认目标 与默认情况下主要目标相同。您可以指定自己的默认目标。
- 用户提供的目标是配置用于生成特定优化器的默认目标子集。
- 优化建议
优化建议由您要从重新平衡实现的目标组成。您生成了一个优化方案,以创建所提议的更改和重新平衡结果的摘要。目的按特定优先级顺序进行评估。然后您可以选择批准或拒绝提议。您可以拒绝提议通过调整的目标集合再次运行它。
您可以通过向以下 API 端点之一发出请求并批准优化建议。
- /rebalance 端点用于运行一个完整的重新平衡操作。
- 在扩展 Kafka 集群时,/add_broker 端点要重新平衡。
- 在缩减 Kafka 集群时,要重新平衡的 /remove_broker 端点。
您可以通过配置属性文件配置优化目标。AMQ Streams 为 Cruise Control 提供示例属性文件。
目前还不支持其他 Cruise Control 功能,包括自我修复、通知、编写目标以及更改主题复制因素。
14.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 功能,包括自我修复、通知、编写目标以及更改主题复制因素。