环境架构

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

本页面介绍了 Cloud Composer 环境的架构。

环境架构配置

Cloud Composer 1 环境可以具有以下架构配置:

客户和租户项目

当您创建环境时,Cloud Composer 会在租户和客户项目之间分配环境的资源:

  • 客户项目是您在其中创建环境的 Google Cloud 项目。您可以在一个客户项目中创建多个环境。

租户项目是由 Google 管理的租户项目。租户项目为您的环境提供统一的访问权限控制和额外的数据安全保护层。每个 Cloud Composer 环境都有自己的租户项目。

环境组件

Cloud Composer 环境由环境组件组成。

环境组件是 Google Cloud 上运行的托管式 Airflow 基础架构的一个元素,是环境的一部分。环境组件可以在环境的租户或客户项目中运行。

环境的集群

环境的集群是您的环境的标准模式 VPC 原生基于路由的 Google Kubernetes Engine 集群:

默认情况下,Cloud Composer 支持节点自动升级节点自动修复,以保护您的环境的集群免受安全漏洞的影响。这些操作在您为环境指定的维护期内执行。

环境存储桶

环境的存储桶是一个 Cloud Storage 存储桶,用于存储 DAG、插件、数据依赖项和 Airflow 日志。环境的存储桶位于客户项目中。

当您将 DAG 文件上传到环境存储桶中的 /dags 文件夹时,Cloud Composer 会将 DAG 同步到您环境的 Airflow 组件。

Airflow Web 服务器

Airflow Web 服务器会运行您环境的 Airflow 界面。

在 Cloud Composer 1 中,Airflow Web 服务器在您环境的租户项目中运行。

Airflow 网络服务器已与 Identity-Aware Proxy 集成。Cloud Composer 会隐藏 IAP 集成细节,并根据为用户定义的用户身份和 IAM 政策绑定提供对 Web 服务器的访问权限。

在 Cloud Composer 1 中,Airflow Web 服务器与 Airflow 工作器和 Airflow 调度器在不同的服务帐号上运行。Web 服务器的服务帐号是在环境创建期间自动生成的,并且从 Web 服务器网域派生而来。例如,如果网域为 example.appspot.com,则服务账号为 example@appspot.gserviceaccount.com

Airflow 数据库

Airflow 数据库是您的环境的租户项目中运行的 Cloud SQL 实例。它托管 Airflow 元数据数据库。

为了保护敏感连接和工作流信息,Cloud Composer 只允许对环境的服务账号进行数据库访问。

其他气流组件

在您的环境中运行的其他 Airflow 组件包括:

  • Airflow 调度器会解析 DAG 定义文件,根据时间表间隔安排 DAG 运行,并将任务排队以待 Airflow 工作器执行。在 Cloud Composer 1 中,Airflow DAG 处理器作为调度器组件的一部分运行。

  • Airflow 工作器执行由 Airflow 调度器调度的任务。

公共 IP 环境架构

租户项目和客户项目中的公共 IP Cloud Composer 环境资源
图 1. 公共 IP 环境架构(点击放大)

在 Cloud Composer 1 的公共 IP 环境架构中:

  • 租户项目托管一个 Cloud SQL 实例、一个 Cloud SQL 存储空间和一个运行 Airflow 网络服务器的 App Engine Flex 实例。
  • 客户项目托管环境的所有其他组件。
  • 客户项目中的 Airflow 调度器和工作器通过客户项目中的 Cloud SQL 代理实例与 Airflow 数据库通信。
  • 租户项目中的 Airflow 网络服务器通过该租户项目中的 Cloud SQL 代理实例与 Airflow 数据库进行通信。

专用 IP 环境架构

租户项目和客户项目中的专用 IP Cloud Composer 环境资源
图 2. 专用 IP 环境架构(点击放大)

在专用 IP 环境架构中:

  • 租户项目托管一个 Cloud SQL 实例、一个 Cloud SQL 存储空间,以及两个运行 Airflow 网络服务器的 App Engine 实例
  • 客户项目托管环境的所有其他组件。
  • Airflow 调度器和工作器通过环境集群中的 HAProxy 进程连接到 Airflow 数据库。
  • HAProxy 进程在租户项目中的两个 Cloud SQL 代理实例之间对 Cloud SQL 实例的流量进行负载均衡。专用 IP 环境使用两个 Cloud SQL 代理实例,这是因为由于客户限制,客户项目不直接访问数据库。您需要两个实例,以确保环境的组件始终可以访问数据库。

使用 DRS 的专用 IP

租户项目和客户项目中具有 DRS Cloud Composer 环境资源的专用 IP(点击可放大)
图 3. 专用 IP 环境架构(点击放大)

如果您的项目启用了网域限定共享 (DRS) 组织政策,则 Cloud Composer 会将专用 IP 与 DRS 环境架构搭配使用。

在采用 DRS 环境架构的专用 IP 中:

  • 租户项目托管一个 Cloud SQL 实例、一个 Cloud SQL 存储空间,以及两个运行 Airflow 网络服务器的 App Engine 实例。

  • 租户项目托管其他环境存储桶。Airflow 网络服务器会直接访问此存储桶。

  • 客户项目托管环境的所有其他组件。

  • 客户项目在环境的集群中托管存储桶同步过程。此过程会同步两个环境存储桶。

  • Airflow 调度器和工作器通过环境集群中的 HAProxy 进程连接到 Airflow 数据库。

  • HAProxy 进程在租户项目中的两个 Cloud SQL 代理实例之间对 Cloud SQL 实例的流量进行负载均衡。专用 IP 环境使用两个 Cloud SQL 代理实例,这是因为由于客户限制,客户项目不直接访问数据库。您需要两个实例,以确保环境的组件始终可以访问数据库。

与 Cloud Logging 和 Cloud Monitoring 集成

Cloud Composer 集成了 Google Cloud 项目的 Cloud Logging 和 Cloud Monitoring,因此您可以从一个位置集中查看 Airflow 和 DAG 日志

Cloud Monitoring 会从 Cloud Composer 中收集并提取指标、事件和元数据,并通过信息中心和图表生成数据分析

由于 Cloud Logging 的流式传输特性,您可以立即查看由 Airflow 组件发出的日志,而无需等待 Airflow 日志显示在您环境的 Cloud Storage 存储桶中。

如需限制 Google Cloud 项目中的日志数量,您可以停止所有日志提取。请勿停用 Logging。

后续步骤