14.5. 优化目标概述


要重新平衡 Kafka 集群,Cruise Control 使用优化目标来 生成优化建议。优化目标是在 Kafka 集群中重新发布工作负载和资源利用率的限制。

Red Hat Enterprise Linux 上的 AMQ Streams 支持在 Cruise Control 项目中开发的所有优化目标。支持的目标(以优先级默认降序排列)如下:

  1. 机架感知性
  2. 每个代理对一组主题的最小领导副本数
  3. 副本容量
  4. 容量:磁盘容量、网络入站容量、网络出站容量
  5. CPU 容量
  6. 副本分发
  7. 潜在的网络输出
  8. 资源分布:磁盘使用分发、网络入站使用分布、网络出站使用分布
  9. 领导字节速率分布
  10. 主题副本分发
  11. CPU 用量分布
  12. 领导副本分发
  13. 首选领导选举机制
  14. Kafka Assigner 磁盘用量发行版本
  15. intra-broker 磁盘容量
  16. intra-broker 磁盘用量

有关每个优化目标的更多信息,请参阅 Cruise Control Wiki 中的 目标

Cruise Control 属性文件中的目标配置

您可以在 cruise-control/config/ 目录中的 cruisecontrol.properties 文件中设置优化目标。有 优化目标的配置必须满足,以及 master默认优化目标

可选,用户提供的 优化目标是在运行时设置的,作为对 /rebalance 端点的请求中的参数。

优化目标取决于代理资源的任何 容量限制

以下小节更详细地描述了每个目标配置。

主优化目标

主优化目标可供所有用户使用。master 优化目标中没有列出的目标在 Cruise Control 操作中不可用。

以下 master 优化目标在 cruisecontrol.properties 文件中预先设置,在 goals 属性中以降序排列:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
Copy to Clipboard Toggle word wrap

为了简单起见,我们建议您不要更改预先设置的 master 优化目标,除非您需要完全排除一个或多个目标来生成优化方案。如果需要,可以在配置中修改 master 优化目标的优先级顺序,以实现默认优化目标。

如果您需要修改预先设置的 master 优化目标,请在 goals 属性中指定目标列表(按优先级降序排列)。使用 cruisecontrol.properties 文件中所示的完全限定域名。

您必须至少指定一个 master 目标,或者 Cruise Control 将会崩溃。

注意

如果更改了预先设置的 master 优化目标,您必须确保配置的 hard.goals 是您配置的 master 优化目标的子集。否则,在生成优化建议时会出现错误。

硬目标和软目标

硬目标是在优化提议时 必须满足 的目标。没有作为硬目标配置的目标被成为软目标。您可以将软目标视为 best effort 目标:它们不需要在优化建议方面满足,但包含在优化计算中。

Cruise Control 将计算满足所有硬目标以及尽可能多的软目标(按优先级顺序)的优化建议。满足所有硬目标的优化方法由 Analyzer 拒绝,不会向用户发送。

注意

例如,您可能有一个软目标来在集群间平均分配主题的副本(主题分布目标)。如果这样做可让所有配置的硬目标满足,则 Cruise Control 将忽略这个目标。

以下 master 优化目标在 cruisecontrol.properties 文件中预先设置为 hard 目标(在 hard.goals 属性中):

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
Copy to Clipboard Toggle word wrap

要更改硬目标,请编辑 hard.goals 属性,并使用其完全限定域名指定所需的目标。

增加硬目标数量可减少 Cruise Control 计算并生成有效优化方案的可能性。

默认优化目标

Cruise Control 使用默认的优化目标 列表来生成 缓存的优化建议。更多信息请参阅 第 14.6 节 “优化提议概述”

您可以通过设置 用户提供的优化目标,在运行时覆盖默认优化目标。

以下默认优化目标在 cruisecontrol.properties 文件中预先设置,在 default.goals 属性中以降序排列:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal
Copy to Clipboard Toggle word wrap

您必须至少指定一个默认目标,否则 Cruise Control 将会崩溃。

要修改默认优化目标,请在 default.goals 属性中指定目标列表(以降序排列)。默认目标必须是 master 优化目标的子集;使用完全限定域名。

用户提供的优化目标

用户提供的优化目标 会缩小为特定优化提议配置的默认目标。您可以根据需要将它们设置为 HTTP 请求到 /rebalance 端点的参数。更多信息请参阅 第 14.9 节 “生成优化建议”

用户提供的优化目标可以为不同的场景生成优化建议。例如,您可能想要在不考虑磁盘容量或磁盘利用率的情况下在 Kafka 集群中优化领导副本分布。因此,您将请求发送到 /rebalance 端点,其中包含一个用于领导副本分发的目标。

用户提供的优化目标必须:

要在优化提议中忽略配置的硬目标,请将 skip_hard_goals_check=true 参数添加到请求中。

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat