跳转到内容

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

生产环境部署[编辑 | 编辑源代码]

架构设计[编辑 | 编辑源代码]

graph TD A[Load Balancer] --> B[Webserver 1] A --> C[Webserver 2] D[Redis] --> E[Worker 1] D --> F[Worker 2] G[Postgres] --> H[Scheduler]

高可用配置[编辑 | 编辑源代码]

关键组件:

  • 数据库: 使用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数量可根据队列理论计算: N=λμ+z1αλμ 其中:

  • λ:任务到达率
  • μ:单个Worker处理速率
  • z:正态分布分位数

扩展阅读[编辑 | 编辑源代码]

  • 使用KubernetesOperator实现混合部署
  • 基于Prometheus的监控方案
  • 自定义XCom后端实现