自動調度資源

本頁面說明自動調度功能的運作方式。閱讀本頁面之前,請先熟悉「Bigtable 總覽」和「執行個體、叢集和節點」。

在 Bigtable 中,執行個體是叢集的容器,而叢集是處理要求的特定位置資源。每個叢集都有一或多個節點,也就是用於管理資料的運算資源。在執行個體中建立叢集時,您可以選擇手動分配節點或自動調度資源。

手動分配節點時,叢集中的節點數量會維持不變,直到您變更為止。啟用自動調度資源後,Bigtable 會持續監控叢集,並在必要時自動調整叢集中的節點數量。自動調度資源功能適用於所有 Bigtable 區域的 HDD 和 SSD 叢集。

您可以在 Google Cloud 控制台中、使用 gcloud 或使用 Cloud Bigtable Java 用戶端程式庫,設定自動調度資源。

自動調度資源的使用時機

在大多數情況下,建議啟用自動調度資源功能。自動調整規模的優點包括:

  • 成本 - 自動調度資源功能可協助您節省費用,因為 Bigtable 會盡可能減少叢集中的節點數量。這有助於避免過度佈建。
  • 效能:自動調度資源功能可讓 Bigtable 在工作負載變更或資料儲存空間需求增加時,自動將節點新增至叢集。這項功能可確保叢集有足夠的節點,滿足目標 CPU 使用率和儲存空間需求,進而維持工作負載效能目標。
  • 自動化:自動調度資源可降低管理複雜度。您不需要手動監控及調整叢集大小,也不必編寫應用程式來執行這些工作,因為 Bigtable 服務會為您處理這些事。

自動調度資源功能可能不適合下列工作負載類型,因為即使 Bigtable 在流量增加時會快速新增節點,但平衡額外節點可能需要時間。

  • 突發流量
  • 突然出現的批次工作負載

如果用量尖峰是可預測或定期排定的,您可以使用自動調度資源功能,並在預計用量暴增前調整設定。詳情請參閱「節點重新平衡時的延遲」。

記憶體內層和自動調度資源

Enterprise Plus 版執行個體中的叢集可以使用記憶體內層。 Bigtable 記憶體內層會使用全代管的垂直擴充功能來處理輸送量,讓叢集幾乎能立即回應尖峰的點讀取流量。垂直擴充功能會自動調整每個節點,以因應工作負載需求,並與 Bigtable 自動調度資源功能整合。如要進一步瞭解垂直擴充限制和記憶體內層級輸送量容量,請參閱「瞭解效能」。

當記憶體內層容量達到上限時,Bigtable 會根據自動調度資源設定,自動水平擴充叢集。

自動調度資源的運作方式

自動調度資源是指自動調整叢集大小的程序,也就是新增或移除節點。啟用自動調度資源後,Bigtable 會自動調整叢集大小。當叢集的工作負載或儲存空間需求量出現變化時,Bigtable 會擴充 (在叢集中新增節點) 或縮減 (從叢集中移除節點)。

Bigtable 自動調度功能會根據下列維度,判斷所需的節點數量:

  • CPU 使用率目標
  • 儲存空間使用率目標
  • 節點數量下限
  • 節點數量上限

每個調度維度都會產生建議的節點數量,而 Bigtable 會自動使用最高值。舉例來說,如果叢集需要 10 個節點才能達到儲存空間使用率目標,但需要 12 個節點才能達到 CPU 使用率目標,Bigtable 會將叢集擴充至 12 個節點。

隨著節點數量變化,Bigtable 會持續最佳化儲存空間,在節點間重新平衡資料,確保流量平均分配,不會有節點過載。

叢集擴充後,Bigtable 會自動重新平衡叢集中的節點,以達到最佳效能。在資源調度和重新平衡期間,所有要求都會繼續傳送至叢集。詳情請參閱「資源調度限制」一節。

如果叢集已擴充至節點數量上限,且 CPU 使用率超出目標,要求可能會發生高延遲或失敗。如果叢集擴充至節點數量上限,且超出儲存空間用量限制,寫入要求就會失敗。如要進一步瞭解儲存空間上限,請參閱「每個節點的儲存空間」一文。

將節點新增至小型叢集 (例如單一節點叢集) 時,叢集會重新平衡,因此您可能會發現延遲時間暫時增加。這是因為額外節點會使叢集大小成比例增加一倍。同樣地,如果叢集從兩個節點縮減為一個節點,可能會發生延遲。

