14.6. 优化提议概述


optimization proposal 是要生成一个更加均衡的 Kafka 集群、在代理中平均分配分区工作负载的建议概述。

每个优化建议均基于一组用于生成它的 优化目标,受代理资源配置的任何容量限制

所有优化的提议都是对提议重新平衡的影响的估算。您可以批准或拒绝提议。您不能在不生成优化提议的情况下批准集群重新平衡。

您可以使用以下端点之一运行优化方案:

  • /rebalance
  • /add_broker
  • /remove_broker

14.6.1. 重新平衡端点

当您发送 POST 请求来生成优化时,您可以指定一个重新平衡端点。

/rebalance
/rebalance 端点会在集群中的所有代理中移动副本来运行完整的重新平衡。
/add_broker
add_broker 端点在通过添加一个或多个代理来扩展 Kafka 集群后使用。通常,在扩展 Kafka 集群后,新的代理仅用于托管新创建的主题的分区。如果没有创建新主题,则不会使用新添加的代理,现有代理仍保留在同一负载中。通过在向集群添加代理后立即使用 add_broker 端点,重新平衡操作会将副本从现有代理移到新添加的代理中。您可以在 POST 请求中将新代理指定为 brokerid 列表。
/remove_broker
在通过删除一个或多个代理缩减 Kafka 集群前,使用 /remove_broker 端点。如果您缩减 Kafka 集群,代理也会关闭,即使它们的主机副本也是如此。这可能导致死机分区,并可能导致某些分区处于最小 ISR 下(in-sync 副本)。为了避免这个问题,/remove_broker 端点会从要删除的代理中移出副本。当这些代理不再托管副本时,可以安全地运行缩减操作。您可以在 POST 请求中指定您移除的代理程序作为 brokerid 列表。

通常,通过在代理分散负载,使用 /rebalance 端点来重新平衡 Kafka 集群。仅在要扩展集群或缩减集群并相应地重新平衡副本时,才使用 /add-broker 端点和 /remove_broker 端点。

运行重新平衡的步骤实际上在三个不同的端点间是相同的。唯一区别是列出已添加或将要删除的代理到请求中的代理。

14.6.2. 批准或拒绝优化提议

优化建议摘要显示了建议的更改范围。该摘要会返回通过 Cruise Control API 对 HTTP 请求的响应。

当您向 /rebalance 端点发出 POST 请求时,在响应中返回一个优化的提议概述。

返回优化方案概述

curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance'
Copy to Clipboard Toggle word wrap

使用摘要来确定是否批准或拒绝优化提议。

批准优化方案
您可以通过向 /rebalance 端点发出 POST 请求并将 dryrun 参数设置为 false (默认值 true)来批准优化的提议。Cruise Control 将提议应用到 Kafka 集群,并启动集群重新平衡操作。
拒绝优化的提议
如果您选择不批准优化方案,您可以更改优化目标更新任何重新平衡性能调优选项,然后生成另一个提议。您可以重新发送一个没有 空运行 参数的请求,以生成新的优化提议。

使用优化方案来评估重新平衡所需的移动。例如,摘要描述了 inter-broker 和 in-broker 的移动。在不同的代理间重新平衡数据移动数据。在使用 JBOD 存储配置时,代理会在同一代理上的磁盘间移动数据。即使您无法继续并批准提议,这些信息也很有用。

因为在重新平衡时在 Kafka 集群中出现额外的负载,您可能会拒绝优化过程或延迟其批准。

在以下示例中,建议建议在单独的代理之间重新平衡数据。重新平衡涉及在代理间移动 55 分区副本(总计 12MB 数据)。虽然分区副本间的移动对性能有高影响,但数据总数不大。如果总数据较大,您可以拒绝提议,或当批准重新平衡时限制 Kafka 集群性能的影响。

重新平衡性能调优选项有助于降低数据移动的影响。如果可扩展重新平衡周期,您可以将重新平衡分成较小的批处理。一次减少数据移动可减少群集的负载。

优化建议概述示例

