扩缩环境

Cloud Composer 1 | Cloud Composer 2

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

如需了解环境扩缩的工作原理,请参阅环境扩缩

纵向和横向扩缩

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

横向扩缩选项:

纵向扩缩选项:

调整节点数量

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

此数量对应于环境中的 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
    }

}

调整调度器的数量

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

您可以指定调度器数量,最多可指定环境中的节点数。

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

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

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

控制台

  1. 转到 Google Cloud 控制台中的环境页面:

    转到“环境”页面

  2. 选择您的环境。

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

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

  5. 调度器配置对话框的调度器数量字段中,为您的环境指定调度器数量。

  6. 点击保存

gcloud

运行以下 Google Cloud CLI 命令:

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

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • SCHEDULER_COUNT 替换为调度器的数量。

示例:

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

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

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

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

{
  "config": {
    "softwareConfig": {
      "schedulerCount": SCHEDULER_COUNT
    }
}

您需要将其中的:

  • SCHEDULER_COUNT 替换为调度器的数量。

示例:

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

{
  "config": {
    "softwareConfig": {
      "schedulerCount": 2
    }
}

Terraform

software_config 块中的 scheduler_count 字段指定了环境中的调度器的数量。

此字段仅适用于使用 Airflow 2 的 Cloud Composer 1 环境。

resource "google_composer_environment" "example" {

  config {
    software_config {
      scheduler_count = SCHEDULER_COUNT
    }
  }
}

您需要将其中的:

  • SCHEDULER_COUNT 替换为调度器的数量。

示例:

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

  config {
    software_config {
      scheduler_count = 2
    }
  }
}

调整 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

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • SQL_MACHINE_TYPE 替换为 Cloud SQL 实例的机器类型

示例:

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 网络服务器实例的机器类型。

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"
    }
}

后续步骤