縮減叢集資源時,移除節點的速度會比擴充資源時慢,以免影響延遲。詳情請參閱「資源調度限制」一節。

自動調度資源參數

建立或編輯叢集並選擇自動調度資源時,請定義 CPU 使用率目標、節點數量下限和上限的值。您可以設定儲存空間使用率目標,也可以維持預設值 (50%,SSD 為 2.5 TB,HDD 為 8 TB)。

參數 說明
CPU 使用率目標

叢集 CPU 容量的百分比。可設定為 10% 至 80%。當叢集的 CPU 使用率超過您設定的目標時,Bigtable 會立即為叢集新增節點。如果 CPU 使用率遠低於目標值,Bigtable 就會移除節點。詳情請參閱「判斷 CPU 使用率目標」。

節點數下限

Bigtable 會將叢集縮減至這個節點數量下限。如果啟用2 倍節點資源調度功能 (Enterprise Plus 的預設設定),則必須為偶數。這個值必須大於零,且不得低於您為節點數上限設定值的 10%。舉例來說,如果節點數量上限為 40,節點數量下限就必須至少為 4。10% 的規定是硬性限制。詳情請參閱「判斷節點數量下限」。

節點數上限

叢集可擴充的節點數量上限。 如果啟用2 倍節點資源調度功能 (Enterprise Plus 的預設設定),則必須為偶數。這個值必須大於零,且等於或大於節點數下限。該值不得超過您為節點數量下限選擇的數字 10 倍。10 倍是硬性限制。 詳情請參閱「判斷節點數量上限」。

儲存空間使用率目標

在 Bigtable 擴充前,您可以在 SSD 或 HDD 叢集中儲存的每個節點最大容量 (以 TB 為單位)。這項目標可確保您隨時都有足夠的節點,可處理儲存資料量的波動。詳情請參閱「判斷儲存空間使用率目標」。這個目標不含不常存取層。

SSD 和不常存取層級的總用量

Bigtable 向上擴充前,您可以在 SSD 和不常存取叢集中儲存的每個節點最大 TB 數。這項目標可確保您隨時都有足夠的節點,可處理儲存資料量的波動。詳情請參閱本文的「分層儲存空間和自動調度資源」一節。

設定自動調度資源功能

本節說明如何選擇自動調整規模參數。設定初始值後,請監控叢集,並視需要調整數值。

決定 CPU 使用率目標

請根據您的專屬工作負載設定 CPU 使用率目標。叢集的最佳目標取決於工作負載的延遲和輸送量需求。詳情請參閱「規劃 Bigtable 容量」。

一般來說,如果延遲時間過長,應降低 CPU 使用率目標。

決定儲存空間使用率目標

如果您的應用程式對延遲時間很敏感,請將儲存空間使用率維持在 60% 以下。如果應用程式對延遲時間不敏感,您可以選擇 70% 以上的儲存空間使用率目標。詳情請參閱「規劃 Bigtable 容量」。

自動調度資源功能會以每個節點的儲存空間位元組數表示儲存空間使用率,而非百分比。儲存空間使用率目標是針對每個節點指定,但會套用至整個叢集。節點的容量限制為:SSD 儲存空間每節點 5 TB,HDD 儲存空間每節點 16 TB。

下表顯示一般儲存空間用量目標金額/目標百分比。 Google Cloud 控制台接受每個節點的 TB 值,而 gcloud CLI、API 和 Cloud Bigtable 用戶端程式庫則接受每個節點的整數 GiB 值。

百分比 SSD HDD
80% 4 TB 或 4,096 GiB 12.8 TB 或 13,107 GiB
70% 3.5 TB 或 3,584 GiB 11.2 TB 或 11,468 GiB
60% 3 TB 或 3,072 GiB 9.6 TB 或 9,830 GiB
50% 2.5 TB 或 2,560 GiB 8 TB 或 8,192 GiB

分層儲存空間和自動調度資源

分級式儲存空間 (搶先版) 不會影響本文件「判斷儲存空間使用率目標」一節所述的 SSD 自動調度。啟用分層儲存空間的不常存取功能時,自動調度資源功能也會確保 SSD 和不常存取的儲存空間加總不會超過每個節點的儲存空間上限 (視版本而定)。達到上限時,Bigtable 會自動擴充。

  • Enterprise 版:每個節點的上限為 32 TB。
  • Enterprise Plus 版本:每個節點的限制為 32 TB 或 64 TB。

