干货 | 起底eBay Flink的上云之路
导读
Apache Flink作为低延迟、高吞吐的大数据计算引擎,在实时数据处理领域有着优越的地位。本文将从集群生命周期管理、Job生命周期管理、Job快照管理三个方面介绍eBay Rheos Team如何将Flink算力服务化、便捷化。希望能给同业人员相应的借鉴与启发。
本文将分享我们在eBay内部如何提供Flink服务的端到端管理,以解决业务开发者的后顾之忧,让他们专注于业务领域的创新,而无需烦心平台层面的维护。
从平台提供者角度,为了让Flink服务更触手可及并稳定可靠地运行,我们需要完整的组件来支撑。而云基础设施高度动态的运行时特征,也决定了平台需要具备更加弹性的机制来保证Flink集群的容错性和云原生特性。
为此,我们支持JM的Active-Standby架构,通过Zookeeper来实现主备之间的快速切换。
跟Tess交互,实现集群从构建、配置更改、伸缩扩展到销毁删除,这些过程涉及到复杂的元数据管理和事件处理。NAP Service(MilkyWay)是eBay内部广泛使用的Tess应用管理平台,通过定义CRD(Custom Resource Definition)来管理应用的状态和组件之间的依赖,并提供接口以操作相应组件,此处可类比成k8s的Operator。
Flink集群的构建和维护正是依赖于Milkyway的这种能力,通过集成Milkyway接口,实现集群层面的生命周期管理,详见图1。在这一过程中,我们设计实现了丰富的运维工作流,以支持不同业务场景下集群的演化和伸缩,这些工作流运行于eBay自研的工作流引擎NAP Workflow之上。
图1(点击可查看大图)
二、Job生命周期管理
图2(点击可查看大图)
图3(点击可查看大图)
Flink原生支持job的checkpoint机制,通过定期给任务内部的状态数据打快照而实现job的容错能力。为实现高可用,这些快照数据都需要落盘存储到指定的集群内共享目录。然而,在云环境下,用户很难知道哪些目录可用。为此,我们设计实现了一系列的定制和增强,使得用户透明无感地享受到job的容错能力。
首先,我们为集群内的每个Pod以local-volume的形式挂载Cephfs到指定路径。
而后,我们定制了Flink job状态数据的管理机制,使得触发出来的checkpoint数据都能落到指定目录。
此外,我们还设计了合理的Cephfs目录结构,使得多租户环境下,同一租户建的集群之间能互通数据,而不同租户之间集群的数据互相隔离。
图4(点击可查看大图)
我们为Flink集群的各节点都内置了监控模块,以搜集节点本地的运行时特征。同时借助Prometheus收集各节点数据,汇聚成集群层面的健康指标,当探测到潜在风险时,及时通过AlertManager发出告警通知。节点和job的监控数据也同时发往eBay内部的统一监控平台,以便用户端查看指标报表和订阅异常告警。
人为处理异常告警是一项非常繁琐的运维工作,所以我们还搭建了一套智能运维系统以优化操作。当运维系统收到告警后,经过初检判断是否为假告警,而后根据先前积累的经验,采取一系列补救措施来把集群带回到健康状态。只有当运维系统无法处理或补救措施效果不明显时,系统才会将告警转发至管理员,由人工介入。
五、总结
您可能还感兴趣:
实战 | 总有刁民想害朕——Payments打造360°监控体系的实践
干货 | eBay Kubernetes集群的存储实践实战 | eBay PB级日志系统的存储方案实践SRE重案调查组 第四集 | JVM元数据区的内存泄漏之谜↓点击阅读原文,eBay大量优质职位虚位以待。
我们的身边,还缺一个你!