Airflow Web 服务器问题排查

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本页介绍 Airflow Web 服务器常见问题的问题排查步骤和信息。

Airflow Web 服务器是 Airflow 组件,可提供用于管理 Airflow DAG 和任务的界面。本页介绍了针对访问环境 Airflow Web 服务器时遇到的各种问题或 Airflow 日志中显示的与 Web 服务器相关的警告的问题排查步骤。

启用网络访问权限控制后无法访问 Airflow 界面

问题描述:配置 Web 服务器访问权限控制后,无法访问 Airflow 界面。通常,在这种情况下显示的错误代码为 403。

问题简介:Cloud Composer 支持Web 服务器网络访问权限控制,可让您指定允许连接到 Web 服务器的 IP 地址范围。

访问 Airflow 界面时出现问题通常会导致 403 错误。如需检查错误是否与 Web 服务器网络访问权限控制相关,请执行以下操作:

  1. 在环境列表中,点击您的环境名称。环境详情页面会打开。
  2. 转到环境配置标签页。
  3. 检查 Web 服务器访问权限控制项目是否设置为所有 IP 地址都有访问权限(默认)
  4. 如果配置的值不同于所有 IP 地址都有访问权限(默认),则系统会启用网络访问权限控制,并且 Airflow 界面的可见性将仅限于所提供的 IPv4 和 IPv6 地址范围。在这种情况下,问题可能与 Web 服务器网络访问权限控制有关。

在大多数情况下,问题的原因是您指定的预期 IP 地址与实际用于连接到 Airflow 界面的 IP 地址不匹配。如需排查此问题,请执行以下操作:

  1. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  2. 转到环境配置标签页。

  3. 找到网站服务器访问控制项,然后点击修改

  4. 网络服务器网络访问权限控制对话框中,选择允许从所有 IP 地址访问

  5. 多次访问 Airflow 界面,并验证其能否正常运行且没有任何问题:

    • 如果没有遇到问题,请继续执行下一步。

    • 如果您在此时遇到问题,则表示问题可能与您的 IAM 权限配置有关。如需详细了解 Cloud Composer 的 IAM 权限,请参阅访问权限控制

  6. 网络服务器网络访问权限控制对话框中,选择仅允许来自特定 IP 地址的访问

  7. 添加 0.0.0.0/0 IP 范围,然后多次访问 Airflow 界面,并验证其能否正常运行:

    • 如果您没有遇到问题,则表示您连接的 IP 地址是 IPv4 地址。

    • 如果您在此时遇到问题,则表示您连接的 IP 地址是 IPv6 地址。

  8. 删除 0.0.0.0/0 IP 范围,然后添加 ::/0 IP 范围。

    • 如果您没有遇到问题,则表示您连接的 IP 地址是 IPv6 地址。

    • 如果您在此时遇到问题,则表示您用于连接的 IP 地址是 IPv4 地址。

  9. 现在,您已经确定了解析的地址是 IPv4 还是 IPv6 地址。

  10. 根据地址类型,将 ::/00.0.0.0/0 范围缩小为更具体的范围,以验证访问权限停止运行时最广泛的范围:

    • 您可以先使用包含您假定为 IP 地址的地址的宽子网掩码(例如 192.0.2.0/8)。

    • 如需确定您的 IP 地址,您可以使用第三方服务,该服务会在您访问其网页时提供您的外部 IP 地址。您可以使用“我的 IP 地址是什么?”搜索查询来搜索此类服务。

配置页面上未显示配置值

Airflow 的某些 Airflow 配置参数在配置页面上处于隐藏状态,以防止访问可能敏感的信息。例如,系统不会显示用于访问 Airflow 数据库的凭据。

如需显示隐藏字段,请替换以下 Airflow 配置选项。我们建议您在获取所需值后还原更改。

部分 备注
webserver expose_config True 默认值为 non-sensitive-only。设置为 False 可隐藏所有配置参数。

DAG 导致 Airflow Web 服务器崩溃或导致其返回“502 gateway timeout”错误

有多种不同原因可能会导致 Web 服务器故障。检查 Cloud Logging 中的 airflow-webserver 日志,确定 502 gateway timeout 错误的原因。

重负载计算

本部分仅适用于 Cloud Composer 1。

与工作器和调度器节点不同(它们可以通过自定义机器类型来提高 CPU 和内存容量),Web 服务器使用的是固定机器类型,因此,如果解析时的计算量过于庞大,可能会导致 DAG 解析失败。

请注意,Web 服务器具有 2 个 vCPU 和 2 GB 内存core-dagbag_import_timeout 的默认值为 30 秒。此超时值决定了 Airflow 在将 Python 模块载入 /dags 文件夹时所花费的时长上限。

权限不正确

本部分仅适用于 Cloud Composer 1。

Web 服务器不是使用与工作器和调度器相同的服务账号运行。因此,工作器和调度器可能可以访问 Web 服务器无法访问的用户管理资源。

我们建议您避免在 DAG 解析期间访问非公开资源。在某些情况下,如果需要访问此类资源,您需要向 Web 服务器的服务账号授予相应权限。该服务账号名称来源于您的 Web 服务器网域。例如,如果网域为 example-tp.appspot.com,则服务账号为 [email protected]

DAG 错误

本部分仅适用于 Cloud Composer 1。

Web 服务器在 App Engine 上运行,并且独立于环境的 GKE 集群。Web 服务器会解析 DAG 定义文件;如果 DAG 中存在错误,则可能发生 502 gateway timeout。如果有问题的 DAG 没有导致 GKE 中正在运行的任何进程中断,则 Airflow 会在 Web 服务器未正常发挥作用的情况下正常工作。在这种情况下,您可以使用 gcloud composer environments run 来从您的环境中检索详细信息,并可在 Web 服务器变得不可用时使用它来解决问题。

在其他情况下,您可以在 GKE 中运行 DAG 解析,并查找抛出致命 Python 异常或发生超时(默认为 30 秒)的 DAG。 要进行问题排查,请连接到 Airflow 工作器容器中的远程 shell,并测试是否存在语法错误。 如需了解详情,请参阅测试 DAG

后续步骤