【发布时间】:2021-10-04 23:52:33
【问题描述】:
我在我的计算机上本地运行标准 docker-compose 文件,所有默认值来自气流,气流:2.1.4,postgres:13,redis:最新。当我有一个调度程序实例时,一切都按预期工作,但是当我添加另一个调度程序实例时,我开始遇到锁定问题。
postgres_1 | STATEMENT: SELECT slot_pool.pool AS slot_pool_pool, slot_pool.slots AS slot_pool_slots FROM slot_pool FOR UPDATE NOWAIT
我的相关 docker-compose 文件是
&airflow-common
environment:
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__WEBSERVER__WEB_SERVER_MASTER_TIMEOUT: 360
AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__CORE__STORE_DAG_CODE: 'false'
airflow-scheduler-1:
<<: *airflow-common
command: scheduler
container_name: airflow-scheduler-1
airflow-scheduler-2:
<<: *airflow-common
command: scheduler
container_name: airflow-scheduler-2
文档没有用,因为它提到我可以多次运行“气流调度程序”,它应该可以开箱即用。是否有某种我错过的 HA 设置?
【问题讨论】:
-
它应该开箱即用。文档对此很清楚。我认为 - 如果你有锁定问题,你应该提出一个关于它的 GitHub 问题并包括所有相关细节 - 你的配置设置、你得到的日志错误、来自 Postgres 的日志等。
-
@JarekPotiuk 我们的团队得出的结论是,我们在 Postgres 中未能获得锁而导致的“错误”是预期错误,因为多个调度程序会尝试更新锁,但 n-1 总是会失败.奇怪的是,“错误”在 Postgres 12/13/14 上比在 11 上更频繁地发生。
-
如果您只在 Postgres 中看到锁定错误 - 这是意料之中的。但我们也将在 2.3.0 中对此进行更改 - github.com/apache/airflow/pull/19842,这样日志就不会被那些“假阴性”所淹没。
标签: postgresql airflow airflow-scheduler