自動調度資源
本頁面說明自動調度資源的運作方式。閱讀本頁面之前,請先熟悉「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 為單位)。這個目標可確保您隨時都有足夠的節點,可處理儲存資料量的波動。詳情請參閱「判斷儲存空間使用率目標」。這個目標不含不常存取層。 |
| 固態硬碟和不常存取儲存空間的總用量 |
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,如果啟用 2 倍節點擴充功能,則為 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_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%.
您可以在 Google Cloud 控制台的 Bigtable 叢集總覽頁面上,查看自動調度系統事件記錄。您也可以使用記錄檔探索工具查看這些記錄:
前往 Logs Explorer:
選取適當的 Google Cloud 專案。
在「Query」(查詢) 欄位中,輸入下列內容:
resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com" resource.labels.method="AutoscaleCluster"點選「執行查詢」
「Query results」(查詢結果) 窗格會顯示過去一小時的記錄。
如要進一步瞭解如何查看記錄,請參閱 Cloud Logging。