14.5. 优化目标概述


为了重新平衡 Kafka 集群,Cruise Control 使用优化目标来生成 优化方法。优化目标是针对 Kafka 集群内工作负载重新分配和资源利用率的限制。

红帽企业 Linux 上的 AMQ 流支持 Cruise Control 项目中开发的所有优化目标。支持的目标(按默认降序排列)如下:

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

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

清理控制属性文件中的目标配置

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

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

优化目标受到 broker 资源的任何 容量限制

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

主优化目标

主优化目标适用于所有用户。主优化目标中没有列出的目标不适用于 Cruise 控制操作。

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

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal

为简单起见,我们建议您不要更改预先设定的主优化目标,除非您需要完全排除一个或多个目标用于生成优化调整。如果需要,可以在配置默认优化目标时修改主优化目标的优先级顺序。

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

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

注意

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

硬目标和软目标

硬目标就是在优化调整时 必须满足 的目标。未配置为硬目标的目标称为 软目标。您可以将软目标视为 最佳工作 目标:它们在优化调整时不需要满足,而是包含在优化计算中。

粗体控件将计算出符合所有硬目标和尽可能多的软目标(按优先顺序)的优化条件。无法 满足所有硬目标的优化建议被拒绝,不会发送给用户。

注意

例如,您可能有一个软目标来在集群中平均分发主题的副本(主题副本分发目标)。如果这样做能够实现所有配置的硬目标,挑战控制将忽略此目标。

以下主优化目标作为 cruisecontrol.properties 文件中的 hard.goals 属性中的硬目标预先设定:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal

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

增加硬目标数量可降低Cruise控制计算和生成有效优化结果的可能性。

默认优化目标

精简控制 使用默认的优化目标 列表来生成 缓存的优化建议。如需更多信息,请参阅 第 14.6 节 “优化调整概述”

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

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

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal

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

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

用户提供的优化目标

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

用户提供的优化目标可针对不同的情景生成优化。例如,您可能想要在 Kafka 集群间优化领导副本分布,而不考虑磁盘容量或磁盘使用率。因此,您向 /rebalance 端点发送请求,其中包含领导副本分发的单一目标。

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

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

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.