舉例來說,在 SSD 叢集中,如果您將每個節點的儲存空間使用率目標設為 2.5 TB (50%),且不常存取的使用量夠高,可將分級式儲存空間的儲存空間使用量推至上限,Bigtable 就會新增節點。即使 SSD 用量維持在 50% 的目標範圍內,仍可能發生這種情況。

下表說明自動調度資源功能如何根據 SSD 使用量和不常存取的使用量,建議節點數量:

情境 儲存空間使用率目標 使用率 SSD 用量 不常存取的使用量 SSD 和不常存取的儲存空間總和 建議節點數
SSD 使用量在目標範圍內,且沒有不常存取的使用量。 5 TB 100% 小於 5 TB 0 TB 小於 5 TB 1
SSD 用量超過每個節點的儲存空間上限。 5 TB 100% 6 TB 0 TB 6 TB 2
SSD 使用量和不常存取的使用量在分級式儲存空間限制內。 5 TB 100% 5 TB 27 TB 32 TB 1
分層儲存空間用量超過分層儲存空間上限。 5 TB 100% 5 TB 28 TB 33 TB 2
SSD 用量幾乎超過目標,且沒有不常存取的使用量。 3 TB 60% 3 TB 0 TB 3 TB 1
SSD 使用量即將超過 SSD 使用量目標,且分層使用量即將超過分層儲存空間上限。 3 TB 60% 3 TB 29 TB 32 TB 1
SSD 使用量超出 SSD 儲存空間目標,且沒有不常存取的使用量。 2.5 TB 50% 4 TB 0 TB 4 TB 2
分層用量超過分層儲存空間上限。 2.5 TB 50% 2 TB 31 TB 33 TB 2

如要進一步瞭解分層儲存空間,請參閱「分層儲存空間總覽」。

判斷節點數量上限

您選擇的節點數量上限應為叢集處理工作負載最高流量時所需的節點數量,即使您預期大部分時間不會達到該流量也一樣。Bigtable 絕不會擴充至超出需求的節點數量。您也可以將這個數字視為願意支付的節點數量上限。如要瞭解可接受的值,請參閱「自動調度參數」。

節點數量上限必須足以達到您設定的 CPU 使用率目標和 Bigtable 設定的儲存空間使用率目標。

如果將叢集從手動配置變更為自動調度資源,請找出叢集在過去一個月左右的節點數上限,自動調度資源上限至少應為該數字。

如果您要為現有執行個體中的新叢集啟用自動調度資源,請使用執行個體中其他叢集的指標做為參考。

如果您有新的工作負載,但不確定工作負載的成長幅度,可以先估算滿足內建儲存空間使用率目標所需的節點數,然後再調整節點數。

如果啟用分層儲存空間,則每個節點的儲存空間上限為 32 TB (Enterprise) 或 64 TB (Enterprise Plus)。即使 SSD 使用量不高,如果非經常存取層中有大量資料,仍可能觸發節點擴充。

如要計算這個數字,請先預估您打算在叢集上儲存的資料量,然後將該數字除以所用儲存空間類型的儲存空間使用率目標。

舉例來說,如果您在 SSD 叢集上儲存 10 TB 的資料,可以將 10 TB 除以 2.5 TB,這是使用自動調度資源的 SSD 叢集預設的儲存空間使用率目標。結果為 4,表示可處理該資料量的節點數為 4,最大值應高於該數字。

使用相同公式,以下範例顯示部分儲存空間量可能需要的節點數量:

每個叢集的 SSD 儲存空間 節點數量上限最小值
25 TB 10
35 TB 14
50 TB 20

啟用自動調度資源功能並啟動叢集後,請監控叢集,並確認您為節點數量上限選擇的值至少與 recommended number of nodes for CPU target 和 recommended number of nodes for storage target 一樣高。

判斷節點數量下限

您可以將下限設為 1,確保 Bigtable 盡可能縮減至最小、最具成本效益的大小。Bigtable 會自動防止節點數量低於維持 CPU 和儲存空間使用率目標所需的最低數量,因此叢集絕不會過小。如需可接受的值,請參閱「自動調度參數」。

