在不同的Docker容器中运行芹菜工人的气流设置?
我在docker容器中运行气流。我已经创建了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用docker网络将这些容器连接起来,方法如下。现在,我的Airflow docker容器正在运行,并使用docker网络连接到其他容器-到目前为止,该过程进展顺利。问题是如何在同一容器中运行在不同的Docker容器中运行芹菜工人的气流设置?,docker,celery,airflow,Docker,Celery,Airflow,我在docker容器中运行气流。我已经创建了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用docker网络将这些容器连接起来,方法如下。现在,我的Airflow docker容器正在运行,并使用docker网络连接到其他容器-到目前为止,该过程进展顺利。问题是如何在同一容器中运行气流Web服务器、气流调度器和气流工作者。经过一些研究,我发现:建议在一个容器中运行一个服务。现在我有两个解决方案 在同一个气流容器中运行多个服务——我想不出一个简单的方法来实现Docker中的
气流Web服务器
、气流调度器
和气流工作者
。经过一些研究,我发现:建议在一个容器中运行一个服务。现在我有两个解决方案
broker\u url='1!'amqp://guest:guest@ksaprice\u rabbitmq:8080/'
,芹菜\u结果\u后端=db+postgresql://developer:user889@ksaprice\u postgres:5432/气流
。这些设置指的是已经在运行不同容器的数据库或rabbitmq—它们不是指运行芹菜和调度器的ip/url,我假设是这样,因为芹菜和调度器在服务器上运行气流Web服务器
、气流调度器
和气流工作者
命令我是新来的蜜蜂和码头工人 花了很多时间后,我找到了以下答案:
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?