第 14 章 使用 Cruise Control 进行集群重新平衡
Cruise Control 是一个用于自动化 Kafka 操作的开源系统,如监控集群工作负载、根据预定义的限制重新平衡集群,并检测和修复异常情况。它包含四个主要组件 - Load Monitor、Anomaly Detector 和 Executor- 以及用于客户端交互的 REST API。
您可以使用 Cruise Control 来 重新平衡 Kafka 集群。Red Hat Enterprise Linux 上 Cruise Control for AMQ Streams 作为一个独立的 zipped 发行版本提供。
AMQ Streams 使用 REST API 来支持以下 Cruise Control 功能:
- 从优化目标生成优化方案。
根据优化提议,重新平衡 Kafka 集群。
- 优化目标
优化目标描述了通过重新平衡实现的特定目标。例如,在代理之间更均匀地分发主题副本。您可以更改通过配置包含的目标。目标定义为一个硬目标或软目标。您可以通过 Cruise Control 部署配置来增加硬目标。您还有适合以下类别的主要、默认和用户提供的目标。
- 硬目标是 预先设置的,必须符合才能成功进行优化的提议。
- 对于成功进行优化方案,不需要满足软目标。如果意味着满足所有硬目标,可以排在设置它们。
- 主要目标从 Cruise Control 中继承。有些情况下会预先设置为一个硬目标。默认使用主要目标来优化提议。
- 默认目标 与主目标相同。您可以指定您自己的默认目标集合。
- 用户提供的目标是配置用于生成特定优化器的默认目标子集。
- 优化方案
优化建议由您要从重新平衡实现的目标组成。您生成了优化的提议,以创建建议的更改摘要以及重新平衡时可能的结果。以特定优先级顺序对目标进行评估。然后,您可以选择批准或拒绝提议。您可以通过调整的目标集来拒绝再次运行该提议。
您可以通过向以下 API 端点之一发出请求并批准优化建议。
- /rebalance 端点用于运行一个完整的重新平衡操作。
- 在扩展 Kafka 集群时添加代理后,/add_broker 端点以重新平衡。
- 在缩减 Kafka 集群时删除代理前,/remove_broker 端点以重新平衡。
您可以通过配置属性文件来配置优化目标。AMQ Streams 提供 Cruise Control 的示例属性文件。
目前还不支持其他 Cruise Control 功能,包括自我修复、通知、编写目标以及更改主题复制因素。
14.1. 为什么使用 Cruise 控制? 复制链接链接已复制到粘贴板!
Cruise 控制减少了运行高效和均衡 Kafka 集群所涉及的时间和工作量。
典型的集群会随时间推移而变得不会被加载。处理大量消息流量的分区可能不均匀分布到可用的代理中。要重新平衡集群,管理员必须监控代理上的负载,并将忙碌的分区手动分配给具有备用容量的代理。
Cruise Control 自动执行集群重新平衡过程。它根据 CPU、磁盘和网络负载,构建了基于 CPU、磁盘和网络负载的资源利用率 的工作负载模型,并生成优化方案(您可以批准或拒绝)以实现更大的分区分配。一组可配置的优化目标用于计算这些提议。
当您批准优化的提议时,Cruise Control 会将它应用到 Kafka 集群。当集群重新平衡操作时,代理 pod 会更有效地使用,且 Kafka 集群会更均匀地平衡。