在不同的Docker容器中运行芹菜工人的气stream设置?
我在Docker容器中运行Airflow。 我已经创build了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用dockernetworking连接这些容器 – 遵循这篇不错的文章 。 现在,我的气streamdocker集装箱正在运行,并使用dockernetworking连接到其他集装箱 – 到目前为止,这个过程非常顺利。 问题是如何在同一容器中运行airflow webserver
, airflow scheduler
和airflow worker
。 经过一番研究,我发现:build议在一个容器中运行一个服务。 现在我有两个解决scheme
- 在同一个Airflow容器中运行多个服务 – 我无法弄清楚在Docker中实现一个新的蜜蜂的简单方法。
- 创build单独的容器来运行Celery worker和Airflow调度器 – 但是在airflow.cfg文件中,与Celery相关的设置是:
broker_url = 'amqp://guest:guest@ksaprice_rabbitmq:8080//'
,celery_result_backend = db+postgresql://developer:user889@ksaprice_postgres:5432/airflow
。 这些设置指的是数据库或rabbitmq已经运行不同的容器 – 他们不参考运行芹菜和调度程序的ip / url,我假设这是因为芹菜和调度程序在气stream服务器上运行。
我的问题是:
- 回到第1点:有没有一种简单的方法来在同一个Airflow容器中运行
airflow webserver
,airflow scheduler
和airflow worker
命令? - 重申第2点:有没有办法在airflow.cfgconfiguration气stream调度和气stream工作在不同的docker集装箱运行 – 并使用dockernetworking链接?
我是Airflow和Docker的新宠儿。
花了很多时间后,我发现了以下答案:
- 对于第一个问题:要在同一个airflow_container上运行多个服务,请执行以下操作:
docker exec -it airflow_container bash
,现在将CLI连接到airflow_container,然后运行airflowairflow worker
。 对airflow scheduler
和airflow flower
重复相同的过程。 现在,您将有三个不同的CLI在同一个airflow_container上运行三个服务 – 这是我find的最简单的方法。 - 对于第二个问题:在这里有一些选项: 气streamcli像
airflow webserver --hostname=some_host --port=some_port
和airflow flower --hostname=some_host --port=some_port
在不同的服务器上运行它们。 但是对于airflow worker
来说,没有select可以在不同的服务器上运行 – 也许还有其他一些方法可以在不同的服务器上运行worker。