Pinterest开源Kafka集群自愈和工作负载均衡工具:DoctorKafka

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

Pinterest是一个进行图片分享的社交站点。他们使用Kafka作为中心化的消息传输工具,用于数据摄取、流处理等场景。随着用户数量的增加,Kafka集群也越来越庞大,对它的管理日趋复杂,并变成了运维团队的沉重负担,因此他们研发了Kafka集群自愈和工作负载均衡工具DoctorKafka,最近他们已经在GitHub上将该项目开源。

根据Pinterest的数据工程师Yu Yang的博客文章介绍,该网站已经有1.75亿以上的用户,Pin图片的数量超过了1000亿,目前,他们在云端运行了1000个以上的Kafka broker。

在这样的规模下,每周他们都会遇到Kafka broker的故障,有时候一天之内就会遇到好几次。当broker出现故障时,待命的工程师需要及时将已经处于死亡状态的broker替换掉,从而尽可能减少数据丢失的风险。他们有时候还需要在broker之间转移工作负载,以保证整体负载的均衡。在替换broker和重新平衡工作负载时,需要非常小心地创建和编辑分区重分配文件(partition reassignment file)并手动执行Kafka脚本命令。这些操作会明显增加团队的负担。

为了扩展Kafka服务的运维规模,Pinterest构建了DoctorKafka,这是一项Kafka集群自愈和工作负载均衡的服务。DoctorKafka能够探测到Kafka broker的故障并自动将故障broker的负载转移给健康的broker。现在,Pinterest已经在GitHub上将该项目开源。

高层架构

DoctorKafka由三部分组成,如下图所示:

  图1 DoctorKafka的高层架构

部署在每个broker上的指标收集器(metrics collector),它会定期收集Kafka进程和主机的指标,并将其发布到一个Kafka主题上。在这里,使用了Kafka作为broker的状态存储,这样的话,能够简化DoctorKafka的搭建过程并减少对其他系统的依赖;中心化的DoctorKafka服务会管理多个集群,分析broker的状态指标以探测broker的故障,执行集群自愈和负载均衡的命令。DoctorKafka会将执行的命令记录在另外一个名为“Action Log”主题上;用于浏览Kafka集群状态和执行流程的Web UI页面。图2展现了两个测试集群的管理界面,图3展现了其中一个集群的详细视图。

  图2 DoctorKafka的前端页面

  图3 DoctorKafka的集群视图

需要注意的是,DoctorKafka只会采取有把握的操作,对于不确定的情况,它会给出告警。

DoctorKafka的实际运行过程

每个broker上都会运行一个指标收集器,它会收集Kafka broker输入和输出的网络流量指标以及每个副本(replica)的状态。图4展现了指标收集器所收集的broker的部分状态。即便采用副本配额配置(replication quota setting,在Kafka 0.10.1之后可用的特性),主题分区的重分配通常也会带来额外的网络流量并且会影响到指标,因此,指标收集器在收集指标时会明确报告某个主题分区正在进行重分配。

  图4 指标收集器所收集到的broker状态

DoctorKafka服务启动之后,它会首先读取broker最近24到48小时的状态,基于此,DoctorKafka会推断每个副本工作负载所需的资源。因为Kafka工作负载主要是网络密集型的,DoctorKafka主要关注副本的网络带宽使用情况。

DoctorKafka在启动之后,会阶段性地检查每个集群的状态。当探测到broker出现故障时,它会将故障broker的工作负载转移给有足够带宽的broker。如果在集群中没有足够的资源进行重分配的话,它会发出告警。与之类似,当DoctorKafka进行工作负载平衡时,它会识别出网络流量超出配置的broker,并将工作负载转移给流量更少的broker,或者是执行更优的领导者选举(leader election)方案来转移流量。

DoctorKafka已经在Pinterest运行了数月之久,并帮助其运维人员管理着1000个以上的集群。现在,他们将其开源,对于Pinterest的工程师来说,开源是非常重要的事情。读者可以访问该项目的GitHub地址获取源码和相关文档。


本文转自d1net(转载)

相关文章
|
25天前
|
Kubernetes Cloud Native 开发者
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
99 61
|
4月前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
176 4
|
5月前
|
消息中间件 监控 数据可视化
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
275 2
|
17天前
|
消息中间件 人工智能 安全
秒级灾备恢复:Kafka 2025 AI自愈集群下载及跨云Topic迁移终极教程
Apache Kafka 2025作为企业级实时数据中枢,实现五大革新:量子安全传输(CRYSTALS-Kyber抗量子加密算法)、联邦学习总线(支持TensorFlow Federated/Horizontal FL框架)、AI自愈集群(MTTR缩短至30秒内)、多模态数据处理(原生支持视频流、3D点云等)和跨云弹性扩展(AWS/GCP/Azure间自动迁移)。平台采用混合云基础设施矩阵与软件依赖拓扑设计,提供智能部署架构。安装流程涵盖抗量子安装包获取、量子密钥配置及联邦学习总线设置。
|
3月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
3月前
|
消息中间件 存储 Kafka
2024最全Kafka集群方案汇总
Apache Kafka 是一个高吞吐量、可扩展、可靠的分布式消息系统,广泛应用于数据驱动的应用场景。Kafka 支持集群架构,具备高可用性和容错性。其核心组件包括 Broker(服务器实例)、Topic(消息分类)、Partition(有序消息序列)、Producer(消息发布者)和 Consumer(消息消费者)。每个分区有 Leader 和 Follower,确保数据冗余和高可用。Kafka 2.8+ 引入了不依赖 Zookeeper 的 KRaft 协议,进一步简化了集群管理。常见的集群部署方案包括单节点和多节点集群,后者适用于生产环境以确保高可用性。
193 0
|
4月前
|
消息中间件 存储 Prometheus
Kafka集群如何配置高可用性
Kafka集群如何配置高可用性
|
7月前
|
消息中间件 负载均衡 大数据
揭秘Kafka背后的秘密!再均衡如何上演一场消费者组的‘权力游戏’,让消息处理秒变高能剧情?
【8月更文挑战第24天】Kafka是一款在大数据处理领域备受推崇的产品,以其出色的性能和可扩展性著称。本文通过一个具体案例介绍其核心机制之一——再均衡(Rebalancing)。案例中,“user_activity”主题下10个分区被3个消费者均衡消费。当新消费者加入或原有消费者离开时,Kafka将自动触发再均衡过程,确保所有消费者能有效处理分配给它们的分区。
156 62
|
5月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
5月前
|
消息中间件 分布式计算 监控
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
177 6

热门文章

最新文章