14.5. 优化目标概述
优化目标是在 Kafka 集群中工作负载重新分配和资源利用率的限制。要重新平衡 Kafka 集群,Cruise Control 使用优化目标来生成 优化建议。
14.5.1. 优先级的目标顺序 复制链接链接已复制到粘贴板!
Red Hat Enterprise Linux 上的 AMQ Streams 支持在 Cruise Control 项目中开发的所有优化目标。支持的目标按默认优先级降序排列,如下所示:
- rack-awareness
- 一组主题的每个代理的最小领导副本数
- 副本容量
- 容量:磁盘容量、网络入站容量、网络出站容量
- CPU 容量
- 副本分发
- 潜在的网络输出
- 资源分布:磁盘使用分发、网络入站使用分布、网络出站使用分布
- leader 字节(以字节为单位)分布
- 主题副本分发
- CPU 用量分布
- 领导副本分发
- 首选领导机制
- Kafka 分配器磁盘用量分发
- in-broker 磁盘容量
- intra-broker 磁盘用量
有关每个优化目标的更多信息,请参阅 Cruise Control Wiki 中的 Goals。
14.5.2. Cruise 控制属性文件中的目标配置 复制链接链接已复制到粘贴板!
您可以在 cruise-control/config/ 目录中的 cruisecontrol.properties 文件中设置优化目标。Cruise Control 具有配置,可进行硬优化目标,必须得到满足、默认和用户提供的优化目标。
您可以在以下配置中指定以下类型的优化目标:
-
Main goals —
cruisecontrol.properties文件 -
Hard goals —
cruisecontrol.properties文件 -
Default goals —
cruisecontrol.properties文件 - User-provided goals — runtime 参数
另外,用户提供的 优化目标会在运行时设置为对 /rebalance 端点的请求的参数。
优化目标取决于代理资源的任何 容量限制。
14.5.3. 硬和软优化目标 复制链接链接已复制到粘贴板!
硬目标是指 必须满足 优化提议的目标。没有作为硬目标配置的目标被成为软目标。您可以将软目标视为 best effort 目标:它们不需要在优化建议方面满足,但包含在优化计算中。
Cruise Control 将计算满足所有硬目标以及尽可能多的软目标(按优先级顺序)的优化建议。满足所有硬目标的优化方法由 Analyzer 拒绝,不会向用户发送。
例如,您可能有一个软目标来在集群间平均分配主题的副本(主题分布目标)。如果这样做可让所有配置的硬目标满足,则 Cruise Control 将忽略这个目标。
在 Cruise Control 中,预设了以下 主要优化目标 :
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
要更改硬目标,编辑 cruisecontrol.properties 文件的 hard.goals 属性,并使用其完全限定的域名指定目标。
增加硬目标数量可减少减少减少减少减少减少控制将计算并生成有效优化方案的可能性。
14.5.4. 主要优化目标 复制链接链接已复制到粘贴板!
所有用户都提供了主要的优化目标。不列在主要优化目标中未列出的目标不适用于 Cruise Control 操作。
以下主要优化目标在 cruisecontrol.properties 文件的 goals 属性中预先设置(以降序排列):
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
为降低复杂度,建议不要更改预先设定的主要优化目标,除非需要完全排除一个或多个目标来生成优化建议。如果需要,可在默认的优化目标配置中修改主要优化目标的优先级顺序。
要修改预设主要优化目标,以降序在 goals 属性中指定目标列表。使用完全限定域名,如 cruisecontrol.properties 文件中所示。
您必须至少指定一个主要目标,否则控制将崩溃。
如果更改了预先设置的主要优化目标,您必须确保配置的 hard.goals 是您配置的主要优化目标的子集。否则,在生成优化方案时出现错误。
14.5.5. 默认优化目标 复制链接链接已复制到粘贴板!
Cruise Control 使用默认优化 目标列表来生成 缓存的优化建议。更多信息请参阅 第 14.6 节 “优化提议概述”。
您可以通过设置 用户提供的优化目标来覆盖默认的优化目标。
以下默认优化目标在 cruisecontrol.properties 文件的 default.goals 属性中预先设置,以降序排列:
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal
您必须至少指定一个默认目标,否则控制将崩溃。
要修改默认优化目标,请在 default.goals 属性中指定目标列表,以降序排列。默认目标必须是主要优化目标的子集;使用完全限定域名。
14.5.6. 用户提供的优化目标 复制链接链接已复制到粘贴板!
用户提供的优化目标 缩小了特定优化提议的配置的默认目标。您可以根据需要设置它们,作为对 /rebalance 端点的 HTTP 请求中的参数。更多信息请参阅 第 14.9 节 “生成优化方案”。
用户提供的优化目标可为不同的场景生成优化方案。例如,您可能想在不考虑磁盘容量或磁盘利用率的情况下优化 Kafka 集群中的领导副本分布。因此,您将向 /rebalance 端点发送一个请求,该端点包含领导副本分发的一个目标。
用户提供的优化目标必须:
要忽略以优化提议中的配置的硬目标,请在请求中添加 skip_hard_goals_check=true 参数。