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 說明文件。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,點選「編輯」。
在「資源」>「排程器數量」項目中,點選「編輯」。
在「Scheduler configuration」窗格中的「Number of schedulers」欄位中,指定環境的排程器數量。
按一下 [儲存]。
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 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,點選「編輯」。
在「工作負載設定」窗格中,調整 Airflow 觸發條件的參數:
在「Triggerer」專區的「Number of triggerers」欄位中,輸入環境中的觸發條件數量。
如果您為環境設定至少一個觸發器,請同時使用 CPU 和 記憶體 欄位,為觸發器設定資源分配。
在「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
- 將觸發器數量設為
0
,即可停用觸發器。這項作業不需要為觸發器指定 CPU 或記憶體。
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
}
}
}
}
調整網路伺服器參數
您可以指定 Airflow 網路伺服器在環境中使用的 CPU、記憶體和磁碟空間數量。舉例來說,您可以透過這種方式擴充 Airflow UI 的效能,以滿足大量使用者或大量受管理 DAG 的需求。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,點選「編輯」。
在「工作負載設定」窗格中,調整網路伺服器的參數。在「CPU」、「記憶體」和「儲存空間」欄位中,指定網頁伺服器的 CPU、記憶體和儲存空間數量。
按一下 [儲存]。
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
建構
environments.patch
API 要求。在這個要求中:
在
updateMask
參數中指定config.workloadsConfig.webServer
遮罩,以更新所有網路伺服器參數。您也可以為下列參數指定遮罩,藉此更新個別網頁伺服器參數: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
:網路伺服器的 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 和工作,請考慮選取較大的環境規模。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,點選「編輯」。
在「資源」>「核心基礎架構」項目中,點選「編輯」。
在「核心基礎架構」窗格中的「環境大小」欄位中,指定環境大小。
按一下 [儲存]。
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 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「Worker 節點」>「節點數量」項目中,按一下「編輯」。
在「Worker nodes configuration」窗格的「Node count」欄位中,指定環境中的節點數量。
按一下 [儲存]。
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
建立
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 資料庫的 Cloud SQL 執行個體機器類型。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「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 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「Web 伺服器機型」項目中,按一下「編輯」。
在「Web server configuration」窗格中的「Web server machine type」下拉式清單中,選取 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 網路伺服器執行個體的機器類型。
resource "google_composer_environment" "example" {
config {
web_server_config {
machine_type = "WS_MACHINE_TYPE"
}
}
}
更改下列內容:
WS_MACHINE_TYPE
:Airflow 網路伺服器執行個體的機器類型。
範例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}