FerroAir
Apache Airflow 3.x-compatible 编排器
一个运行在你自己 Amazon EC2 实例上的自管理 workflow orchestrator:单一静态 Rust 二进制文件,实现 Apache Airflow 3.x scheduler、webserver、REST API v2、triggerer 和 DAG processor。它与 Apache Airflow 3.0 / 3.1 / 3.2 REST API v2 surface 以及 AIP-72 task-execution interface wire-compatible,task body 继续通过 airflow.sdk 在 CPython 上执行。
FerroAir 在你自己的 EC2 上运行 Apache Airflow 3.x workload(Apache Airflow 是开源项目,不是 AWS 服务)。它在 8080 端口提供真正的 Web UI(Leptos single-page app,无需 Node runtime,包含 DAG list、graph、grid、gantt、calendar 和 task-log 视图),在 9080 metrics & admin 端口提供 Prometheus metrics 和 health / live / ready probes,并在 8081 暴露 AIP-72。它从 Amazon S3 同步 DAG,将 metadata 存储在 PostgreSQL 或 SQLite,并运行带 leader election 的 HA scheduler。scheduler、webserver、triggerer 和 DAG processor 被统一到一个静态二进制文件中,并在加固 systemd unit 下运行 — 替代多进程 Python 部署。
面临挑战
Apache Airflow 是一款出色的开源工作流编排器(它不是 AWS 服务),但通常的部署需要将 scheduler、webserver、triggerer 和 DAG processor 作为多个 Python 进程运行,这在运维管理上非常繁重。团队最终不得不手动组装和维护一个多进程栈 — 元数据 DB、broker 和 worker。其需求是在保持 Airflow 兼容性的同时,使编排层运行起来更简单。
工作原理
- 1
作为单个 Rust 二进制文件运行
FerroAir 在单个静态 Rust 二进制文件中实现了 Apache Airflow 3.x scheduler、webserver、REST API v2、triggerer 和 DAG processor,并在加固的 systemd 单元下统一运行。它运行在您自己的 Amazon EC2 实例上,而不是多进程的 Python 部署。
- 2
任务仍在 CPython 上运行
FerroAir 在 Rust 中管理 scheduler 滴答循环、DAG 文件夹监视器、REST API、元数据访问、领导者选举和 executor 分发。任务主体继续通过上游的 airflow.sdk,在 Apache Airflow AIP-72 任务执行接口上在 CPython 上运行。
- 3
接入您现有的状态
DAG 从 Amazon S3 存储桶(或本地磁盘)同步,元数据存储在 PostgreSQL 或 SQLite 中。Web UI 运行在端口 8080,Prometheus 指标和探测器运行在端口 9080,AIP-72 运行在端口 8081。
产品亮点
Airflow 3.x-compatible:REST API v2 + AIP-72;task body 继续通过 airflow.sdk 在 CPython 上运行。
一个静态 Rust 二进制文件(scheduler + webserver + triggerer + DAG processor),替代多进程 Python 部署;真正的 Leptos Web UI(无需 Node)。
DAG 从 S3 同步,metadata 存储在 PostgreSQL / SQLite,带 leader election 的 HA scheduler;包含 CloudFormation Quick Start。
包含内容
- Amazon Linux 2023 AMI(x86_64,运行在 c7i / m7i 系列实例上)
- 实现 Apache Airflow 3.x scheduler、webserver、REST API v2、triggerer 和 DAG processor 的单个静态 Rust 二进制文件(与 Apache Airflow 3.0/3.1/3.2 REST API v2 表面以及 AIP-72 任务执行接口线路兼容)
- 作为 Leptos 单页应用程序构建的原生 Web UI(无需 Node 运行时,端口 8080),具有 DAG 列表、图表、网格、甘特图、日历和任务日志视图
- 用于 Python worker 的专用指标 and 管理端口 9080(Prometheus 指标以及 health、live 和 ready 探测器)和 AIP-72 端口 8081
- Amazon S3 DAG 同步、PostgreSQL 或 SQLite 元数据(Apache Airflow 3 Alembic 兼容架构),以及具有领导者选举故障转移的 HA scheduler
- 用于从现有托管 Apache Airflow 部署导入连接、变量和池的导入工具,以及包含 runbook、兼容性矩阵和验证步骤的购买后文档
- 无独立的控制平面、无遥测数据回传、无许可证密钥检查(通过您的 AWS 账单按每实例每小时计费,并提供年付选项)
适用场景
在您自己的 Amazon EC2 上以单个、运维更简单的二进制文件运行 Apache Airflow 工作流
通过导入连接、变量和池,将编排层从托管 Apache Airflow 部署进行迁移的团队
需要继续与现有的 Apache Airflow REST API v2 客户端配合工作的现有工作负载
完全在您自己的 VPC 内运行编排器,无独立的控制平面,也无遥测数据回传
常见问题
它与 Apache Airflow 的兼容性如何?
FerroAir 与 Apache Airflow 3.0、3.1 和 3.2 的 REST API v2 表面以及 Apache Airflow AIP-72 任务执行接口线路兼容。由于实现了 REST API v2 表面,现有的 Apache Airflow REST API v2 客户端均可获得支持。有关完整的兼容性矩阵,请参阅产品文档。
我的 Python 任务代码还能运行吗?
是的。任务主体继续通过上游的 airflow.sdk 并基于 Apache Airflow AIP-72 任务执行接口在 CPython 上执行。Rust 二进制文件负责调度器滴答循环、DAG 文件夹监听器、REST API、元数据访问、领导者选举和执行器分发——任务执行运行时本身仍为 CPython。
这是 AWS 服务的替代品吗?
Apache Airflow 是一个开源项目,不属于 AWS 服务。FerroAir 是一款自托管的工作流编排器,可在您自己的 Amazon EC2 实例上运行这些 Apache Airflow 3.x 工作负载。它以普通 Amazon Linux 2023 AMI 的形式交付,您可以在自己的 VPC 内运行它。
我能从现有的 Airflow 部署迁移吗?
可以。FerroAir 可以从现有的托管 Apache Airflow 部署中导入连接、变量和池,并同步您的 DAG 文件夹。元数据使用 Apache Airflow 3 Alembic 兼容模式存储在 PostgreSQL 或 SQLite 中。AMI 上的购买后文档将引导您使用导入工具、运行手册、兼容性矩阵和进行验证。
HA 与机密管理是如何工作的?
HA 调度器通过领导者选举(openraft)进行故障转移;运行多个实例,领导者选举会提升备用实例。机密可以从环境变量、AWS Secrets Manager、GCP Secret Manager、Azure Key Vault 或 Vault 中解析,连接和变量使用 Fernet 进行加密。身份验证支持 FAB 验证、OAuth、OIDC、SAML 和 LDAP。
计费模式
按小时收取软件费用 + EC2(c7i / m7i 级,x86)。按实例类型计量,可选年付。