You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除Docker Compose Redis配置后Airflow仍依赖Redis的故障排查

解决Airflow调度器卡启动、连Redis报错的问题

先明确核心问题

CeleryExecutor 必须搭配消息队列才能运行,默认用的是Redis。你把Redis的服务配置删了,但没替换成其他兼容的消息队列(比如RabbitMQ),Airflow还是会按默认配置尝试连接Redis,自然出现解析错误。

一步步排查修复

1. 检查Airflow的Celery配置参数

哪怕docker-compose里删了Redis服务,Airflow的AIRFLOW__CELERY__BROKER_URL和AIRFLOW__CELERY__RESULT_BACKEND这两个环境变量可能还是默认的Redis地址(比如redis://redis:6379/0)。得在docker-compose的环境变量里明确替换:

  • 如果改用RabbitMQ,配置如下:
    AIRFLOW__CELERY__BROKER_URL: amqp://user:password@rabbitmq:5672//
    AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
    
  • 注意:RESULT_BACKEND可以用PostgreSQL,但Broker必须是消息队列(Redis或RabbitMQ二选一)

2. 排查本地配置文件的干扰

如果之前把本地的airflow.cfg挂载到容器里,就算docker-compose改了环境变量,容器也会优先读取本地配置。检查docker-compose里是否有类似挂载:

volumes:
  - ./airflow.cfg:/opt/airflow/airflow.cfg

有的话,打开本地airflow.cfg,修改celery板块的broker_url和result_backend为正确值,或者直接移除这个挂载(推荐用环境变量管理配置,更灵活)。

3. 彻底清理残留的旧配置

你之前删了卷、容器、镜像,但可能还有遗漏:

  • 检查本地dags、logs、plugins目录里的隐藏缓存文件
  • 执行以下命令彻底清理:
    docker-compose down --volumes --remove-orphans
    rm -rf ./dags ./logs ./plugins ./airflow.cfg
    docker system prune -af
    

4. 确认docker-compose的服务完整性

如果改用RabbitMQ,你的docker-compose里必须包含这些核心服务:

  • postgres(数据库)
  • rabbitmq(消息队列)
  • webserver
  • scheduler
  • worker
  • triggerer

验证修复效果

重新启动后,查看调度器日志:

docker-compose logs -f scheduler

如果不再出现Redis连接错误,且日志显示调度器启动后进入正常的任务调度循环,说明问题解决。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:50:14