8.3. 优化调整概述


优化建议是建议 更改的总结,这些更改将产生更为均衡的 Kafka 集群,在代理间更均匀地分配分区工作负载。每个优化建议都基于用于生成 目标的一组优化目标,受 代理资源配置容量限制的影响

KafkaRebalance 自定义资源的 Status.Optimization Result 属性中包含了一个优化建议。提供的信息是完整优化建议摘要。使用摘要决定是否:

  • 批准优化建议。这指示 Cruise Control 将提议应用到 Kafka 集群并启动集群重新平衡操作。
  • 驳回优化建议。您可以更改优化目标,然后产生另一个建议。

所有优化调整都是 空运行 :您无法在不首先生成优化建议的情况下批准集群重新平衡。对可生成的优化说明数量没有限制。

缓存优化建议

整合控制根据配置的默认 优化目标维护缓存优化建议。从工作负载模型生成的缓存优化建议每 15 分钟更新一次,以反映 Kafka 集群的当前状态。如果您使用默认优化目标生成一个优化建议,Cruise Control 将返回最新的缓存建议。

要更改缓存的优化建议刷新间隔,请编辑 Cruise Control 部署配置中的 proposed.expiration.ms 设置。为快速更改集群考虑一个较短的间隔,尽管这会增加 Cruise Control 服务器上的负载。

优化调整的内容

优化建议由两个主要部分组成:

  • 摘要 存储在 KafkaRebalance 资源的状态中
  • 代理负载 存储在 ConfigMap 中,该 ConfigMap 以 JSON 字符串形式包含数据。

摘要概述了建议的群集重新平衡,并指示相关更改的规模。代理负载在建议的重新平衡值前后显示,因此您可以看到对集群中的每个代理的影响。

概述

下表解释了优化建议摘要部分中的属性:

表 8.1. 优化建议中包含的属性
JSON 属性描述

numIntraBrokerReplicaMovements

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

重新平衡操作期间的性能影响 :相对较高,但低于 numReplicaMovements

excludedBrokersForLeadership

尚不支持.返回一个空列表。

numReplicaMovements

在独立代理之间移动的分区副本数。

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

onDemandBalancednessScoreBefore, onDemandBalancednessScoreAfter

对生成优化建议之前和之后的 Kafka 集群的整体 平衡性 进行测量。

分数是通过从 100 减去每个违反软目标的 BalancednessScore 的总和来计算的。海军控件根据以下几个因素为每个优化目标分配 a BalancednessScore,包括优先级 - 在 default.goals 或用户提供的目标列表中的位置。

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

intraBrokerDataToMoveMB

在同一代理的磁盘之间移动的每个分区副本的大小总和(请参阅 numIntraBrokerReplicaMovements)。

重新平衡操作期间的性能影响 :变量.数量越大,集群重新平衡所需的时间也越长。在相同代理的磁盘之间移动大量数据比不同代理之间的影响小(请参阅 dataToMoveMB)。

recentWindows

优化建议所基于的指标窗口数量。

dataToMoveMB

移动到独立代理的每个分区副本的大小总和(请参阅 同时也是 numReplicaMovements)。

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

monitoredPartitionsPercentage

优化建议涵盖 Kafka 集群中分区的百分比。受 排除主题数量的影响.

excludedTopics

如果您在 KafkaRebalance 资源中的 spec.excludedTopicsRegex 属性中指定了正则表达式,则与该表达式匹配的所有主题名称都会在此列出。这些主题不包括在优化建议中的分区副本/领导移动计算中。

numLeaderMovements

领导者将切换到不同副本的分区数量。这涉及对 ZooKeeper 配置的更改。

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

excludedBrokersForReplicaMove

尚不支持.返回一个空列表。

代理负载

代理负载与 JSON 格式字符串存储在 ConfigMap 中(其名称与 KafkaRebalance 自定义资源相同)。此 JSON 字符串由 JSON 对象组成,其中包含每个代理 ID 的密钥,用于链接到每个代理的多个指标。每个指标包含三个值:第一个是应用优化建议前的指标值,第二个是应用 建议后指标的预期值,第三个是前两个值(早于减后)。

要从 ConfigMap 中提取 JSON 字符串,您可以使用以下命令,该命令使用 jq 命令行 JSON 解析器工具:

oc get configmap MY-REBALANCE -o json | jq '.["data"]["brokerLoad.json"]|fromjson|.'

下表解释了优化建议的代理负载 ConfigMap 中包含的属性:

JSON 属性描述

leaders

此代理中作为分区领导的副本数。

replicas

此代理中的副本数。

cpuPercentage

CPU 利用率为定义容量的百分比。

diskUsedPercentage

磁盘利用率为定义容量的百分比。

diskUsedMB

以 MB 为单位的绝对磁盘使用量。

networkOutRate

代理的网络输出率总数。

leaderNetworkInRate

此代理上所有分区领导副本的网络输入率。

followerNetworkInRate

此代理上所有后续副本的网络输入率。

potentialMaxNetworkOutRate

如果这个代理成为当前主机的所有副本的领导,可以实现假设的最大网络输出率。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.