14.6. 优化建议概述
optimization proposal 是要生成一个更加均衡的 Kafka 集群、在代理中平均分配分区工作负载的建议概述。
每个优化建议均基于一组用于生成它的 优化目标,受代理资源配置的任何容量限制。
所有优化的提议都是对提议重新平衡的影响的估算。您可以批准或拒绝建议。在不首先生成优化建议的情况下,您无法批准集群重新平衡。
您可以使用以下端点之一运行优化建议:
-
/rebalance
-
/add_broker
-
/remove_broker
14.6.1. 重新平衡端点 复制链接链接已复制到粘贴板!
当您发送 POST 请求来生成优化建议时,您会指定重新平衡端点。
/rebalance
-
通过在集群中的所有代理间移动副本,
/rebalance
端点运行完全重新平衡。 /add_broker
-
在通过添加一个或多个代理扩展 Kafka 集群后,将使用
add_broker
端点。通常,在扩展 Kafka 集群后,新的代理仅用于托管新创建的主题的分区。如果没有创建新主题,则不会使用新添加的代理,现有代理仍保留在同一负载中。通过在向集群添加代理后立即使用add_broker
端点,重新平衡操作会将副本从现有代理移到新添加的代理中。您可以在 POST 请求中将新代理指定为brokerid
列表。 /remove_broker
-
在通过删除一个或多个代理来缩减 Kafka 集群前,会使用
/remove_broker
端点。如果您缩减了 Kafka 集群,则代理也会关闭,即使代理托管副本也是如此。这可能会导致数据不足的分区,并可能导致一些分区处于其最小 ISR(非同步副本)。为了避免这个问题,/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'
curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance'
使用摘要决定是否批准或拒绝优化建议。
- 批准优化建议
-
您可以通过向
/rebalance
端点发出 POST 请求来批准优化建议,并将dryrun
参数设置为false
(默认值true
)。Cruise Control 将提议应用到 Kafka 集群,并启动集群重新平衡操作。 - 拒绝优化建议
-
如果您选择不批准优化方案,您可以更改优化目标或更新任何重新平衡性能调优选项,然后生成另一个提议。您可以在不使用
dryrun
参数的情况下重新发出请求,以生成新的优化建议。
使用优化建议评估重新平衡所需的移动。例如,一个摘要描述了broker 和 in-broker 移动。代理间的重新平衡在不同代理之间移动数据。当您使用 JBOD 存储配置时,可以在同一代理上的磁盘间重新平衡数据。即使您未提前并批准推荐信息,这些信息很有用。
因为在重新平衡时在 Kafka 集群中出现额外的负载,您可能会拒绝优化过程或延迟其批准。
在以下示例中,建议在单独的代理之间重新平衡数据。重新平衡涉及在代理中移动 55 分区副本,总数据 12MB 的数据。虽然分区副本间的移动对性能有高影响,但数据总数不大。如果总数据量较大,您可以在批准重新平衡时拒绝建议或时间,以限制 Kafka 集群的性能的影响。
重新平衡性能调整选项有助于降低数据移动的影响。如果可扩展重新平衡周期,您可以将重新平衡分成较小的批处理。在单一时间点上减少数据移动量可减少集群的负载。
优化建议概述示例
其提案还将 24 个分区领先企业转向不同的代理程序。这需要更改 ZooKeeper 配置,这对性能有较低影响。
平衡度分数是 Kafka 集群在批准优化建议前和之后整体平衡的测量。平衡分数基于优化目标。如果满足所有目标,分数为 100。针对不应满足的每个目标,将降低分数。比较均衡分数以查看 Kafka 集群是否小于重新平衡方法。
provision 状态指示当前集群配置是否支持优化目标。检查置备状态以查看是否应该添加或删除代理。
状态 | 描述 |
---|---|
RIGHT_SIZED | 集群有适当的代理来满足优化目标。 |
UNDER_PROVISIONED | 集群被置备,需要更多代理来满足优化目标。 |
OVER_PROVISIONED | 集群过度置备,需要较少的代理来满足优化目标。 |
UNDECIDED | 状态不相关,或者尚未决定。 |
14.6.3. 优化建议概述属性 复制链接链接已复制到粘贴板!
下表描述了优化建议中包含的属性。
属性 | 描述 |
---|---|
|
在重新平衡操作期间性能影响 :关系非常高。
在 重新平衡操作期间性能影响 :变量.较大的 MB,集群重新平衡需要完成的时间。 |
|
在重新平衡操作期间的性能影响 :相对高,但小于
在 重新平衡操作期间性能影响 :变量.集群重新平衡所需的时间越大,完成集群重新平衡所需的时间。在相同代理上的磁盘间移动大量数据比独立的代理间的影响要小(请参阅"服务" |
| 在优化建议中计算分区副本/领导移动中的主题数量。 您可以使用以下方法之一排除主题:
在
在到 匹配正则表达式的主题会在响应中列出,并将不包括在集群重新平衡中。 |
|
在重新平衡操作期间性能影响 :相对较低。 |
|
|
|
|
| Kafka 集群整体平衡的测量。
Cruise Control 根据多个因素(目标在
|
14.6.4. 缓存的优化工具 复制链接链接已复制到粘贴板!
Cruise Control 根据配置的默认优化目标维护缓存的优化建议。从工作负载模型生成,缓存的优化建议每 15 分钟更新一次,以反映 Kafka 集群的当前状态。
当使用以下目标配置时,返回最新的缓存的优化建议:
- 默认优化目标
- 用户提供的优化目标,这些目标可以通过当前缓存的推荐实现
要更改缓存的优化生成间隔,请编辑 cruisecontrol.properties
文件中的 proposal.expiration.ms
设置。对于快速更改集群,请考虑较短的间隔,但这会增加 Cruise Control 服务器中的负载。