设置高度弹性的环境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本页介绍了如何设置高度弹性的 Cloud Composer 环境。

Cloud Composer 中可用区故障的弹性恢复功能简介

具有高度弹性的 Cloud Composer 环境使用内置冗余和故障转移机制,可降低环境对可用区故障和单点故障中断的敏感性。

例如,可用区中断会中断在特定可用区中运行的 Airflow 任务。之后,具有高弹性环境会恢复,在其他可用区重启受影响的组件,并将数据库切换到次要可用区。因此,Airflow 可以重新调度和重启失败的 Airflow 任务,同时保留 DAG 运行历史记录和其他设置。

高度弹性环境会跨所选区域的至少两个可用区运行。Cloud Composer 会在区域之间自动分布环境组件。

您可以将高度弹性的 Cloud Composer 环境用于关键业务流程。

关于您环境的高可用性数据库

在高可用性 Cloud Composer 环境中,存储环境数据库的 Cloud SQL 实例会在高可用性模式下运行。采用高可用性配置的 Cloud SQL 实例也称为区域实例,位于所配置区域内的主可用区和次要可用区。在区域实例中,该配置由主实例和备用实例组成。

如果发生服务中断,您环境中的 Cloud SQL 实例会执行自动数据库故障切换到备用 Cloud SQL 实例。您无需在 Cloud Composer 环境中执行任何其他操作。主要可用区恢复正常运行后,该环境会切换回包含两个可用区(主要可用区和次要可用区)的状态。在某些情况下,主要可用区和次要可用区可以互换。处于高可用性模式的 Cloud SQL 实例在故障切换后会使用相同的 IP 地址。

高可用性 Airflow 组件简介

高可用性 Cloud Composer 环境运行在各个可用区之间分布 Airflow 组件。

您的环境始终会运行正好两个 Airflow 调度程序、两个 Web 服务器,以及至少两个(但不超过 10 个)触发器(如果启用了触发器)。这两个组件对在不同的可用区中运行。工作器数量下限设为 2,并且环境的集群会在可用可用区之间分配工作器实例。如果发生可用区级服务中断,系统会在其他可用区重新调度受影响的工作器实例。

如需详细了解高弹性环境的架构,请参阅高弹性环境架构

准备工作

  • 高度弹性环境仅适用于专用 IP 环境

  • 与常规环境相比,高弹性环境需要额外付费

  • Cloud Composer 2.2.0 及更高版本提供高度弹性环境。

  • 如果您想将标准环境更新为高度弹性环境,请确保该环境满足以下配置要求。如果您的环境不符合这些要求,您可以更新其规模和性能参数

创建高度弹性环境

如需创建高度弹性环境,请在创建环境时启用高弹性模式

将标准环境更新为高弹性模式

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

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

  3. 选择环境配置标签页。

  4. 弹性模式部分,点击修改

  5. 选择高弹性,然后点击保存

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-high-resilience

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. 在参数 updateMask 中,指定 config.resilienceMode 掩码。

    2. 在请求正文中,指定 HIGH_RESILIENCE 以切换到高弹性模式。

示例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "HIGH_RESILIENCE" }
   }
 }

Terraform

config 块中的 resilience_mode 字段指定了弹性模式。如需使用高弹性模式,请将此值设置为 HIGH_RESILIENCE

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "HIGH_RESILIENCE"

  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "HIGH_RESILIENCE"

}

将高度弹性环境更改为标准弹性模式

您可以随时将环境更改为标准弹性模式。此操作:

  • 将环境中的 Web 服务器数量减少到 1。
  • 关闭环境 Airflow 数据库的高可用性模式
  • 不会更改 Airflow 工作器、调度器或触发器的数量下限设置。

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

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

  3. 选择环境配置标签页。

  4. 弹性模式部分,点击修改

  5. 选择标准弹性(默认),然后点击保存

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-high-resilience

替换以下内容:

  • ENVIRONMENT_NAME:您的 Cloud Composer 环境的名称
  • LOCATION:环境所在的区域。

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. 在参数 updateMask 中,指定 config.resilienceMode 掩码。

    2. 在请求正文中,指定 RESILIENCE_MODE_UNSPECIFIED 以切换到标准弹性模式。

示例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "RESILIENCE_MODE_UNSPECIFIED" }
   }
 }

Terraform

config 块中的 resilience_mode 字段指定了弹性模式。如需使用标准弹性模式,请将此值设置为 STANDARD_RESILIENCE

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

}

检查您的环境是否在高弹性模式下运行

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

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

  3. 选择环境配置标签页。

  4. 弹性模式部分,查看环境的弹性模式。

gcloud

如需检查您的环境中是否启用了高弹性模式,请运行以下 Google Cloud CLI 命令。值 True 表示您的环境中启用了高弹性模式。

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.resilienceMode)"

替换以下内容:

  • ENVIRONMENT_NAME:您的 Cloud Composer 环境的名称
  • LOCATION:环境所在的区域。

后续步骤