扩缩环境

Cloud Composer 1 | Cloud Composer 2

本页面介绍如何扩缩 Cloud Composer 环境。

纵向和横向扩缩

在 Cloud Composer 1 中,您无需为 Cloud Composer 和 Airflow 组件(例如工作器和调度器)定义特定的 CPU 和内存资源。而是为环境集群中的节点指定机器的数量和类型。

横向扩缩选项:

  • 调整节点数量
  • 调整调度器的数量

纵向扩缩选项:

  • 调整 Cloud SQL 实例的机器类型
  • 调整网络服务器机器类型

调整调度器参数

您的环境可以同时运行多个 Airflow 调度器。使用多个调度器在多个调度器实例之间分配负载,以实现更好的性能和可靠性。

如果您的环境使用 Airflow 2,您可以指定调度器数量,最高可达到环境中的节点数。

增加调度器的数量并不总是可以提高 Airflow 性能。例如,仅使用一个调度器的性能可能优于使用两个调度器。如果额外的调度器未得到利用,则可能会发生这种情况,因而会占用环境的资源,而不会提升整体性能。实际的调度器性能取决于 Airflow 工作器的数量、在您的环境中运行的 DAG 和任务的数量,以及 Airflow 和环境的配置。

我们建议您先使用两个调度器,然后再监控环境的性能。如果您更改调度器的数量,则可以随时将环境扩缩回原始调度器的数量。

如需详细了解如何配置多个调度器,请参阅 Airflow 文档

控制台

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

    转到“环境”

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

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

  4. 资源 > 工作负载配置项中,点击修改

  5. 资源 > 调度器数量项中,点击修改

  6. 调度器配置窗格的调度器数量字段中,指定环境的调度器数量。

  7. 点击保存

gcloud

以下 Airflow 调度器参数可用:

  • --scheduler-count:您的环境中的调度器数量。

运行以下 Google Cloud CLI 命令:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --scheduler-count SCHEDULER_COUNT

请替换以下内容:

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

示例:

gcloud composer environments update example-environment \
  --location us-central1 \
  --scheduler-count 2

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.workloadsConfig.schedulerCount 掩码。

    2. 在请求正文中,指定环境的调度器数量。

"config": {
  "workloadsConfig": {
    "scheduler": {
      "count": SCHEDULER_COUNT
    }
  }
}

请替换以下内容:

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

  • SCHEDULER_COUNT:调度器的数量。

示例:

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

"config": {
  "workloadsConfig": {
    "scheduler": {
      "count": 2
    }
  }
}

Terraform

workloads_config.scheduler 块中的以下字段用于控制 Airflow 调度器参数。每个调度器会使用指定数量的资源。

  • scheduler.count:您的环境中的调度器数量。

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

  config {

    workloads_config {
      scheduler {
        count = SCHEDULER_COUNT
      }
    }

  }
}

请替换以下内容:

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

  • SCHEDULER_COUNT:调度器的数量。

示例:

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

  config {

    workloads_config {
      scheduler {
        
        count = 2
      }
    }

  }
}

调整触发器参数

您可以将触发器的数量设置为零,但若要在 DAG 中使用可延迟运算符,您的环境中至少需要一个触发器实例(或在高弹性环境中至少有两个触发器实例)。

触发器数量有不同的可能配置,具体取决于您的环境的弹性模式

  • 标准弹性:您最多可以运行 10 个触发器。
  • 高弹性:至少 2 个触发器,最多 10 个。

即使将触发器数量设置为 0,系统仍会创建触发器 Pod 定义并显示在环境集群中,但不会运行实际的触发器工作负载。

您还可以指定环境中 Airflow 触发器使用的 CPU、内存和磁盘空间量。这样,除了使用多个触发器提供的横向伸缩之外,您还可以提高环境的性能。

控制台

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

    转到“环境”

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

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

  4. 资源 > 工作负载配置项中,点击修改

  5. 工作负载配置窗格中,调整 Airflow 触发器的参数:

    1. 触发器部分的触发器数量字段中,输入环境中的触发器数量。

      如果您为环境设置了至少一个触发器,则还需要使用 CPU内存字段来为触发器配置资源分配。

    2. CPU内存中,为 Airflow 触发器指定 CPU、内存和存储空间的数量。每个触发器会使用指定数量的资源。

  6. 点击保存

gcloud

