調度環境資源

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何調整 Cloud Composer 環境。

垂直和水平縮放

在 Cloud Composer 1 中,您不會為 Cloud Composer 和 Airflow 元件 (例如 worker 和排程器) 定義特定的 CPU 和記憶體資源。而是指定環境叢集中節點的機器數量和類型。

水平資源調度的選項:

  • 調整節點數量
  • 調整排程器數量

垂直資源調度的選項:

  • 調整 Cloud SQL 執行個體的機器類型
  • 調整網路伺服器機型

調整排程器參數

您的環境可以同時執行多個 Airflow 排程器。使用多個排程器將負載分配到多個排程器執行個體,以提升效能和穩定性。

如果您的環境使用 Airflow 2,您可以指定最多與環境中節點數量相同的排程器數量。

在擴充調度器時,請考量下列事項:

  • 在 Cloud Composer 3 環境中,Airflow DAG 處理器會以與排程器不同的環境元件執行。由於 DAG 處理器會將 DAG 的剖析工作從排程器卸載,因此您可能需要重新分配先前分配給 Airflow 排程器的資源。

    由於排程器不會在 Cloud Composer 3 中剖析 DAG,因此 CPU 和記憶體的資源限制會比 Cloud Composer 2 低。

  • 增加排程器的數量不一定能改善 Airflow 效能。

    舉例來說,如果未使用額外排程器,且該排程器會耗用環境資源,卻不會提升整體效能,就可能發生這種情況。實際的排程器效能取決於 Airflow 工作站數量、在環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。

  • 建議您先使用兩個排程器,然後監控環境效能。如果您變更排程器數量,隨時可以將環境規模縮減至原始排程器數量。

如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「資源」>「工作負載設定」項目中,點選「編輯」

  5. 在「資源」>「排程器數量」項目中,點選「編輯」

  6. 在「Scheduler configuration」窗格中的「Number of schedulers」欄位中,指定環境的排程器數量。

  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 個。

即使觸發器數量設為零,系統也會建立觸發器 Pod 定義,並顯示在環境叢集中,但不會執行實際的觸發器工作負載。

您也可以指定 Airflow 觸發器在環境中使用的 CPU、記憶體和磁碟空間數量。這樣一來,您除了可以使用多個觸發條件進行水平調整,還能提升環境效能。

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「資源」>「工作負載設定」項目中,點選「編輯」

  5. 在「工作負載設定」窗格中,調整 Airflow 觸發條件的參數:

    1. 在「Triggerer」專區的「Number of triggerers」欄位中,輸入環境中的觸發條件數量。

      如果您為環境設定至少一個觸發器,請同時使用 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:觸發器的記憶體量。

範例:

  • 擴充為四個觸發器執行個體:
gcloud composer environments update example-environment \
  --location us-central1 \
  --triggerer-count 4 \
  --triggerer-cpu 1 \
  --triggerer-memory 1
  • 將觸發器數量設為 0,即可停用觸發器。這項作業不需要為觸發器指定 CPU 或記憶體。
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
    }
  }
}
  • 擴充為四個觸發器執行個體:
// 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
      }
    }

  }
}

調整網路伺服器參數

您可以指定 Airflow 網路伺服器在環境中使用的 CPU、記憶體和磁碟空間數量。舉例來說,您可以透過這種方式擴充 Airflow UI 的效能,以滿足大量使用者或大量受管理 DAG 的需求。

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「資源」>「工作負載設定」項目中,點選「編輯」

  5. 在「工作負載設定」窗格中,調整網路伺服器的參數。在「CPU」、「記憶體」和「儲存空間」欄位中,指定網頁伺服器的 CPU、記憶體和儲存空間數量。

  6. 按一下 [儲存]

gcloud

可用的 Airflow 網路伺服器參數如下:

  • --web-server-cpu:Airflow 網路伺服器的 CPU 數量。
  • --web-server-memory:Airflow 網路伺服器的記憶體量。
  • --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:網路伺服器的 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 遮罩,以更新所有網路伺服器參數。您也可以為下列參數指定遮罩,藉此更新個別網頁伺服器參數:config.workloadsConfig.webServer.cpuconfig.workloadsConfig.webServer.memoryGbconfig.workloadsConfig.webServer.storageGb

    2. 在要求主體中指定新的網路伺服器參數。

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

更改下列內容:

  • ENVIRONMENT_NAME:環境名稱。
  • LOCATION:環境所在的地區。
  • WEB_SERVER_CPU:網路伺服器的 CPU 數量,單位為 vCPU。
  • WEB_SERVER_MEMORY:Web 伺服器的記憶體量 (以 GB 為單位)。
  • WEB_SERVER_STORAGE:網頁伺服器的磁碟大小 (以 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_server.cpu:網路伺服器的 CPU 數量。
  • web_server.memory_gb:網路伺服器的記憶體用量。
  • web_server.storage_gb:網路伺服器的磁碟空間量。
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:網路伺服器的 CPU 數量,單位為 vCPU。
  • WEB_SERVER_MEMORY:Web 伺服器的記憶體量 (以 GB 為單位)。
  • WEB_SERVER_STORAGE:網頁伺服器的磁碟大小 (以 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 控制台的「Environments」頁面。

    前往「環境」

  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 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「Worker 節點」>「節點數量」項目中,按一下「編輯」

  5. 在「Worker nodes configuration」窗格的「Node count」欄位中,指定環境中的節點數量。

  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:環境 VM 的 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 控制台的「Environments」頁面。

    前往「環境」

  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 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「資源」>「Web 伺服器機型」項目中,按一下「編輯」

  5. 在「Web server configuration」窗格中的「Web server machine type」下拉式清單中,選取 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"
    }
}

後續步驟