Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍如何扩缩 Cloud Composer 环境。
纵向和横向扩缩
在 Cloud Composer 1 中,您无需为 Cloud Composer 和 Airflow 组件(例如工作器和调度器)定义特定的 CPU 和内存资源。只需为节点中的节点指定机器数量和类型 集群环境
横向扩缩选项:
- 调整节点数量
- 调整调度器的数量
纵向扩缩选项:
- 调整 Cloud SQL 实例的机器类型
- 调整网络服务器机器类型
调整调度器参数
您的环境可以同时运行多个 Airflow 调度器。使用多个调度器将负载分散到多个 调度程序实例,以提高性能和可靠性。
如果您的环境使用 Airflow 2,您可以指定多个调度器, 节点数量
增加调度器的数量并不总是可以提高 Airflow 性能。例如,仅使用一个调度器的性能可能优于使用两个调度器。如果额外的调度器未得到利用,则可能会发生这种情况,因而会占用环境的资源,而不会提升整体性能。实际的调度器性能取决于 Airflow 工作器的数量、在您的环境中运行的 DAG 和任务的数量,以及 Airflow 和环境的配置。
我们建议您先使用两个调度器,然后再监控环境的性能。如果您更改调度器的数量,则可以随时将环境扩缩回原始调度器的数量。
如需详细了解如何配置多个调度器,请参阅 Airflow 文档。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > 工作负载配置项中, 点击修改。
在资源 > 调度器数量项中, 点击修改。
在调度器配置窗格的 调度器数量字段中,指定用于 您的环境
点击保存。
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
构建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.workloadsConfig.schedulerCount
掩码。在请求正文中,为您的环境指定调度器数量。
"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 个。
即使触发器数量设置为零,触发器 Pod 定义也会 在环境的集群中创建并可见,但没有实际的触发器 工作负载
您还可以指定环境中 Airflow 触发器使用的 CPU 数量、内存和磁盘空间大小。通过这种方式,您可以提高 以及使用多集群虚拟机提供的 触发器。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > 工作负载配置项中,点击修改。
在工作负载配置窗格中,调整 Airflow 触发器的参数:
在触发器部分的触发器数量字段中,执行以下操作: 输入您环境中的触发器数量。
如果您为环境设置了至少一个触发器,也请使用 CPU 和 Memory 字段以配置资源分配 。
在 CPU 和内存中,指定 Airflow 触发器的 CPU、内存和存储空间。每个触发器 使用指定数量的资源。
点击保存。
gcloud
您可以使用以下 Airflow 触发器参数:
--triggerer-count
:环境中的触发器数量。- 对于标准弹性环境,请使用介于
0
和10
。 - 对于高弹性环境,请使用
0
, 或介于2
和10
。
- 对于标准弹性环境,请使用介于
--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
:触发器的内存量。
示例:
- 扩容为四个触发器实例:
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
在
updateMask
查询参数中,指定config.workloadsConfig.triggerer
掩码。在请求正文中,为触发器指定所有三个参数。
"config": {
"workloadsConfig": {
"triggerer": {
"count": TRIGGERER_COUNT,
"cpu": TRIGGERER_CPU,
"memoryGb": TRIGGERER_MEMORY
}
}
}
替换以下内容:
TRIGGERER_COUNT
:触发器的数量。- 对于标准弹性环境,请使用介于
0
和10
。 - 对于高度弹性环境,请使用
0
,或介于2
和10
之间的值。
- 对于标准弹性环境,请使用介于
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
}
}
}
- 扩容为四个触发器实例:
// 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
:您的环境中的触发器数量。- 对于标准弹性环境,请使用介于
0
和10
。 - 对于高弹性环境,请使用
0
, 或介于2
和10
。
- 对于标准弹性环境,请使用介于
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 的需求。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > 工作负载配置项中,点击修改。
在工作负载配置窗格中,调整 网络服务器在 CPU、内存和存储空间字段中,指定网络服务器的 CPU、内存和存储空间量。
点击保存。
gcloud
您可以使用以下 Airflow Web 服务器参数:
--web-server-cpu
:Airflow Web 服务器的 CPU 数量。--web-server-memory
:Airflow Web 服务器的内存量。--web-server-storage
:Airflow 的磁盘空间量 网络服务器
运行以下 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
构建
environments.patch
API 请求。在此请求中:
在
updateMask
参数中,指定config.workloadsConfig.webServer
掩码以更新所有 Web 服务器 参数。您还可以通过以下方式更新各个 Web 服务器参数: 为这些参数指定掩码:config.workloadsConfig.webServer.cpu
,config.workloadsConfig.webServer.memoryGb
,config.workloadsConfig.webServer.storageGb
。在请求正文中,指定新的网站服务器参数。
"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 和任务的组合。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > 工作负载配置项中,点击修改。
在资源 > 核心基础架构项中,点击修改。
在核心基础架构窗格中,在环境大小字段中,指定环境大小。
点击保存。
gcloud
参数 --environment-size
可用于控制环境大小:
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--environment-size ENVIRONMENT_SIZE
替换以下内容:
ENVIRONMENT_NAME
:环境的名称。LOCATION
:环境所在的区域。ENVIRONMENT_SIZE
:small
、medium
或large
。
示例:
gcloud composer environments update example-environment \
--location us-central1 \
--environment-size medium
API
创建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.environmentSize
掩码。在请求正文中,指定环境大小。
"config": {
"environmentSize": "ENVIRONMENT_SIZE"
}
替换以下内容:
ENVIRONMENT_SIZE
:环境大小ENVIRONMENT_SIZE_SMALL
。ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_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_SMALL
。ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_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 调度器和其他环境组件。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在工作器节点数 > 节点数项中,点击修改。
在工作器节点配置窗格的节点数字段中, 指定您环境中的节点数量。
点击保存。
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
创建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.nodeCount
掩码。在请求正文中,为您的环境指定节点数。
"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 数据库。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > Cloud SQL 机器类型项中,点击修改。
在 Cloud SQL 配置窗格中,在 Cloud SQL 机器类型下拉列表中,选择环境的 Cloud SQL 实例的机器类型。
点击保存。
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
创建
environments.patch
API 请求。在此请求中:
在
updateMask
参数中,指定config.databaseConfig.machineType
个蒙版。在请求正文中,指定 Cloud SQL 实例的机器类型。
{
"config": {
"databaseConfig": {
"machineType": "SQL_MACHINE_TYPE"
}
}
}
替换以下内容:
SQL_MACHINE_TYPE
:机器类型 Cloud SQL 实例。
示例:
// 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"
}
}
}
替换以下内容:
SQL_MACHINE_TYPE
:机器类型 Cloud SQL 实例。
示例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
database_config {
machine_type = "db-n1-standard-2"
}
}
调整网络服务器机器类型
您可以更改环境的 Airflow 网络服务器的机器类型。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在资源 > Web 服务器机器类型项目中, 点击修改。
在 Web 服务器配置窗格的 Web 服务器机器类型下拉列表中,选择 Airflow Web 服务器
点击保存。
gcloud
--web-server-machine-type
参数用于控制环境中的 Airflow 网络服务器实例的机器类型。
运行以下 Google Cloud CLI 命令:
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--web-server-machine-type WS_MACHINE_TYPE
替换以下内容:
ENVIRONMENT_NAME
:环境的名称。LOCATION
:环境所在的区域。WS_MACHINE_TYPE
:Airflow 网络服务器实例的机器类型。
示例:
gcloud composer environments update example-environment \
--location us-central1 \
--web-server-machine-type composer-n1-webserver-2
API
创建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.webServerConfig.machineType
掩码。在请求正文中,指定网络服务器的机器类型。
{
"config": {
"webServerConfig": {
"machineType": "WS_MACHINE_TYPE"
}
}
}
替换以下内容:
WS_MACHINE_TYPE
:Airflow 网络服务器实例的机器类型。
示例:
// 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"
}
}
}
替换以下内容:
WS_MACHINE_TYPE
: Airflow Web 服务器实例的机器类型。
示例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}