Airflow 部署要点
Airflow 不是单进程应用,而是一组组件共用同一个元数据库和同一份 DAG 目录:scheduler 解析并触发任务、webserver 提供界面与 API、worker 执行任务、triggerer 承接 deferrable(延迟型)任务。生产部署先要定下三件基础件:可靠的元数据库、带队列的执行器、所有组件都能看到同一份 DAG 文件;容器化场景通常直接用官方 Helm Chart。
基本信息
| 元数据库 | PostgreSQL(官方推荐;SQLite 仅适合试用) |
|---|---|
| 执行器 | LocalExecutor 单机多进程 / CeleryExecutor 多机队列 / KubernetesExecutor 每任务一 Pod |
| DAG 分发 | 共享存储挂载,或容器化用 git-sync 边车同步 |
| 组件版本 | scheduler、webserver、worker、triggerer 必须保持同一版本 |
| 容器化 | 官方 Helm Chart(apache-airflow/airflow),组件可独立扩缩 |
| 升级顺序 | 先备份元数据库,再执行数据库迁移,最后滚动组件 |
典型使用场景
- 从单机试用到生产:把 SQLite 换成 PostgreSQL,执行器从 Sequential 换成队列型
- 容量扩展:任务排队严重时先加 worker,再按池(pool)与队列拆分关键链路
- DAG 集中管理:用 git-sync 或共享存储保证所有 worker 看到同一份代码
- 版本升级:先在预发跑数据库迁移与全量 DAG 解析校验,再升生产
- 环境隔离:用连接(Connection)与变量(Variable)区分环境,不把口令写进代码
Helm 安装骨架
Helm 安装骨架
# 添加官方仓库并安装:执行器、DAG 持久化、元数据库按需定制
helm repo add apache-airflow https://airflow.apache.org
helm repo update
helm upgrade --install airflow apache-airflow/airflow \
-n airflow --create-namespace \
--set executor=CeleryExecutor \
--set dags.persistence.enabled=true \
--set webserver.defaultUser.enabled=true # 首次部署后建议关闭并接单点登录升级前校验清单
升级前校验清单
# 1) 元数据库迁移:2.7 起用 airflow db migrate(旧命令为 db upgrade)
airflow db migrate
# 2) 全量解析 DAG,语法错误与导入错误会直接暴露
airflow dags list
airflow dags list-import-errors
# 3) 检查调度器进程存活与最近心跳
airflow jobs check --job-type SchedulerJob --limit 1执行器选型对照
| 执行器 | 适用规模 | 主要约束 |
|---|---|---|
| LocalExecutor | 单机多进程,中小规模 | 无法跨机器扩 worker,单点风险高 |
| CeleryExecutor | 多机队列,需消息中间件与结果后端 | 队列与 worker 需按池划分,避免关键任务被挤占 |
| KubernetesExecutor | 每任务一 Pod,隔离性好 | 启动有延迟,依赖镜像分发与集群配额 |
| SequentialExecutor | 仅调试用 | 串行执行,生产不可用 |
DAG 解析是最容易出问题的环节:把全量解析检查放进发布流程(或让 git-sync 同步后先跑一次解析),能在切换流量前拦住导入错误导致的 DAG 消失。
元数据库迁移通常不可平滑回退,升级前先做备份;调度器、worker、webserver 版本不一致时会出现任务状态错乱,滚动升级必须按官方升级指南逐步执行。