以下 Airflow 触发器参数可供使用:

  • --triggerer-count:您的环境中的触发器数量。

    • 对于标准弹性环境,请使用介于 010 之间的值。
    • 对于高弹性环境,请使用 0 或介于 210 之间的值。
  • --triggerer-cpu:Airflow 触发器的 CPU 数量。

  • --triggerer-memory:Airflow 触发器的内存量。

运行以下 Google Cloud CLI 命令:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --triggerer-count TRIGGERER_COUNT \
  --triggerer-cpu TRIGGERER_CPU \
  --triggerer-memory TRIGGERER_MEMORY

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • TRIGGERER_COUNT:触发器的数量。
  • TRIGGERER_CPU:触发器的 CPU 数量(以 vCPU 为单位)。
  • TRIGGERER_MEMORY:触发器的内存量。

示例:

  • 扩展到 4 个触发器实例:
  gcloud composer environments update example-environment \
    --location us-central1 \
    --triggerer-count 4 \
    --triggerer-cpu 1 \
    --triggerer-memory 1
  ```

- Disable triggerers by setting triggerer count to `0`. This operation
  doesn't require specifying CPU or memory for the triggerers.

```bash
  gcloud composer environments update example-environment \
    --location us-central1 \
    --triggerer-count 0
  ```

API

  1. updateMask 查询参数中,指定 config.workloadsConfig.triggerer 掩码。

  2. 在请求正文中,为触发器指定全部三个参数。

"config": {
  "workloadsConfig": {
    "triggerer": {
      "count": TRIGGERER_COUNT,
      "cpu": TRIGGERER_CPU,
      "memoryGb": TRIGGERER_MEMORY
    }
  }
}

请替换以下内容:

  • TRIGGERER_COUNT:触发器的数量。

    • 对于标准弹性环境,请使用介于 010 之间的值。
    • 对于高弹性环境,请使用 0 或介于 210 之间的值。
  • TRIGGERER_CPU:触发器的 CPU 数量(以 vCPU 为单位)。

  • TRIGGERER_MEMORY:触发器的内存量。

示例:

  • 将触发器数量设置为 0 即可停用触发器。此操作不需要为触发器指定 CPU 或内存。
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.workloadsConfig.triggerer
"config": {
  "workloadsConfig": {
    "triggerer": {
      "count": 0
    }
  }
}
  • 扩展到 4 个触发器实例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.workloadsConfig.triggerer
"config": {
  "workloadsConfig": {
    "triggerer": {
      "count": 4,
      "cpu": 1,
      "memoryGb": 1
    }
  }
}

Terraform

workloads_config.triggerer 代码块中的以下字段用于控制 Airflow 触发器参数。每个触发器会使用指定数量的资源。

  • triggerer.count:您的环境中的触发器数量。

    • 对于标准弹性环境,请使用介于 010 之间的值。
    • 对于高弹性环境,请使用 0 或介于 210 之间的值。
  • triggerer.cpu:Airflow 触发器的 CPU 数量。

  • triggerer.memory_gb:Airflow 触发器的内存量。

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

  config {

    workloads_config {
      triggerer {
        count = TRIGGERER_COUNT
        cpu = TRIGGERER_CPU
        memory_gb = TRIGGERER_MEMORY
      }
    }

  }
}

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • TRIGGERER_COUNT:触发器的数量。
  • TRIGGERER_CPU:触发器的 CPU 数量(以 vCPU 为单位)。
  • TRIGGERER_MEMORY:触发器的内存量(以 GB 为单位)。

示例:

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

  config {

    workloads_config {
      triggerer {
        count = 1
        cpu = 0.5
        memory_gb = 0.5
      }
    }

  }
}

调整 Web 服务器参数

您可以指定环境中的 Airflow Web 服务器使用的 CPU、内存和磁盘空间量。通过这种方式,您可以扩缩 Airflow 界面的性能,例如满足来自大量用户或大量代管式 DAG 的需求。

控制台

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

    转到“环境”

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

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

  4. 资源 > 工作负载配置项中,点击修改

  5. 工作负载配置窗格中,调整 Web 服务器的参数。在 CPU内存存储字段中,指定 Web 服务器的 CPU、内存和存储空间的数量。

  6. 点击保存

gcloud

以下 Airflow Web 服务器参数可供使用:

  • --web-server-cpu:Airflow Web 服务器的 CPU 数量。
  • --web-server-memory:Airflow Web 服务器的内存量。
  • --web-server-storage:Airflow Web 服务器的磁盘空间量。

运行以下 Google Cloud CLI 命令:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --web-server-cpu WEB_SERVER_CPU \
  --web-server-memory WEB_SERVER_MEMORY \
  --web-server-storage WEB_SERVER_STORAGE

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • WEB_SERVER_CPU:Web 服务器的 CPU 数量,以 vCPU 为单位。
  • WEB_SERVER_MEMORY:Web 服务器的内存量。
  • WEB_SERVER_STORAGE:Web 服务器的内存量。

示例:

gcloud composer environments update example-environment \
  --location us-central1 \
  --web-server-cpu 1 \
  --web-server-memory 2.5 \
  --web-server-storage 2

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.workloadsConfig.webServer 掩码以更新所有 Web 服务器参数。您还可以通过为以下参数指定掩码来更新各个 Web 服务器参数:config.workloadsConfig.webServer.cpuconfig.workloadsConfig.webServer.memoryGbconfig.workloadsConfig.webServer.storageGb

    2. 在请求正文中,指定新的 Web 服务器参数。

"config": {
  "workloadsConfig": {
    "webServer": {
      "cpu": WEB_SERVER_CPU,
      "memoryGb": WEB_SERVER_MEMORY,
      "storageGb": WEB_SERVER_STORAGE
    }
  }
}

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • WEB_SERVER_CPU:Web 服务器的 CPU 数量,以 vCPU 为单位。
  • WEB_SERVER_MEMORY:Web 服务器的内存量(以 GB 为单位)。
  • WEB_SERVER_STORAGE:Web 服务器的磁盘大小(以 GB 为单位)。

示例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.workloadsConfig.webServer.cpu,
// config.workloadsConfig.webServer.memoryGb,
// config.workloadsConfig.webServer.storageGb

"config": {
  "workloadsConfig": {
    "webServer": {
      "cpu": 0.5,
      "memoryGb": 2.5,
      "storageGb": 2
    }
  }
}

Terraform

workloads_config.web_server 代码块中的以下字段用于控制 Web 服务器参数。

  • web_server.cpu:Web 服务器的 CPU 数量。
  • web_server.memory_gb:Web 服务器的内存量。
  • web_server.storage_gb:Web 服务器的磁盘空间量。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {
      web_server {
        cpu = WEB_SERVER_CPU
        memory_gb = WEB_SERVER_MEMORY
        storage_gb = WEB_SERVER_STORAGE
      }
    }

  }
}

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • WEB_SERVER_CPU:Web 服务器的 CPU 数量,以 vCPU 为单位。
  • WEB_SERVER_MEMORY:Web 服务器的内存量(以 GB 为单位)。
  • WEB_SERVER_STORAGE:Web 服务器的磁盘大小(以 GB 为单位)。

示例:

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

  config {

    workloads_config {
      web_server {
        cpu = 0.5
        memory_gb = 1.875
        storage_gb = 1
      }
    }

  }
}

调整环境大小

环境大小决定了代管式 Cloud Composer 基础架构的性能参数,如 Airflow 数据库。

如果要运行大量 DAG 和任务,请考虑选择较大的环境大小。

控制台

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

    转到“环境”

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

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

  4. 资源 > 工作负载配置项中,点击修改

  5. 资源 > 核心基础架构项中,点击修改

  6. 核心基础架构窗格的环境大小字段中,指定环境大小。

  7. 点击保存

gcloud

参数 --environment-size 可用于控制环境大小:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --environment-size ENVIRONMENT_SIZE

请替换以下内容:

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

示例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --environment-size medium

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

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

    2. 在请求正文中,指定环境大小。

  "config": {
    "environmentSize": "ENVIRONMENT_SIZE"
  }

请替换以下内容:

  • ENVIRONMENT_SIZE:环境大小,即 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_LARGE

示例:

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

"config": {
  "environmentSize": "ENVIRONMENT_SIZE_MEDIUM"
}

Terraform

config 代码块中的 environment_size 字段用于控制环境大小:

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

  config {

    environment_size = "ENVIRONMENT_SIZE"

  }
}

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • ENVIRONMENT_SIZE:环境大小,即 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_LARGE

示例:

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

  config {

    environment_size = "ENVIRONMENT_SIZE_SMALL"

    }
  }
}

调整节点数量

您可以更改环境中的节点数。

此数字与您环境中的 Airflow 工作器数量相对应。除了运行 Airflow 工作器之外,您的环境节点还会运行 Airflow 调度器和其他环境组件。

控制台

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

    转到“环境”

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

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

  4. 工作器节点 > 节点数项中,点击修改

  5. 工作器节点配置窗格的节点数字段中,指定您环境中的节点数量。

  6. 点击保存

gcloud

参数 --node-count 可用于控制环境中的节点数:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --zone NODE_ZONE \
    --node-count NODE_COUNT

请替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。
  • NODE_COUNT:节点数。节点数下限为 3
  • NODE_ZONE:您的环境虚拟机的 Compute Engine 区域。

示例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --zone us-central1-a \
    --node-count 6

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

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

    2. 在请求正文中,为您的环境指定节点数。

  "config": {
    "nodeCount": NODE_COUNT
  }

请替换以下内容:

  • NODE_COUNT:节点数。节点数下限为 3

示例:

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

"config": {
  "nodeCount": 6
}

Terraform

node_config 代码块中的 node_count 字段指定环境中的节点数。

resource "google_composer_environment" "example" {

  config {
    node_config {
      node_count = NODE_COUNT
    }
}

请替换以下内容:

  • NODE_COUNT:节点数。

示例:

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

  config {

    node_config {
      node_count = 4
    }

}

调整 Cloud SQL 实例的机器类型

您可以更改存储环境的 Airflow 数据库的 Cloud SQL 实例的机器类型。

控制台

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

    转到“环境”

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

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

  4. 资源 > Cloud SQL 机器类型项中,点击修改

  5. Cloud SQL 配置窗格的 Cloud SQL 机器类型下拉列表中,选择环境的 Cloud SQL 实例的机器类型。

  6. 点击保存

gcloud

参数 --cloud-sql-machine-type 可用于控制环境中 Cloud SQL 实例的机器类型。

运行以下 Google Cloud CLI 命令:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --cloud-sql-machine-type SQL_MACHINE_TYPE

请替换以下内容:

示例:

gcloud composer environments update example-environment \
  --location us-central1 \
  --cloud-sql-machine-type db-n1-standard-2

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.databaseConfig.machineType 掩码。

    2. 在请求正文中,指定 Cloud SQL 实例的机器类型。

{
  "config": {
    "databaseConfig": {
      "machineType": "SQL_MACHINE_TYPE"
    }
  }
}

请替换以下内容:

示例:

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

{
  "config": {
    "databaseConfig": {
      "machineType": "db-n1-standard-2"
    }
  }
}

Terraform

database_config 块中的 machine_type 字段指定了 Cloud SQL 实例的机器类型。

resource "google_composer_environment" "example" {

  config {
    database_config {
      machine_type = "SQL_MACHINE_TYPE"
    }
  }
}

请替换以下内容:

示例:

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

  config {
    database_config {
      machine_type = "db-n1-standard-2"
    }
}

调整网络服务器机器类型

您可以更改环境的 Airflow 网络服务器的机器类型。

控制台

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

    转到“环境”

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

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

  4. 资源 > Web 服务器机器类型项中,点击修改

  5. Web 服务器配置窗格的 Web 服务器机器类型下拉列表中,选择 Airflow Web 服务器的机器类型。

  6. 点击保存

gcloud

--web-server-machine-type 参数用于控制环境中的 Airflow 网络服务器实例的机器类型。

运行以下 Google Cloud CLI 命令:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --web-server-machine-type WS_MACHINE_TYPE

请替换以下内容:

示例:

gcloud composer environments update example-environment \
  --location us-central1 \
  --web-server-machine-type composer-n1-webserver-2

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.webServerConfig.machineType 掩码。

    2. 在请求正文中,指定网络服务器的机器类型。

{
  "config": {
    "webServerConfig": {
      "machineType": "WS_MACHINE_TYPE"
    }
  }
}

请替换以下内容:

示例:

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

{
  "config": {
    "webServerConfig": {
      "machineType": "composer-n1-webserver-2"
    }
  }
}

Terraform

web_server_config 代码块中的 machine_type 字段指定 Airflow Web 服务器实例的机器类型。

resource "google_composer_environment" "example" {

  config {
    web_server_config {
      machine_type = "WS_MACHINE_TYPE"
    }
  }
}

请替换以下内容:

示例:

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

  config {
    web_server_config {
      machine_type = "composer-n1-webserver-2"
    }
}

后续步骤