设置高度弹性的环境

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 组件

高弹性环境是多可用区环境,可在所选区域的至少两个可用区中运行。以下组件在不同的可用区中运行:

工作器数量下限设置为 2,并且环境的集群在各个可用区之间分配工作器实例。如果发生可用区级服务中断,受影响的工作器实例会在其他可用区中重新调度。

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

准备工作

  • 在 Cloud Composer 3 中,专用 IP 环境和公共 IP 环境均可实现高弹性。

  • 高弹性环境会运行额外的环境组件。与常规环境相比,这会导致成本增加

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

    • Airflow 工作器的数量下限为 2 个或更多。
    • Airflow 调度器的数量正好为 2。

    • 至少两个 DAG 处理器。

    • 如果您在 DAG 中使用可延期运算符,则至少需要两个触发器。

创建高弹性环境

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

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

控制台

  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:环境所在的区域。

后续步骤