自動調度資源

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

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

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

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

何時使用自動調度資源

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

  • 成本 - 自動調度資源可協助您節省成本,因為 Bigtable 會盡可能減少叢集中的節點數量。這有助於避免過度佈建。
  • 效能 - 自動調度資源功能可讓 Bigtable 在工作負載變更或資料儲存空間需求增加時,自動將節點新增至叢集。這項功能可確保叢集有足夠的節點,達到目標 CPU 使用率和儲存空間需求,進而維持工作負載效能目標。
  • 自動化:自動調度資源可降低管理複雜度。您不需要手動監控及調整叢集大小,也不必編寫應用程式來執行這些工作,因為 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 倍節點資源調度,則必須為偶數。這個值必須大於零,且不得低於您為節點數上限設定值的 10%。舉例來說,如果節點數量上限為 40,節點數量下限就必須至少為 4。10% 的規定是硬性限制,如需相關指引,請參閱「判斷節點數量下限」。

節點數量上限

叢集可擴充的節點數量上限。 如果啟用2 倍節點資源調度,則必須為偶數。這個值必須大於零,且大於或等於節點數下限。這個值不得超過您為節點數量下限選擇的數字 10 倍。10 倍是硬性限制,如需相關指引,請參閱「判斷節點數量上限」。

儲存空間使用率目標

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

固態硬碟和不常存取儲存空間的總用量

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 和不常存取儲存空間的總和不會超過每個節點 32 TB 的限制。達到上限時,Bigtable 會自動擴充。

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

下表有助於瞭解自動調度功能如何根據 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 的儲存空間限制。即使 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 targetrecommended number of nodes for storage target 一樣高。

決定節點數量下限

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

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

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

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

微調設定

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

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

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

用於複製的帳戶

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

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

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

存取權控管

如要設定自動調度資源功能,您必須是主體,且具備叢集和執行個體的createupdate 權限

監控

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

記錄

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

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

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

  1. 前往記錄檔探索工具:

    前往記錄檔探索工具

    選取適當的 Google Cloud 專案。

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

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

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

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

後續步驟