Optimization has 55 inter-broker replica (12 MB) moves, 0 intra-broker
replica (0 MB) moves and 24 leadership moves with a cluster model of 5
recent windows and 100.000% of the partitions covered.
Excluded Topics: [].
Excluded Brokers For Leadership: [].
Excluded Brokers For Replica Move: [].
Counts: 3 brokers 343 replicas 7 topics.
On-demand Balancedness Score Before (78.012) After (82.912).
Provision Status: RIGHT_SIZED.
Copy to Clipboard Toggle word wrap

提议也会将 24 个分区领导人移到不同的代理中。这需要一个对 ZooKeeper 配置的更改,这对性能有较低的影响。

均衡的分数是在处理建议前和之后的 Kafka 集群总体平衡的衡量。均衡分数基于优化目标。如果满足所有目标,则分数为 100。对于不满足的每个目标,分数降低。比较 balancedness 分数,以查看 Kafka 集群是否少于其重新平衡。

provision 状态指示当前集群配置是否支持优化目标。检查置备状态,以查看是否应该添加或删除代理。

Expand
表 14.2. 优化提议置备状态
状态描述

RIGHT_SIZED

集群有适当的代理程序,以满足优化目标。

UNDER_PROVISIONED

集群被置备,需要更多代理来满足优化目标。

OVER_PROVISIONED

集群被过度置备,需要较少的代理来满足优化目标。

UNDECIDED

状态不相关,但尚未决定。

14.6.3. 优化建议概述属性

下表描述了优化提议中包含的属性。

Expand
表 14.3. 优化建议概述中包含的属性
属性描述

n inter-broker replica (y MB) moves

N :在不同代理间移动的分区副本数量。

重新平衡操作期间的性能影响 :相对高.

Y MB :将移动到单独的代理的每个分区副本的大小总和。

重新平衡操作期间的性能影响 :变量.集群重新平衡所需的时间越大,完成集群重新平衡所需的时间。

n intra-broker replica (y MB) moves

N :在集群代理的磁盘之间传输的分区副本数量。

重新平衡操作期间的性能影响 :相对高,但小于 代理副本的移动

Y MB :将在同一代理上的磁盘之间移动的每个分区副本的大小总和。

重新平衡操作期间的性能影响 :变量.集群重新平衡所需的时间越大,完成集群重新平衡所需的时间。在同一代理上的磁盘间移动大量数据的影响要低于独立的代理(请参阅 交互副本移动)。

n 排除的主题

在优化建议中,除计算分区副本/领导移动的相关主题数量。

您可以使用以下方法之一排除主题:

cruisecontrol.properties 文件中指定 topics.excluded.from.partition.movement 属性中的正则表达式。

在对 /rebalance 端点的 POST 请求中,在 exclude_topics 参数中指定一个正则表达式。

与正则表达式匹配的主题在响应中列出,并将包含在集群重新平衡中。

N 领导移动

N :其领导要切换到不同副本的分区数量。这包括对 ZooKeeper 配置的更改。

重新平衡操作期间的性能影响 :相对较低的.

n recent windows

N :优化提议基于的指标窗口数量。

涵盖的分区的%

n% : Kafka 集群中由优化提议覆盖的分区百分比。

On-demand Balancedness Score Before (nn.yyy) After (nn.yyy)

Kafka 集群总体平衡的测量。

Cruise Control 根据多个因素(目标在 default.goal 或用户提供的目标列表中,为每一个优化目标分配了一个 Balancedness Score)。按需保证分数的计算方式为:从 100 中减去每个违反的软目标 Balancedness Score 的总和。

Before 分数基于 Kafka 集群的当前配置。After 分数基于生成的优化提议。

14.6.4. 缓存的优化方案

Cruise Control 根据配置的默认优化目标维护缓存的优化建议。从工作负载模型生成,缓存的优化方案每 15 分钟更新一次,以反映 Kafka 集群的当前状态。

当使用以下目标配置时,返回最新的缓存的优化方案:

  • 默认优化目标
  • 用户提供的优化目标,由当前缓存的提议达到

要更改缓存的优化提议刷新间隔,请编辑 cruisecontrol.properties 文件中的 proposal.expiration.ms 设置。对于快速更改的集群,请考虑一个较短的间隔,但这会增加 Cruise Control 服务器中的负载。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部