Cruise Control是一个Kafka负载平衡组件,可以在大型Kafka集群中安装使用。在添加或删除Kafka代理时,Cruise Control可以根据特定条件自动平衡分区。
Cruise Control的体系结构由负载监控器、分析器、异常检测器和执行器组成,如下图所示。
负载监控器
基于标准Kafka指标和资源指标生成集群工作负载模型,以利用磁盘、CPU、字节输入速率和字节输出速率。将集群模型输入到异常检测器和分析器中。
分析仪
根据用户提供的优化目标以及来自Load Monitor的集群工作负载模型,生成优化建议。可以设定硬目标和软目标。必须实现硬目标,而如果达到硬目标,则软目标将无法实现。如果优化结果违反了硬目标,则优化将失败。
异常检测器
负责检测以下异常:
异常现象 | 原因 | 结果 |
---|---|---|
Broker失败 | 非空Broker崩溃或离开集群。 | Cruise Control通过删除故障的broker来修复集群。 |
违反目标 | 优化被违反。 | 如果启用了自我修复,Cruise Control会自动分析工作负载并执行优化建议。 |
磁盘故障 | 非空磁盘死亡。 | 如果启用了自我修复功能,则Cruise Control会将所有脱机副本移至正常代理。 |
指标异常 | 收集的指标异常。 | 可能会先降级,如果异常仍然存在,请根据self.healing.slow.brokers.removal.enabled配置删除速度慢的broker 。 |
执行器
执行优化建议,执行建议时可以安全地中断它。执行始终是资源感知的过程。
检索指标
Cruise Control使用Kafka存储和检索其指标,该指标由Metric Fetcher读取。
在负载监视器中,Metric Fetcher Manager负责协调所有采样任务:Metric采样任务,Bootstrap任务和线性模型训练任务。
每个采样任务都由配置数量的Metric Fetcher线程执行。每个Metric Fetcher线程使用一个可插入的Metric Sampler来获取样本。每个Metric Fetcher都在集群中分配了几个分区以获取样本。指标标准样本由指标标准样本聚合器组织,该指标标准聚合器根据指标标准样本的时间戳将每个指标标准样本放入工作负载快照中。
集群工作负载模型是负载监视器的主要输出。集群工作负载模型反映了集群的当前副本分配,并提供了移动分区或副本的接口。分析器使用这些接口来生成优化解决方案。
样本存储区存储指标标准和训练样本以供将来使用。
借助指标标准采样器,您可以将Cruise Control部署到各种环境并与现有的指标标准系统一起使用。
在Cloudera环境中使用Cruise Control时,将HttpMetricsReporter 指标报告给Cloudera Manager时间序列数据库。结果,可以使用Cloudera Manager读取Kafka指标。