如何设置2台服务器的Airflow?

时间:2017-07-11 22:34:00

标签: airflow apache-airflow

尝试将Airflow流程拆分为2台服务器。服务器A已经在独立模式下运行,其中包含所有内容,它有DAG,我想在新设置中将其设置为具有附加服务器的worker。

服务器B是将在MySQL上托管元数据数据库的新服务器。

我可以让服务器A运行LocalExecutor,还是必须使用CeleryExecutor? airflow scheduler是否必须在DAG正确的服务器上运行?或者它是否必须在群集中的每个服务器上运行?对进程之间存在哪些依赖关系感到困惑

2 个答案:

答案 0 :(得分:0)

所有气流流程都需要在airflow_home文件夹中包含相同的内容。这包括配置和dags。如果您只希望服务器B运行MySQL数据库,则无需担心任何气流细节。只需在服务器B上安装数据库,然后将airflow.cfg的sql_alchemy_conn参数更改为指向服务器B上的数据库,并从服务器A运行气流initdb。

如果您还想在服务器B上运行气流处理,则必须使用CeleryExecutor查看缩放。

答案 1 :(得分:0)

This article很好地展示了如何将Airflow群集到多台服务器上。

多节点(群集)气流设置

Apache Airflow的一种更正式的设置是将守护程序作为群集分布在多台计算机上。

enter image description here

好处

更高的可用性

如果其中一个工作节点发生故障或被有意地脱机,则群集仍将处于运行状态,并且仍将执行任务。

分布式处理

如果您的工作流包含多个内存密集型任务,那么这些任务将得到更好的分配,从而可以在整个群集中实现更高的数据利用率,并更快地执行任务。

规模化员工

水平

您可以通过向集群添加更多执行程序节点,并允许这些新节点减轻现有节点的负担,来水平扩展集群并分配处理。由于工作人员无需向任何中央机构注册即可开始处理任务,因此可以在不中断群集的情况下打开和关闭计算机。

垂直

您可以通过增加每个节点上运行的celeryd守护程序的数量来垂直扩展集群。这可以通过增加{AIRFLOW_HOME} /airflow.cfg文件中“ celeryd_concurrency”配置中的值来完成。

示例:

celeryd_concurrency = 30

您可能需要增加实例的大小,以支持更多的celeryd进程。这将取决于您在群集上运行的任务的内存和CPU强度。

扩展主节点

您还可以将更多的主节点添加到群集中,以扩展在主节点上运行的服务。这主要是允许您扩展Web服务器守护程序,以防一台机器需要处理太多HTTP请求,或者如果您想为该服务提供更高的可用性。

要注意的一件事是一次只能运行一个Scheduler实例。如果有多个调度程序在运行,则可能会调度单个任务的多个实例。如果您正在运行某种ETL流程,这可能会导致工作流程出现一些重大问题,并导致重复数据显示在最终表中。

如果愿意,还可以将Scheduler守护程序设置为在其自己的专用主节点上运行。

enter image description here

Apache Airflow群集设置步骤

必备条件

  • 以下节点可使用给定的主机名:
    • master1-将具有以下角色:Web服务器,调度程序
    • master2-将具有以下角色:Web服务器
    • worker1-将具有以下角色:Worker
    • worker2-将具有以下角色:Worker
  • 队列服务正在运行。 (RabbitMQ,AWS SQS等)
    • 您可以按照以下说明安装RabbitMQ:安装RabbitMQ
    • 如果您使用RabbitMQ,建议您也将其设置为高可用性集群。设置负载均衡器以代理对RabbitMQ实例的请求。

enter image description here

enter image description here

其他文档