自動調度資源

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

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

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

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

自動調度資源的使用時機

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

  • 費用: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。

下表列出一般儲存空間使用率目標百分比的目標量。 Cloud de Confiance 控制台接受的值為每個節點的 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 用量幾乎超過 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 設定的儲存空間使用率目標。

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

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

如果您有新的工作負載,且不確定其成長方式,可以估算符合內建儲存空間使用率目標所需的節點數量,然後再調整數量。

如果啟用分級式儲存空間,則必須考量每個節點的儲存空間限制,Enterprise 為 32 TB,Enterprise Plus 則為 64 TB。即使 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 和儲存空間使用率目標所需的最低數量,因此叢集不會過小。如要瞭解可接受的值,請參閱「自動調度資源參數」。

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

  • 您即將舉辦尖峰規模活動,預期流量會暫時增加,因此想確保有足夠的容量。
  • 應用程式傳送的流量不穩定。新增節點時,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 資源,請參閱「監控執行個體」。

下列指標會以圖表形式顯示在 Cloud de Confiance 控制台的叢集總覽頁面中。您也可以使用 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%.

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

  1. 前往「Logs Explorer」(記錄檔探索工具):

    前往「Logs Explorer」

    選取適當的 Cloud de Confiance 專案。

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

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

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

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

後續步驟