Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面說明如何調整 Cloud Composer 環境的規模。
垂直和水平縮放
在 Cloud Composer 1 中,您不會為 Cloud Composer 和 Airflow 元件 (例如工作站和排程器) 定義特定 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」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,按一下「編輯」。
在「資源」>「排程人員人數」項目中,按一下「編輯」。
在「排程器設定」窗格的「排程器數量」欄位中,指定環境的排程器數量。
按一下 [儲存]。
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 觸發器的參數:
在「觸發條件」部分,於「觸發條件數量」欄位中,輸入環境中的觸發條件數量。
如果為環境設定至少一個觸發器,請使用「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」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「資源」>「工作負載設定」項目中,按一下「編輯」。
在「Workloads configuration」(工作負載設定) 窗格中,調整網路伺服器的參數。在「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_SERVER_STORAGE
:網頁伺服器的記憶體容量。
範例:
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
:網頁伺服器的記憶體容量 (以 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
:網頁伺服器的記憶體容量 (以 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 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 執行個體的機型
您可以變更 Cloud SQL 執行個體的機器類型,該執行個體會儲存環境的 Airflow 資料庫。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「Resources」(資源) >「Cloud SQL machine type」(Cloud SQL 機型) 項目中,按一下「Edit」(編輯)。
在「Cloud SQL configuration」(Cloud SQL 設定) 窗格中,從「Cloud SQL machine type」(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 server configuration」(網頁伺服器設定) 窗格中,從「Web server machine type」(網頁伺服器機器類型) 下拉式清單中,選取 Airflow 網頁伺服器的機器類型。
按一下 [儲存]。
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"
}
}