自動調度資源
本頁面說明自動調整大小的運作方式。閱讀本頁面之前,請先熟悉「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 擴充前,每個節點可儲存的資料量上限為 1 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 |
判斷節點數量上限
您選擇的節點數量上限應為叢集處理工作負載最大流量時所需的節點數量,即使您預期大部分時間不會達到該流量也一樣。Bigtable 絕不會擴充至超出需求的節點數量。您也可以將這個數字視為願意支付的節點數量上限。如需可接受的值,請參閱「自動調度參數」。
最大數量必須同時滿足您設定的 CPU 使用率目標和 Bigtable 設定的儲存空間使用率目標。
如果將叢集從手動配置變更為自動調度資源,請找出叢集在過去一個月左右的節點數上限。自動調度資源上限至少應為該數字。
如果您要為現有執行個體中的新叢集啟用自動調度資源,請使用執行個體中其他叢集的指標做為參考。
如果您有新的工作負載,但不確定工作負載的成長幅度,可以先估算滿足內建儲存空間使用率目標所需的節點數,然後再調整節點數。
如要計算出這個數字,請先預估您打算在叢集上儲存的資料量,然後將該數字除以您使用的儲存空間類型目標使用率。
舉例來說,如果您在 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 不會變更設定的值。因此,在完成擴充作業前,您可能會發現叢集的節點數量低於下限。
微調設定
請密切注意節點用量,並視需要調整設定,尤其是在首次啟用自動調度資源功能後。
用於複製的帳戶
在採用複寫功能的執行個體中,每個叢集的自動調度資源設定和活動,都完全獨立於執行個體中的其他叢集。您必須為執行個體中的每個叢集設定調度模式。
一般來說,對於已複製的執行個體,您應該為執行個體中的每個叢集啟用自動調度資源功能。執行個體中每個叢集的自動調度資源設定通常相同,但可能因每個叢集的用途、工作負載和效能需求而異。
由於複製執行個體中的叢集會執行額外工作來管理複製作業,因此您應為這些叢集選擇比單一叢集執行個體更高的節點數量上限。詳情請參閱「複寫和效能」。
存取權控管
如要設定自動調度資源功能,您必須是主體,且具備叢集和執行個體的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
記錄
Bigtable 每次擴充叢集時,都會發出系統事件稽核記錄。記錄項目內容大致如下:
Grew from 9 to 10 nodes to maintain CPU utilization at 60%.
您可以在 Google Cloud 控制台的 Bigtable 叢集總覽頁面,查看自動調度系統事件記錄。您也可以使用記錄檔探索工具查看這些記錄:
前往記錄檔探索工具:
選取適當的 Google Cloud 專案。
在「Query」(查詢) 欄位中輸入下列內容:
resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com" resource.labels.method="AutoscaleCluster"
點選「執行查詢」
「Query results」(查詢結果) 窗格會顯示過去一小時的記錄。
如要進一步瞭解如何查看記錄,請參閱 Cloud Logging。