high-availability - Airflow 设置以实现高可用性

标签 high-availability airflow

如何在高可用性中部署 apache Airflow (正式称为 airbnb 的 Airflow )调度程序?

我不是在询问显然应该在高可用性配置中部署的后端 DB 或 RabbitMQ。

我的主要关注点是调度程序 - 有什么特别需要做的吗?

最佳答案

经过一番挖掘,我发现同时运行多个调度程序是不安全的,这意味着开箱即用 - 在高可用性环境中使用 Airflow 调度程序是不安全的。

Airflow 团队计划通过在 DAG 数据结构上添加锁定机制来解决这个问题,但这还没有实现(我通过运行 2 个调度程序进行检查,发现它们调度了相同的 dag 实例,这并不好)。
这是在此处描述的:
https://groups.google.com/forum/#!topic/airbnb_airflow/-1wKa3OcwME

我确实找到了一种方法来解决这个高可用性问题,方法是用我自己的代码包装调度程序并使用集群工具进行领导者选举(我个人为此使用了 consul)。 This way only the elected master is running the scheduler and when the master is down the slave replaces him.

当您在高可用性环境中使用 Airflow 时,请考虑这一点,因为开箱即用, Airflow 调度程序目前不适合于此(除非您自己解决此问题)。

编辑 - 主从解决方案的另一种方法是使用集群管理器/调度程序来确保只有一个 Airflow 调度程序实例始终可用。这种方法依赖于您拥有的集群管理器的自我修复能力。例如,mesos 和 nomad 都支持这种配置(我个人选择了 nomad,因为它的简单性)。

关于high-availability - Airflow 设置以实现高可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572079/

相关文章:

airflow - 如何停止 Airflow DAG?

etl - Apache ·尼菲vs Apache ·艾弗洛vs Apache ·猎鹰?在以下情况下哪个最合适?

sql-server - 带有 SQL Server 后端和 pyodbc 的 Airflow Scheduler

kubernetes - 使用 kubernetes executor 时无法找到 Airflow-dag_id 问题

python - Airflow mysql 到 gcp Dag 错误

kubernetes - 超时尝试为检查点作业启动 flink 作业主机

database-design - 如何学习设计高度事务性的系统?

php - 如何检查 apache 和 php-fpm 配置是否合适(不要太高或太低)

java - Java Http Server 如何可扩展,或者如何使其可扩展?

jenkins - HA Jenkins 设置