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

Airflow UI配置DB连接后密码丢失导致DAG连接失败问题

问题根因

该故障核心是连接配置的持久化存储/读取链路异常,UI端测试连接成功不代表配置已正确持久化——UI的「测试连接」逻辑是直接调用当前页面表单内暂存的明文参数发起请求,不会读取落库后的解密数据,因此测试结果无法反映存储链路是否正常。
常见触发场景分两类:

  • Fernet Key配置不匹配:Airflow不会明文存储连接密码,所有录入的密码都会使用airflow.cfg中[core]段配置的fernet_key做对称加密后存入元数据库。如果Webserver、Scheduler、Worker、Triggerer各组件加载的fernet_key不一致,或是服务重启后fernet_key被自动重新生成覆盖,之前存储的加密密码就无法正常解密,UI端重新打开配置时会显示密码为空,DAG运行时拉取连接也拿不到有效凭证。
  • 元数据库指向不一致:分布式/容器化部署场景下,如果不同Airflow组件连接的元数据库不是同一个(比如Webserver连本地临时sqlite、Worker连远程库,或是负载均衡下多组Webserver实例连了互不相通的元数据库),在UI端录入的配置根本不会同步到执行DAG的组件读取的库中,切到其他Webserver实例查看配置时也会出现密码丢失的情况。
修复步骤
  1. 统一全组件Fernet Key配置
    登录所有部署Airflow组件的节点,逐一核对airflow.cfg中[core]段的fernet_key值,确保所有节点完全一致。如果之前使用的是Airflow首次启动自动生成的随机key(没有手动固定配置),执行以下命令生成固定合规的Fernet Key:
    python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
    
    将生成的key替换所有节点的fernet_key配置项,完成后重启所有Airflow相关服务。
  2. 统一全组件元数据库指向
    核对所有节点airflow.cfg中[database]段的sql_alchemy_conn连接串,确保所有组件都指向同一个元数据库;容器化部署场景需要同步核对AIRFLOW__DATABASE__SQL_ALCHEMY_CONN环境变量在所有容器中的值是否一致,避免配置挂载错误导致的连接串错配。

    注意:多组件部署场景不要使用默认的SQLite作为元数据库,SQLite不支持并发写入,极易出现数据写入后读取异常的问题,建议使用MySQL或PostgreSQL作为元数据库存储。

  3. 重新录入连接凭证
    上述配置校验修正、所有服务重启完成后,重新进入UI打开对应DB连接配置页,重新输入密码后保存。保存后退出页面重新进入,确认密码字段未消失,再触发DAG运行验证连接可用性即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:36:16