本頁說明 Memorystore for Redis Cluster 中的叢集在擴充期間的行為。
您可以透過下列方式調度叢集的容量:
您可以變更叢集的資料分割數量。這就是水平資源調度。您可以透過下列任一方式水平調度叢集:
水平擴展:增加叢集容量,讓叢集有更多記憶體和處理能力,可處理大量資料或流量。叢集的容量取決於叢集中的分片數量。
擴充叢集後,應用程式就能處理增加的需求,且效能不會下降。如要擴充叢集,請在叢集中新增分片。
縮減:減少叢集的容量,降低處理能力和可用於儲存資料的記憶體量。當應用程式的資料需求減少,您需要降低資源用量來節省成本時,就會發生這種情況。如要縮減叢集,請減少叢集中的分片數量。
您可以變更叢集的節點類型。這就是垂直資源調度。 您可以透過下列任一方式垂直調度叢集:
- 擴充:增加叢集的容量。叢集的容量取決於叢集的節點類型。如要擴大叢集,請將節點類型變更為較大的節點類型。舉例來說,您可以將叢集從
redis-standard-small節點類型擴充至redis-highmem-medium節點類型。 縮減:減少叢集容量。如要縮減叢集規模,請將節點類型變更為較小的節點類型。舉例來說,您可以將叢集從
redis-highmem-medium節點類型縮減為redis-standard-small節點類型。
- 擴充:增加叢集的容量。叢集的容量取決於叢集的節點類型。如要擴大叢集,請將節點類型變更為較大的節點類型。舉例來說,您可以將叢集從
資源調度帶來的影響
擴充作業期間,叢集的可用性不會受到影響。 不過,變更叢集中的分片數量時,Memorystore for Redis Cluster 會重新平衡叢集的鍵空間。這可能會導致在擴縮作業期間延遲時間增加。
此外,變更節點類型來垂直調度叢集資源,與維護作業的影響類似。
失敗情境
如果在擴充作業期間發生錯誤,可能是因為下列其中一種情況:
您想更新叢集的 shard 數量,但叢集的
redis-shared-core-nano節點類型沒有足夠的可用記憶體。如要解決這個問題,可以擴充叢集,或釋出叢集節點的記憶體。如要釋出記憶體空間,請按照下列步驟操作:
- 連線至叢集。
- 如要取得叢集的詳細資料,包括 IP 位址和通訊埠編號,請使用
gcloud redis clusters describe指令。 - 記下叢集的 IP 位址和通訊埠號碼。
如要取得叢集節點的相關資訊,請使用下列指令:
redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
將 IP_ADDRESS 和 PORT_NUMBER 替換為您在上一個步驟中記下的值。
請記下可用空間不足的節點 IP 位址和通訊埠號碼。這個節點的 ID 與錯誤中顯示的 ID 相符。
如要連線至這個節點,請使用下列指令:
redis-cli -h IP_ADDRESS -p PORT_NUMBER
將 IP_ADDRESS 和 PORT_NUMBER 替換為您在上一個步驟中記下的值。
在提示中輸入
info memory指令。輸出內容會顯示
used_memory和maxmemory參數的值。used_memory是節點使用的記憶體量,maxmemory則是節點可用的記憶體量。將
used_memory參數值除以maxmemory參數值,並確認商數大於 98%。如要為節點釋出空間,請刪除部分節點的鍵。
再次輸入
info memory指令。在輸出內容中,used_memory參數的值較小。將
used_memory參數的值除以maxmemory參數的值,並確認商數現在小於 98%。如果不是,請刪除更多車鑰。如果其他節點的可用空間不足,請重複執行這個程序的步驟 4 到 11。
您縮減了分片數量,導致容量不足,無法容納 Memorystore for Redis Cluster 儲存在原始叢集中的所有鍵。如要解決這個問題,請擴充至可容納所有儲存金鑰的較大分片數量。如要進一步瞭解如何增加叢集的資料分割數量,請參閱「調整資料分割數量」。
您縮放至較小的節點類型,該類型無法容納 Memorystore for Redis Cluster 儲存在原始節點類型中的所有資料。如果發生這種情況,Memorystore for Redis Cluster 會提供建議的節點類型,供您垂直縮減資源。
您已更新叢集的節點類型,並覆寫原始節點類型的預設設定,或這些設定已遭覆寫。不過,新的縮放節點類型不支援預設設定的值,或設定對節點類型無效。如果發生這種情況,Memorystore for Redis Cluster 會傳回錯誤。如要解決這個問題,請手動修改設定,確保設定適用於新的節點類型。
您在寫入壓力較大的期間 (例如負載測試期間) 擴充叢集。如要解決這個問題,請在叢集流量較低時進行擴縮作業。
您有一個含有大型鍵的時段,並想將這個鍵遷移至另一個節點。不過,這個節點的記憶體不足,無法支援金鑰。無法更新叢集。如要解決這個問題,請縮減金鑰大小,使其小於 128 MB。然後重試更新作業。
叢集節點擁有的時段編號不明,但時段範圍已知。Memorystore for Redis Cluster 會傳回錯誤訊息。如果發生這種情況,請縮小金鑰大小,然後重試更新作業。
您已調度資源,將叢集擴充至較小的分片計數,藉此提高叢集容量。不過,Memorystore for Redis Cluster 的記憶體不足,無法處理這項要求。如要解決這個問題,請將叢集容量縮減至原始較大的分片數。
最佳做法
為協助您擴充叢集容量,並提高叢集擴充速度和可靠性,請盡可能在流量較低的時段擴充叢集。如要瞭解如何監控叢集流量,請參閱「監控叢集」。