自動調度資源
本頁面說明自動調度資源的運作方式。閱讀本頁面之前,請先熟悉 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_countbigtable.googleapis.com/cluster/autoscaling/max_node_countbigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_cpubigtable.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 叢集總覽頁面,查看自動調度資源系統事件記錄。您也可以使用記錄檔探索工具查看:
前往「Logs Explorer」(記錄檔探索工具):
選取適當的 Cloud de Confiance 專案。
在「Query」(查詢) 欄位中輸入下列內容:
resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com" resource.labels.method="AutoscaleCluster"點選「執行查詢」。
「Query results」(查詢結果) 窗格會顯示過去一小時的記錄。
如要進一步瞭解如何查看記錄,請參閱「Cloud Logging」。