【问题标题】:airflow tries to access celery workers using the worker ID instead of URL气流尝试使用工人 ID 而不是 URL 访问 celery 工人
【发布时间】:2020-02-28 05:03:15
【问题描述】:

我让 Airflow 与 CeleryExecutor 和 2 名工作人员一起运行。当我的 DAG 运行时,这些任务会在运行它们的工作人员的文件系统上生成一个日志。但是当我转到 Web UI 并单击任务日志时,我得到:

*** Log file does not exist: /usr/local/airflow/logs/test_dag/task2/2019-11-01T18:12:16.309655+00:00/1.log
*** Fetching from: http://70953abf1c10:8793/log/test_dag/task2/2019-11-01T18:12:16.309655+00:00/1.log
*** Failed to fetch log file from worker. HTTPConnectionPool(host='70953abf1c10', port=8793): Max retries exceeded with url: /log/test_dag/task2/2019-11-01T18:12:16.309655+00:00/1.log (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f329c3a2650>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))

http://70953abf1c10:8793/ 显然不是 worker 的正确 IP。然而,celery@70953abf1c10 这个工人在 Celery 中的名字。似乎 Airflow 正在尝试从 Celery 学习工作人员的 URL,但 Celery 正在提供工作人员的姓名。我该如何解决这个问题?

【问题讨论】:

  • 这实际上是两个独立的错误。第一个错误是找不到日志文件。第二个错误是当它尝试通过 HTTP 获取日志文件时。到目前为止的答案试图解决第二个问题。但是通过为每个容器安装一个共享的 docker 卷可能更容易解决第一个问题。见stackoverflow.com/a/67741414/1004759

标签: celery airflow


【解决方案1】:

DejanLekic 的解决方案让我走上了正轨,但这并不完全明显,所以我添加了这个答案来澄清。

在我的例子中,我在 Docker 容器上运行 Airflow。默认情况下,Docker 容器使用一个名为bridge 的桥接网络。这是一个不会自动解析主机名的特殊网络。我在 Docker 中创建了一个名为 airflow-net 的新桥接网络,并让我所有的 Airflow 容器都加入了这个网络(不需要保留默认的 bridge)。然后一切正常。

默认情况下,Docker 将主机名设置为容器的十六进制 ID。在我的例子中,容器 ID 以 70953abf1c10 开头,主机名也是 70953abf1c10。有一个用于指定主机名的 Docker 参数,但事实证明它不是必需的。在我将容器连接到新的桥接网络后,70953abf1c10 开始解析到该容器。

【讨论】:

  • 你应该接受你的答案,因为它实际上解决了原来的问题。
  • 嗨,我正在使用docker-compose 启动气流,所以所有容器都使用docker-compose自动创建的网络。尽管如此,我仍然有这个问题。有什么意见吗?
【解决方案2】:

最简单的解决方案是使用包含主机名的默认名称,或者显式设置包含有效主机名的节点名称(例如:celery1@hostname.domain.tld)。

如果您使用默认设置,则运行气流工作程序的机器错误地将主机名设置为70953abf1c10。你应该通过运行类似的东西来解决这个问题:hostname -B hostname.domain.tld

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 2020-03-20
    • 2021-08-15
    • 1970-01-01
    • 2020-07-18
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多