在不同的Docker容器中运行芹菜工人的气流设置?

在不同的Docker容器中运行芹菜工人的气流设置?,docker,celery,airflow,Docker,Celery,Airflow,我在docker容器中运行气流。我已经创建了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用docker网络将这些容器连接起来,方法如下。现在,我的Airflow docker容器正在运行,并使用docker网络连接到其他容器-到目前为止,该过程进展顺利。问题是如何在同一容器中运行气流Web服务器、气流调度器和气流工作者。经过一些研究,我发现:建议在一个容器中运行一个服务。现在我有两个解决方案 在同一个气流容器中运行多个服务——我想不出一个简单的方法来实现Docker中的

我在docker容器中运行气流。我已经创建了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用docker网络将这些容器连接起来,方法如下。现在,我的Airflow docker容器正在运行,并使用docker网络连接到其他容器-到目前为止,该过程进展顺利。问题是如何在同一容器中运行
气流Web服务器
气流调度器
气流工作者
。经过一些研究,我发现:建议在一个容器中运行一个服务。现在我有两个解决方案

  • 在同一个气流容器中运行多个服务——我想不出一个简单的方法来实现Docker中的新蜜蜂
  • 创建单独的容器以运行芹菜工人和气流调度器-但是在aiffort.cfg文件中,与芹菜相关的设置是:
    broker\u url='1!'amqp://guest:guest@ksaprice\u rabbitmq:8080/'
    芹菜\u结果\u后端=db+postgresql://developer:user889@ksaprice\u postgres:5432/气流
    。这些设置指的是已经在运行不同容器的数据库或rabbitmq—它们不是指运行芹菜和调度器的ip/url,我假设是这样,因为芹菜和调度器在服务器上运行
  • 我的问题是:

  • 参考第1点:是否有一种简单的方法可以在同一气流容器中运行
    气流Web服务器
    气流调度器
    气流工作者
    命令
  • 参考第2点:在airflow.cfg中是否有方法将airflow scheduler和airflow worker配置为在单独的docker容器中运行,并使用docker网络将其链接

  • 我是新来的蜜蜂和码头工人

    花了很多时间后,我找到了以下答案:

  • 关于第一个问题: 要在同一个airflow_容器上运行多个服务,请执行:
    docker exec-it airflow_容器bash
    ,现在CLI将连接到airflow_容器,然后运行
    airflow worker
    。对
    气流调度器
    气流花
    重复相同的过程。现在,您将有三个不同的CLI在同一个容器上运行三个服务-这是我发现的最简单的方法
  • 对于第二个问题:这里有一些选项:比如
    aiffair-webserver--hostname=some\u-host--port=some\u-port
    aiffair-flower--hostname=some\u-host--port=some\u-port
    ,在不同的服务器上运行它们。但是对于
    airflow worker
    来说,没有在不同服务器上运行的选项-可能有其他方法在不同服务器上运行worker
    1-我确实安装了所有这些,以使其成为可能

    2-优化的方法是在一台服务器上安装airflow(webserver)+后端DB(Mysql),在另一台服务器上安装queuing(RabbitMQ),在另一组服务器上安装芹菜部分。 贝娄:我将从源头上提到一些东西,这有助于更好地澄清问题:

    CeleryExecutor是一种可以扩展用户数量的方法 工人。要使其工作,您需要设置芹菜后端 (RabbitMQ、Redis,…)并将您的airflow.cfg更改为指向执行器 参数,并提供相关芹菜设置

    以下是对员工的一些必要要求:

    需要安装气流,并且CLI需要位于路径中

    整个系统的气流配置设置应均匀 簇

    在工人身上执行的操作员需要 依赖关系就是在这种情况下遇到的。例如,如果您使用 HiveOperator,需要在该机箱上安装hive CLI,或者 如果使用MySqlOperator,则需要创建所需的Python库 可以在PYTHONPATH中找到

    工人需要有权访问其DAGS_文件夹,而您需要 通过自己的方式同步文件系统。一个常见的设置是 将DAGS_文件夹存储在Git存储库中并跨存储库同步 使用Chef、Puppet、Ansible或任何您用来配置的机器 环境中的计算机。如果你所有的盒子都有一个共同的底座 重要的是,在那里共享管道文件也应该可以


    来源:

    为什么不查看此url并使用此图像来设置整个内容?这是否适用于python 2.7?