Airflow Docker部署
外观
Airflow Docker部署[编辑 | 编辑源代码]
Airflow Docker部署是指使用Docker容器技术来运行Apache Airflow工作流管理系统的过程。这种方法简化了环境配置,提高了可移植性,并支持快速扩展。本指南将详细介绍从基础配置到生产级部署的全过程。
概述[编辑 | 编辑源代码]
Docker容器化部署解决了Airflow传统部署中的常见痛点:
- 环境一致性:消除"在我机器上能运行"问题
- 隔离性:各组件(Web服务器、调度器等)可独立运行
- 可扩展性:通过Docker Swarm或Kubernetes轻松扩展
基础部署[编辑 | 编辑源代码]
准备工作[编辑 | 编辑源代码]
需预先安装:
- Docker Engine 20.10+
- Docker Compose 2.0+
官方Docker镜像[编辑 | 编辑源代码]
Airflow提供官方镜像:
# 查看可用标签
docker pull apache/airflow:2.6.2
快速启动[编辑 | 编辑源代码]
使用官方docker-compose.yaml:
version: '3'
services:
postgres:
image: postgres:13
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
webserver:
image: apache/airflow:2.6.2
depends_on:
- postgres
environment:
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
ports:
- "8080:8080"
command: webserver
启动命令:
docker-compose up -d
高级配置[编辑 | 编辑源代码]
自定义Dockerfile[编辑 | 编辑源代码]
扩展官方镜像示例:
FROM apache/airflow:2.6.2
USER root
RUN apt-get update && \
apt-get install -y gcc python3-dev
USER airflow
COPY requirements.txt .
RUN pip install --user -r requirements.txt
环境变量配置[编辑 | 编辑源代码]
关键环境变量:
变量名 | 作用 | 示例值 |
---|---|---|
AIRFLOW__CORE__EXECUTOR | 执行器类型 | LocalExecutor |
AIRFLOW__CORE__LOAD_EXAMPLES | 加载示例 | false |
AIRFLOW__WEBSERVER__SECRET_KEY | 安全密钥 | your-secret-key |
生产环境部署[编辑 | 编辑源代码]
架构设计[编辑 | 编辑源代码]
高可用配置[编辑 | 编辑源代码]
关键组件:
- 数据库: 使用PostgreSQL集群
- 消息队列: Redis/RabbitMQ集群
- 执行器: CeleryExecutor或KubernetesExecutor
示例Celery配置:
services:
redis:
image: redis:6
ports:
- "6379:6379"
worker:
image: custom_airflow_image
command: celery worker
environment:
AIRFLOW__CELERY__BROKER_URL: redis://redis:6379/0
实际案例[编辑 | 编辑源代码]
电商数据处理流水线[编辑 | 编辑源代码]
场景:每日处理订单数据
- 容器组成:
* 1个Webserver容器 * 1个Scheduler容器 * 3个Worker容器 * PostgreSQL容器 * Redis容器
DAG部署方式:
# 将DAGs挂载到所有相关容器
volumes:
- ./dags:/opt/airflow/dags
常见问题[编辑 | 编辑源代码]
性能优化[编辑 | 编辑源代码]
- 数据库连接池:配置SQL_ALCHEMY_POOL_SIZE
- 并行度控制:调整parallelism和dag_concurrency
- 资源限制:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
安全配置[编辑 | 编辑源代码]
1. 使用HTTPS加密Web界面 2. 设置强密码认证 3. 定期轮换加密密钥
数学基础[编辑 | 编辑源代码]
在资源分配中,Worker数量可根据队列理论计算: 其中:
- λ:任务到达率
- μ:单个Worker处理速率
- z:正态分布分位数
扩展阅读[编辑 | 编辑源代码]
- 使用KubernetesOperator实现混合部署
- 基于Prometheus的监控方案
- 自定义XCom后端实现