本頁說明受管理自動調度器的運作方式,以及使用 Spanner 受管理自動調度器時的費用和限制。此外,這份指南也提供相關資訊,協助您決定如何設定代管自動調度器。
代管式自動配置器的運作方式
啟用代管自動調度資源後,Spanner 會自動調整執行個體大小。您可以在 Spanner 執行個體或執行個體分割區中啟用代管自動調度器 (處於預覽版)。當負載增加或減少時,這項功能會因應執行個體的工作負載或儲存空間需求變化,受管理自動調度器會調度資源,為執行個體新增運算能力,或調度資源,從執行個體移除運算能力。
設定受管理的自動調度資源功能時,您可以為小型執行個體使用處理單元,或為大型執行個體使用節點。在本文件中,我們使用「運算資源」一詞代表節點或處理單元。
Spanner 代管自動配置器會根據下列因素,判斷所需的運算容量:
- 高優先順序 CPU 使用率目標
- CPU 總使用率目標
- 儲存空間使用率目標
- 下限
- 上限
每個調整大小的維度都會產生建議的執行個體大小,而 Spanner 會自動使用最大的執行個體大小。舉例來說,如果執行個體需要 10 個節點才能達到儲存空間使用率目標,但需要 12 個節點才能達到 CPU 使用率目標,Spanner 會將執行個體擴充至 12 個節點。
隨著運算能力變更,Spanner 會持續最佳化儲存空間。在所有伺服器之間重新平衡資料,確保流量平均分配,且不會有任何伺服器過載。詳情請參閱「限制」一節。
如果代管自動調度器將執行個體擴充至上限,但工作負載仍導致 CPU 使用率高於目標值,工作負載要求可能會出現較高的延遲時間或失敗。如果執行個體擴充至運算容量上限,但工作負載需要的儲存空間超出上限,寫入要求可能會失敗。如要瞭解是否已達到目標上限,請在 Google Cloud 控制台的「系統洞察」頁面中,查看代管自動調度資源系統事件記錄。詳情請參閱儲存空間限制。
當 Spanner 縮減執行個體時,移除運算資源的速度會比擴增時慢,以減少對延遲的影響。
您可以選擇在執行個體中,以非對稱的方式自動調度唯讀副本的資源。 您無法非對稱地自動調度執行個體分區。詳情請參閱「非對稱自動調度唯讀資源」。
定價
啟用代管自動調度資源前,您設定的 Spanner 執行個體或執行個體分割區,以及您為代管自動調度資源設定的限制,都會影響 Spanner 總費用。
舉例來說,如果您過去手動設定 Spanner 執行個體,確保有足夠的運算容量隨時處理尖峰工作負載,那麼使用受管理自動調度資源功能後,當執行個體處於閒置狀態時,這項功能會減少運算容量,因此您的成本可能會降低。
如果您過去是手動設定 Spanner 執行個體,確保有足夠的運算資源來處理平均工作負載,但工作負載流量增加時,整體效能就會下降,那麼使用代管自動調度資源時,成本可能會較高,因為執行個體忙碌時,代管自動調度資源可能會增加運算資源。但這能為使用者提供更穩定的效能。
您可以將節點或處理單元上限設為您想支出的金額,藉此限制 Spanner 執行個體的最高費用。
與只設定高優先順序 CPU 使用率目標相比,在 Spanner 執行個體上設定總 CPU 使用率目標時,您可能會發現所用的運算資源增加,因此費用也會增加。不過,如果設定這個選項,使用者體驗會大幅提升,效能也會有所改善。
限制
在執行個體或執行個體分割區上啟用或變更代管自動調度資源功能時,會受到下列限制:
- 啟用受管理自動調度資源功能後,您就無法移動執行個體。您必須先停用受管理自動調度器,然後再移動執行個體。執行個體遷移後,您可以重新啟用代管自動調度器。
- 您必須將自動調度資源執行個體的下限設為 1000 個處理單元以上,或 1 個節點以上。
- 在現有執行個體上啟用自動調度資源功能時,現有執行個體容量可能低於您在代管自動調度器上設定的下限值。 不過,執行個體啟動時,會自動擴充至設定的最小值。舉例來說,如果執行個體有一個節點,但您將最小值設為兩個節點,當您啟動執行個體時,系統會自動擴充至兩個節點。
- 您無法非對稱地自動調度執行個體分區。
- 如果分割區中的刊登位置列數超過 1 億,請勿啟用自動調度資源功能。這是地理分區限制。
代管式自動調度資源參數
建立或編輯執行個體或執行個體分割區,並選擇啟用受管理自動調度器時,請定義下表顯示的值。
| 參數 | 說明 |
|---|---|
| 高優先順序 CPU 使用率目標 | 執行個體 CPU 容量百分比,用於高優先順序工作。這個值必須介於 10% 到 90% 之間。當執行個體的高優先順序 CPU 使用率超過您設定的目標時,Spanner 會立即為執行個體增加運算資源。如果 CPU 使用率遠低於目標值,Spanner 就會移除運算資源。詳情請參閱「判斷高優先順序 CPU 使用率目標」。 |
| CPU 總使用率目標 | 執行個體總 CPU 容量的百分比,用於高、中和低優先順序工作。這個值必須介於 10% 到 90% 之間。當執行個體的總 CPU 使用率超過您設定的目標時,Spanner 會立即為執行個體增加運算資源。如果總 CPU 使用率明顯低於目標,Spanner 就會移除運算資源。詳情請參閱「判斷 CPU 總使用率目標」。 |
| 儲存空間使用率目標 | 節點上可用的儲存空間百分比,超過這個百分比後,Spanner 就會擴充。這項目標可確保您隨時都有足夠的運算容量,可處理儲存資料量的波動。這個值必須介於 10% 至 99% 之間。如需相關指引,請參閱「判斷儲存空間使用率目標」。 |
| 下限 | Spanner 將執行個體運算能力調降至的最低值。最小值不得低於您為上限設定值的 10%。舉例來說,如果節點數量上限為 40 個,則下限必須至少為 4 個節點。10% 的規定是硬性限制,如需相關指引,請參閱「判斷下限」。 |
| 上限 | Spanner 擴充執行個體時的運算資源上限。如果是節點,這個值必須大於 1 個節點 (或 1, 000 個處理單元),且等於或大於節點或處理單元的下限。這個值不得超過您為運算容量下限選擇的數字 10 倍。這項 10 倍的規定是硬性限制。如需相關指引,請參閱「判斷上限」。 |
設定受管理自動調度器
本節說明如何決定受管理自動調整參數的選用號碼。設定初始值後,請監控執行個體,並視需要調整數值。
決定高優先順序 CPU 使用率目標
執行個體或執行個體分割區的最佳目標取決於工作負載的延遲和輸送量需求。如要查看區域、雙區域和多區域執行個體設定的 CPU 使用率上限建議,請參閱「CPU 使用率偏高快訊」。
如果 CPU 使用率接近或超過 100%,效能可能會降低。如果工作負載容易受到延遲或效能影響,請考慮將 CPU 總目標自訂為較低的值。請注意,這麼做可能會產生較高的費用。
一般來說,如果發現延遲時間過長,應降低 CPU 使用率目標。
您也可以設定總 CPU 使用率和高優先順序 CPU 使用率的目標。詳情請參閱「判斷 CPU 使用率目標」。
判斷 CPU 總使用率目標
設定總 CPU 使用率目標後,Spanner 會自動調度資源,確保高、中、低優先順序工作有足夠的容量。
如果工作負載對延遲時間很敏感,或是希望系統工作盡快完成,您必須設定 CPU 總目標,確保執行個體有足夠的容量。設定 CPU 總目標時,您可能需要支付較多費用,但應用程式可為顧客提供更優質的體驗。
如果已設定 CPU 總用量目標,但延遲時間仍過高,請降低 CPU 總用量目標。
為盡量提高寫入作業和索引建立作業的輸送量,建議您將區域執行個體的 CPU 總目標設為 70%,多區域執行個體則設為 50%。如果未選取高優先順序目標,這項功能在容錯移轉期間也能正常運作。 不過,這些目標可能會產生較高的費用。如果擔心費用,建議將 CPU 總目標設為 85%。這項機制可提供額外資源,吸收尖峰流量,避免因資源飽和 (使用率達 100%) 而導致延遲。
根據預設,Spanner 會節流耗用大量資源的背景作業 (例如建立索引),優先處理使用者流量。您可以設定較低的 CPU 總用量目標 (例如 <=60%),加快這些背景作業的執行速度。這會向自動配置器發出信號,要求配置額外的運算資源,進而提高系統工作的總處理量。但這可能會增加費用。如要暫時提高索引建立的輸送量,可以設定較低的 CPU 總目標,直到索引建立完成為止。
您也可以設定總 CPU 使用率和高優先順序 CPU 使用率的目標。詳情請參閱「判斷 CPU 使用率目標」。
判斷這兩個 CPU 使用率目標
如果您同時設定總 CPU 和高優先順序 CPU 使用率的目標,自動調度資源功能會同時評估這兩項指標。接著,系統會選取建議的節點或處理單元數量中較高者。這可確保執行個體會擴充,以滿足較嚴苛的需求,同時維持重要工作負載的效能,並完成背景工作。
同時設定高優先順序 CPU 和 CPU 總使用率目標時,高優先順序工作的 CPU 使用率會計入總使用率,低優先順序和中優先順序工作也是如此。如果同時選取這兩個選項,高優先順序 CPU 使用率目標的值必須小於總 CPU 使用率目標。
一般來說,如果延遲時間過長,應降低 CPU 使用率目標。
一般來說,我們建議將 CPU 使用率設為下列目標,確保容錯移轉的可靠性:
| 執行個體類型 | CPU 總使用率目標 | 高優先順序 CPU 使用率目標 |
|---|---|---|
| 區域執行個體 | 70% | 65% |
| 多區域執行個體 | 50% | 45% |
視工作負載而定,我們也建議採用下列更具體的 CPU 使用率目標:
| 工作負載類型 | 建議的 CPU 目標 | 缺點 |
|---|---|---|
| 需要高輸送量,且寫入量大的工作負載 | CPU 總使用率目標:70% | 以延遲時間為代價,提高處理量 |
| 易受延遲影響,且讀取量大的工作負載 | 總 CPU 使用率目標:80% 高優先順序 CPU 使用率目標:65% (單一區域) 或 45% (多區域) |
以較高成本預測尾端延遲 |
| 工作負載優先考量成本效益 | 總 CPU 使用率目標:85% 高優先順序 CPU 使用率目標:65% (單一區域) 或 45% (多區域) |
成本和效能合理,但索引建立作業可能會延遲 |
決定儲存空間使用率目標
如果是自動調度,儲存空間使用率目標會以每個節點的百分比表示。如果執行個體或執行個體分割區為 1 個節點 (1000 個處理單元) 以上,每個節點的儲存空間大小上限為 10 TiB。
決定上限
您選擇的運算容量上限值,等於執行個體或執行個體分割區處理最大流量所需的運算容量,即使您預期大部分時間不會達到該流量。Spanner 絕不會擴充至超過需求的運算容量。您也可以將這個數字視為您願意支付的最高運算容量金額。如要進一步瞭解可接受的值,請參閱「自動配置器參數」。
上限必須允許您為自動調度設定的 CPU 使用率目標和儲存空間使用率目標。
如果要將執行個體從手動分配變更為代管自動調度,請找出執行個體在過去一到兩個月內使用的最高運算容量。因此,受管理自動調整程式的上限至少應為該值。
如要為新執行個體啟用代管自動調度資源功能,請查看其他執行個體的指標,並在設定上限時做為參考。
如果您有新的工作負載,但不確定會如何成長,可以估算滿足內建儲存空間用量目標所需的運算容量,然後稍後再調整數量。
您也需要瞭解節點的剩餘配額,因為代管自動調度器無法將執行個體設定為超過配額的運算容量。詳情請參閱「節點限制」一節。
啟用自動調度資源後,請監控執行個體,並確認您為上限選擇的值至少與 CPU 目標的建議上限和儲存空間目標的建議上限一樣高。
決定最低限制
您可以為代管自動調度器設定下限,確保 Spanner 執行個體或執行個體分割區可以縮減至最小、最具成本效益的大小。Spanner 會自動防止節點數量低於維持 CPU 和儲存空間使用率目標所需的最低數量。
代管自動調度器允許的最小值為 1 個節點或 1,000 個處理單元。如果現有執行個體的容量低於代管自動調度資源設定的最小值,當您啟用自動調度資源功能並啟動執行個體時,執行個體會自動擴充至該最小值。
啟動具有受管理自動調度資源功能的執行個體後,您應執行初步測試,確保執行個體能以設定的最小大小運作。您應定期再次測試,確保功能持續正常運作。
如要進一步瞭解可接受的值,請參閱「受管理自動調度器參數」。
在許多情況下,您會希望將最小值設為大於一。在下列情況中,請選擇較高的數字或提高下限:
- 您預期流量會暫時增加,且即將舉辦尖峰規模活動,因此想確保有足夠的運算容量。
- 您的應用程式會傳送尖峰流量。新增運算能力時,Spanner 會自動重新平衡,以使用新的節點或處理單元。由於這項程序可能需要幾分鐘,建議您採取保守做法,選擇較高的最低值。這樣一來,執行個體就能順利因應尖峰流量。
- 提高運算容量上限。最小值一律須為運算容量目標上限的 10% 以上。舉例來說,如果將節點數量上限設為
30,節點數量下限就必須設為至少3。
如果提高執行個體的運算資源下限值,Spanner 會立即嘗試將執行個體擴展至新的下限值。適用標準限制。配額用盡時,變更代管自動調度資源設定的要求會失敗,且設定不會更新。
首次設定受管理自動調度器後,以及之後定期進行時,請測試執行個體,確保執行個體能以最小大小運作。
Google Cloud CLI 參數標記和限制
使用 Google Cloud CLI 設定受管理自動調整程式時,必須設定一些必要旗標。您可以選擇使用節點或處理單元,並透過選用旗標指出是否要使用。如要進一步瞭解如何使用代管自動配置器建立新的執行個體或執行個體分割區,或在現有執行個體或執行個體分割區上啟用代管自動配置器,請參閱下列操作說明指南:
在執行個體上啟用代管自動調度器時,必須使用下列標記:
autoscaling-high-priority-cpu-percentautoscaling-total-cpu-percentautoscaling-storage-percent
設定 CPU 百分比時,您可以選取其中一個或兩個選項。
如果選擇使用節點,啟用受管理自動調整資源配置時,也必須使用下列兩個旗標:
autoscaling-min-nodesautoscaling-max-nodes
如果選擇使用處理單元,啟用代管自動調整功能時,也必須使用下列兩個標記:
autoscaling-min-processing-unitsautoscaling-max-processing-units
使用 Google Cloud CLI 將代管自動配置器新增至現有執行個體時,有下列限制:
- 您無法將
--nodes旗標與--autoscaling-min-nodes或--autoscaling-max-nodes旗標搭配使用,因為使用--nodes會設定特定節點數量,而非資源調度範圍。同樣地,您無法將--processing-units標記與autoscaling-min-processing-units或autoscaling-max-processing-units標記搭配使用,因為使用--processing-units會設定特定數量的處理單元,而非縮放範圍。 - 您無法混用節點和處理單元的旗標。舉例來說,您無法將
--autoscaling-max-nodes與autoscaling-min-processing-units搭配使用。
微調設定
請密切注意運算容量用量,並視需要調整設定,尤其是在首次啟用受管理自動配置器後。建議使用 Google Cloud 控制台的「系統深入分析」頁面。
非對稱自動調度唯讀資源
啟用受管理自動調度器後,您也可以啟用唯讀副本,並與其他副本分開自動調度。非對稱自動調度唯讀資源可讓您根據唯讀地區的使用情況,控管運算資源上限和 CPU 使用率目標。這項功能可充分滿足本機讀取流量模式,並盡可能提高成本效益。您可以為每個唯讀備用資源區域設定下列自動調度資源設定參數:
- 運算容量下限
- 運算容量上限
- 高優先順序 CPU 使用率目標
- CPU 總使用率目標
- 停用 CPU 總數
- 停用高優先順序 CPU
您可以建立新執行個體或更新現有執行個體,啟用非對稱自動調度資源並設定這些參數。
在現有執行個體上啟用非對稱自動調整功能時,下列規則適用於每個副本:
- 如果副本目前的運算資源介於區域設定的自動調度資源下限和上限之間,副本的運算資源就不會變更。
- 如果副本目前的運算容量低於為該區域設定的自動調度資源下限,系統會將運算容量調整為自動調度資源下限。
- 如果副本目前的運算資源高於為該區域設定的自動調度資源上限,系統會調整運算資源,使其符合自動調度資源上限。
- 如果兩個 CPU 目標都設在基本層級,且您想在副本層級停用 CPU 目標,就必須明確使用
disable_total_cpu_autoscaling或disable_high_priority_cpu_autoscaling。
此外,使用非對稱自動配置器時,建議您在所有副本中設定相同的目標集,確保在容錯移轉事件期間,自動配置行為一致。詳情請參閱「容錯移轉注意事項」。
容錯移轉疑慮
如要在服務中斷期間維持高可用性和效能,請務必確保執行個體有足夠的運算容量來處理流量,以免可用區 (適用於區域執行個體) 或整個區域 (適用於雙區域和多區域執行個體) 無法使用。
使用非對稱自動調度器時,請務必對所有副本套用相同的用量目標。設定不一致可能會導致容錯移轉期間出現容量瓶頸。
請考量下列情境:
- 副本 A 已設定高優先順序和總 CPU 目標。
- 副本 B 只設定了高優先順序 CPU 目標。
如果容錯移轉將流量從副本 A 轉移至副本 B,副本 B 只會根據高優先權要求進行擴充。因此,中低優先順序的工作 (例如背景系統程序或分析查詢) 不會觸發 Replica B 上的必要自動調整資源配置,可能導致工作資源不足,或非重要工作負載的延遲時間增加。
為避免發生問題,建議採取下列做法:
- 請務必在所有副本中定義相同的自動調度資源目標,確保自動調度資源行為一致。舉例來說,假設您設定唯讀副本,同時指定高優先順序 CPU 目標和總 CPU 目標。如果讀寫備用資源只設定高優先順序的 CPU 目標,容錯移轉期間,中低優先順序的流量不會觸發讀寫備用資源的自動調整功能。
- 請確保目標使用率有足夠的容量,可因應流量爆增的情況,例如某個副本必須突然吸收失敗同層級的負載時。
- 請定期查看 Cloud Monitoring 指標,確認次要副本有足夠容量,可支援主要部署項目的合併流量。
存取權控管
如要設定代管自動調度器,您必須是主體,且所屬角色具有要設定的執行個體或執行個體分割區的建立及更新權限。
監控
Spanner 提供多項指標,協助您瞭解代管自動配置器在擴充及縮減資源以滿足工作負載需求時,運作情況是否良好。這些指標也有助於評估設定是否符合業務工作負載和成本需求。舉例來說,如果發現執行個體或執行個體分割區的節點數量經常接近節點數量上限,可以考慮提高上限。如要進一步瞭解如何監控 Spanner 資源,請參閱「使用 Cloud Monitoring 監控執行個體」。
Google Cloud 控制台的「系統洞察」頁面會以圖表顯示下列指標。您也可以使用 Cloud Monitoring 查看這些指標。
spanner.googleapis.com/instance/autoscaling/min_node_countspanner.googleapis.com/instance/autoscaling/max_node_countspanner.googleapis.com/instance/autoscaling/min_processing_unitsspanner.googleapis.com/instance/autoscaling/max_processing_unitsspanner.googleapis.com/instance/autoscaling/high_priority_cpu_target_utilizationspanner.googleapis.com/instance/autoscaling/total_cpu_target_utilizationspanner.googleapis.com/instance/autoscaling/storage_target_utilization
記錄
每當 Spanner 擴充執行個體或執行個體分割區時,就會建立系統事件稽核記錄。每個事件記錄都有說明文字和與自動調度資源事件相關的中繼資料。
在「系統洞察」頁面查看記錄
您可以在Google Cloud 控制台的「系統洞察」頁面中,查看受管理自動調度資源系統事件記錄。
在 Google Cloud 控制台中開啟 Spanner:
選取已啟用自動調度資源功能的執行個體或執行個體分割區。
在導覽選單中,按一下「系統洞察」。
在「系統深入分析」頁面中,前往「運算容量」指標。
按一下「查看記錄」開啟記錄面板。
「運算能力記錄檔」窗格會顯示過去一小時的記錄。
如果執行個體已啟用非對稱唯讀自動調度資源模式,記錄摘要會提供每個副本的運算容量變更說明和位置。例如
Increased from 1 to 2 nodes in us-central1 to maintain high priority CPU utilization at 80%。如果未使用非對稱自動調度,記錄摘要中不會提供位置資訊。例如:Increased from 9 to 10 nodes to maintain high priority CPU utilization at 65%。您也可以查看節點何時增加,以維持總 CPU 使用率目標。
使用記錄檔探索工具查看記錄檔
您也可以使用記錄檔探索工具查看記錄檔:
在 Google Cloud 控制台中開啟「Logs Explorer」:
選取適當的 Google Cloud 專案。
在「Query」(查詢) 欄位中,輸入下列內容:
protoPayload.methodName="AutoscaleInstance"您可以新增下列查詢,進一步篩選記錄:
resource.type="spanner_instance" resource.labels.instance_id=INSTANCE_ID resource.labels.project_id=PROJECT_ID logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="AutoscaleInstance"
如要查看在非預設執行個體分割區中執行的查詢記錄,請輸入:
resource.type="spanner_instance" resource.labels.instance_id=INSTANCE_ID resource.labels.project_id=PROJECT_ID logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="AutoscaleInstancePartition"
點選「執行查詢」
「Query results」(查詢結果) 窗格會顯示過去一小時的記錄。
如要進一步瞭解如何查看記錄,請參閱 Cloud Logging。 您可以在 Google Cloud 的記錄檔探索工具頁面中設定記錄檔式快訊,也可以使用 Cloud Monitoring API 進行設定。
後續步驟
- 瞭解如何建立啟用代管自動調度資源功能的執行個體
- 瞭解如何修改執行個體以使用自動調度功能,或變更自動調度設定
- 瞭解如何將執行個體從自動調度資源改為手動調度資源
- 瞭解如何建立啟用代管自動調度資源功能的執行個體分割區
- 瞭解如何修改執行個體分割區,以使用自動調度或變更自動調度設定