不過,在許多情況下,您會想將這個值設為大於 1。在下列情況中,請選擇較高的數字或提高節點數量下限:

  • 您即將舉辦尖峰規模活動,預期流量會暫時增加,並希望確保有足夠的容量。
  • 您的應用程式傳送的流量有尖峰。新增節點時,Bigtable 會自動重新平衡至新節點。由於這個程序可能需要幾分鐘,因此建議您採取保守做法,選擇較高的下限,讓叢集能順暢地因應尖峰流量。
  • 增加節點數量上限。節點數下限一律不得超過節點數上限的 10%。舉例來說,如果將上限設為 30,下限就必須至少設為 3。

如果提高叢集的節點數下限值,Bigtable 會立即嘗試將叢集擴展至新的下限值。不過,標準限制仍適用;如果某個可用區的節點不足,系統不會佈建額外節點來達到設定的下限。Bigtable 會持續嘗試新增節點,並為每次失敗的嘗試建立稽核記錄項目,直到叢集成功擴充至新的最低節點數為止。在這種情況下,Bigtable 不會變更設定的值。因此,在完成擴充作業前,您可能會發現叢集的節點數量低於下限。

微調設定

啟用自動調度資源後,請務必監控其行為,並視需要調整設定。使用監控指標觀察下列項目:

  • 建議節點數:請密切注意 recommended_node_count_for_cpu 和 recommended_node_count_for_storage 指標。這些指標分別代表根據 CPU 和儲存空間使用率目標,建議使用的節點數量。
  • 佈建的節點數:比較建議的節點數與實際佈建的節點數。如果叢集持續使用的節點數超過建議值,您可以考慮減少最少節點數,以降低成本。
  • 節點數上限:請確認節點數上限夠高,叢集才能擴充來因應需求。如果發現叢集經常達到節點數量上限,請增加上限,以提供更多容量。

您也可以調整 CPU 使用率目標,提升效能。如果發現延遲問題,您可能需要降低 CPU 使用率目標,確保叢集在需求增加時更積極地擴充。反之,如果叢集持續過度佈建,且延遲時間可接受,則可考慮提高 CPU 目標。

用於複製的帳戶

在採用複寫功能的執行個體中,每個叢集的自動調度資源設定和活動,都完全獨立於執行個體中的其他叢集。您必須為執行個體中的每個叢集設定調度模式。

一般來說,對於已複製的執行個體,您應該為執行個體中的每個叢集啟用自動調度資源功能。執行個體中每個叢集的自動調度資源設定通常相同,但可能會因每個叢集的使用案例、工作負載和效能需求而有所不同。

由於複寫執行個體中的叢集會執行一些額外工作來管理複寫,因此您應為這些叢集選擇比單一叢集執行個體更高的節點數量上限。詳情請參閱「複寫和效能」。

存取控管

如要設定自動調度資源,您必須是具有叢集和執行個體 create 和 update 權限的角色主體。

監控

Bigtable 提供多項指標,協助您瞭解 Bigtable 自動調度功能如何運作,以及如何因應工作負載需求調度資源。您也可以根據這些指標,評估目前的設定是否符合業務工作負載和成本需求。舉例來說,如果您發現叢集的節點數量經常接近節點數量上限,不妨考慮提高上限。如要進一步瞭解如何監控 Bigtable 資源,請參閱「監控執行個體」。

Google Cloud 控制台的叢集總覽頁面會以圖表顯示下列指標。您也可以使用 Cloud Monitoring 查看這些指標。

  • bigtable.googleapis.com/cluster/autoscaling/min_node_count
  • bigtable.googleapis.com/cluster/autoscaling/max_node_count
  • bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_cpu
  • bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_storage
  • 僅限 Enterprise Plus:bigtable.googleapis.com/memory_layer/request_unit_usage

記錄

Bigtable 每次擴充叢集時,都會發出系統事件稽核記錄。記錄項目內容大致如下:

Grew from 9 to 10 nodes to maintain CPU utilization at 60%.

您可以在 Google Cloud 控制台的 Bigtable 叢集總覽頁面上,查看自動調度系統事件記錄。您也可以使用記錄檔探索工具查看這些記錄:

  1. 前往 Logs Explorer:

    前往「Logs Explorer」

    選取適當的 Google Cloud 專案。

  2. 在「查詢」欄位中,輸入下列內容:

    resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com"
    resource.labels.method="AutoscaleCluster"
    
  3. 點選「執行查詢」

    「Query results」(查詢結果) 窗格會顯示過去一小時的記錄。

如要進一步瞭解如何查看記錄,請參閱 Cloud Logging。

後續步驟