關於調整叢集容量

本頁面說明 Memorystore for Redis Cluster 叢集在擴充期間的行為。

您可以透過下列方式調度叢集容量:

  • 您可以變更叢集的 shard 數量。這就是水平資源調度。您可以透過下列任一方式,橫向擴充叢集:

    • 水平擴展:增加叢集容量,為叢集提供更多記憶體和處理能力,以處理更大量的資料或流量。叢集的容量取決於叢集中的 shard 數量。

      透過向外擴充叢集,應用程式可以處理增加的需求,而不會降低效能。如要向外擴充叢集,請在叢集中新增 shard。

    • 縮減:減少叢集容量,降低處理能力和可用於儲存資料的記憶體容量。當應用程式的資料需求減少,且您需要降低資源用量來節省成本時,就會發生這種情況。如要縮減叢集,請減少叢集中的 shard 數量。

  • 您可以變更叢集的節點類型。這就是垂直資源調度。您可以透過下列任一方式垂直擴充叢集:

    • 向上擴充:增加叢集容量。叢集的容量取決於叢集的節點類型。如要向上擴充叢集,請將節點類型變更為較大的節點類型。例如,將叢集從 redis-standard-small 節點類型擴充至 redis-highmem-medium 節點類型。
    • 縮減:減少叢集容量。如要縮減叢集,請將節點類型變更為較小的節點類型。例如,將叢集從 redis-highmem-medium 節點類型縮減為 redis-standard-small 節點類型。

資源調度影響

在資源調度作業期間,叢集的可用性不會受到影響。不過,當您變更叢集中的 shard 數量時,Memorystore for Redis Cluster 會重新平衡叢集的鍵空間。這可能會導致資源調度作業期間的延遲時間增加。

此外,變更節點類型來垂直調度叢集資源,其影響與維護作業類似。

失敗情況

如果在資源調度作業期間發生錯誤,可能是因為下列其中一種情況:

  • 您想更新叢集的 shard 數量,但叢集的 redis-shared-core-nano 節點類型沒有足夠的可用記憶體。

    如要解決這個問題,您可以擴充叢集,或釋出叢集節點的記憶體。如要釋出記憶體,請按照下列步驟操作:

    1. 連線至叢集。
    2. 如要取得叢集的詳細資料 (包括 IP 位址和通訊埠編號),請使用 gcloud redis clusters describe 指令。
    3. 記下叢集的 IP 位址和通訊埠號碼。
    4. 如要取得叢集節點的相關資訊,請使用下列指令:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      將 IP_ADDRESS 和 PORT_NUMBER 替換為您在上一個步驟中記下的值。

    5. 記下可用空間不足的節點 IP 位址和通訊埠號碼。這個節點的 ID 與錯誤中顯示的 ID 相符。

    6. 如要連線至這個節點,請使用下列指令:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      將 IP_ADDRESS 和 PORT_NUMBER 替換為您在上一個步驟中記下的值。

    7. 在提示中輸入 info memory 指令。

      輸出內容會顯示 used_memory 和 maxmemory 參數的值。used_memory 是節點使用的記憶體量,maxmemory 是節點可用的記憶體量。

    8. 將 used_memory 參數的值除以 maxmemory 參數的值,並確認商大於 98%。

    9. 如要釋出節點空間,請刪除部分節點金鑰。

    10. 再次輸入 info memory 指令。在輸出內容中,used_memory 參數的值較小。

    11. 將 used_memory 參數的值除以 maxmemory 參數的值,確認商數現在小於 98%。如果仍未解決,請刪除更多金鑰。

    12. 針對其他可用空間不足的節點,請重複執行本程序中的步驟 4 至 11。

  • 您縮減至較少的 shard 數量,無法容納 Memorystore for Redis Cluster 儲存在原始叢集中的所有金鑰。如要解決這個問題,請擴充至可容納所有儲存金鑰的 shard 數量。如要進一步瞭解如何增加叢集的 shard 數量,請參閱「調整 shard 數量」。

  • 您縮減至較小的節點類型,無法容納 Memorystore for Redis Cluster 儲存在原始節點類型的所有資料。如果發生這種情況,Memorystore for Redis Cluster 會提供建議的節點類型,供您垂直縮減資源。

  • 您更新了叢集的節點類型,並覆寫原始節點類型的預設設定,或這些設定已遭覆寫。不過,新的擴充節點類型不支援預設設定的值,或設定不適用於該節點類型。如果發生這種情況,Memorystore for Redis Cluster 會傳回錯誤。如要解決這個問題,請手動修改設定,使其適用於新的節點類型。

  • 您在寫入壓力較高的期間 (例如負載測試期間) 擴充叢集。如要解決這個問題,請在叢集流量較低時進行資源調度。

  • 您有一個包含大型金鑰的運算單元,並想將這個金鑰遷移至其他節點。不過,這個節點的記憶體不足,無法支援該金鑰。無法更新叢集。如要解決這個問題,請將金鑰大小縮減至 128 MB 以下。然後重試更新作業。

  • 叢集節點擁有的運算單元數量未知,但運算單元範圍已知。Memorystore for Redis Cluster 會傳回錯誤訊息。如果發生這種情況,請縮減金鑰大小,然後重新嘗試更新作業。

  • 您已透過向外擴充至較小的 shard 數量,提高叢集容量。不過,Memorystore for Redis Cluster 的記憶體不足,無法處理這項要求。如要解決這個問題,請縮減叢集容量,將 shard 數量縮減至原本較大的數量。

最佳做法

為協助您擴充叢集容量,建議您採用下列最佳做法:

  • 選擇資源調度時機:如要提高叢集資源調度的速度和可靠性,請在流量較低時進行資源調度。如要瞭解如何監控叢集流量,請參閱「監控叢集」。
  • 無法調整資源配置時,請重試:資源可用性經常變動。如果因暫時性資源限制而無法調度叢集資源,請稍後再試。