在 Valkey 或 Redis 中擴展叢集 OSS(已啟用叢集模式) - Amazon ElastiCache

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Valkey 或 Redis 中擴展叢集 OSS(已啟用叢集模式)

隨著叢集的需求變更,您可以變更 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片數量,以決定改善效能或降低成本。我們建議使用線上水平擴展來執行此動作,因為它可允許叢集在擴展程序期間繼續提供請求的服務。

您用來決定重新擴展叢集的可能條件包括下列:

  • 記憶體壓力:

    如果叢集中的節點遭受記憶體壓力,您可以決定向外擴展,使得您有更多資源能更妥善地存放資料和提供請求的服務。

    您可以監控下列指標來判斷節點是否受到記憶體壓力:FreeableMemorySwapUsageBytesUseForCache

  • CPU 或網路瓶頸:

    如果延遲/傳輸量問題正困擾著您的叢集,您可能需要向外擴展來解決問題。

    您可以透過監控下列指標來監控延遲和輸送量層級:CPUUtilizationNetworkBytesInNetworkBytesOut、、 CurrConnectionsNewConnections

  • 您的叢集過度擴展:

    對叢集的目前需求使得向內擴展不會傷害效能和減少成本。

    您可以使用下列指標來監控叢集的使用,以判斷您是否可以安全地擴展:FreeableMemorySwapUsageBytesUseForCacheCPUUtilizationNetworkBytesInNetworkBytesOut CurrConnectionsNewConnections

擴展的效能影響

使用離線程序擴展時,您的叢集將有一大部分程序會離線,因此無法提供請求的服務。使用線上方法擴展時,因為擴展是運算密集的操作,效能會有一些下降,然後,您的叢集會繼續在整個擴展操作中提供請求的服務。您的降級程度取決於正常CPU使用率和資料。

有兩種方法可以擴展您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集;水平和垂直擴展。

  • 水平擴展可讓您透過新增或移除節點群組 (碎片),來變更複寫群組中節點群組 (碎片) 的數量。線上重新分片程序允許向內/向外擴展,同時間叢集仍可繼續服務傳入請求。

    在您的新叢集中以與在舊叢集中不同的方式設定槽。僅限離線方法。

  • 垂直擴展 - 變更節點類型以調整叢集大小。線上垂直擴展允許向上/向下擴展,同時間叢集仍可繼續服務傳入請求。

如果您要透過縮減或縮減叢集的大小和記憶體容量,請確保新組態有足夠的記憶體來容納資料和 Valkey 或 Redis OSS額外負荷。

如需詳細資訊,請參閱選取快取節點大小

Valkey 或 Redis 的離線重新共享 OSS(啟用叢集模式)

您從離線碎片重新組態可獲得的主要優點是,您可以做得更多而不只是從複寫群組新增或移除碎片。當您在離線時重新碎片和重新平衡時,除了變更複寫群組中的碎片數量之外,您還可以執行下列動作:

注意

啟用資料分層的 Valkey 或 Redis OSS叢集不支援離線重新編譯。如需詳細資訊,請參閱中的資料分層 ElastiCache

  • 變更您複寫群組的節點類型。

  • 指定複寫群組中每個節點的可用區域。

  • 升級至較新的引擎版本。

  • 獨立指定每個碎片中複本節點的數量。

  • 指定每個碎片的金鑰空間。

離線碎片重新組態的主要缺點是,您的叢集會離線開始進行程序的還原部分,並繼續直到您在應用程式中更新端點為止。叢集離線的時間長度會因叢集中資料量而不同。

若要離線重新設定碎片 Valkey 或 Redis OSS(啟用叢集模式) 叢集
  1. 建立現有 Valkey 或 Redis OSS叢集的手動備份。如需詳細資訊,請參閱取得手動備份

  2. 透過從備份還原來建立新叢集。如需詳細資訊,請參閱從備份還原到新的快取

  3. 在應用程式中,將端點更新為新叢集的端點。如需詳細資訊,請參閱在 中尋找連線端點 ElastiCache

Valkey 或 Redis 的線上重新共享 OSS(啟用叢集模式)

透過使用線上重新分割和碎片重新平衡 ElastiCache Valkey 7.2 或更新版本,或 Redis 3.2.10 OSS或更新版本,您可以動態擴展您的 Valkey 或 Redis OSS (啟用叢集模式) 叢集,而不需要停機。此方法表示叢集可以繼續提供請求的服務 (甚至是在擴展或重新平衡進行中時)。

您可以執行下列作業:

  • 橫向擴展 – 將碎片 (節點群組) 新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集 (複寫群組),以增加讀取和寫入容量。

    如果您將一或多個碎片新增至複寫群組,每個新碎片中的節點數量與現有碎片最小節點的數量相同。

  • 縮減規模 – 將碎片從 Valkey 或 Redis OSS(啟用叢集模式) 叢集中移除,以降低讀取和寫入容量,進而降低成本。

  • 重新平衡 – 在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片之間移動鍵空間,以便盡可能在碎片之間平均分佈。

您無法執行下列:

  • 獨立設定碎片:

    您不可以獨立為碎片指定金鑰空間。若要執行此動作,您必須使用離線程序。

目前,下列限制適用於 ElastiCache 線上重新共用和重新平衡:

  • 這些程序需要 Valkey 7.2 及更新版本或 Redis OSS引擎 3.2.10 或更新版本。如需升級引擎版本的詳細資訊,請參閱的版本管理 ElastiCache

  • 槽或金鑰空間和大型項目的限制為:

    如果碎片中的任何金鑰包含大型項目,在向外擴展或重新平衡時,不會將該金鑰遷移至新碎片。此功能可能造成不平衡的碎片。

    如果碎片中的任何金鑰包含大型項目 (序列化後項目大於 256 MB),在向內擴展時,不會刪除該碎片。此功能可能造成一些碎片不會遭到刪除。

  • 向外擴展時,任何新碎片中節點的數量會等於現有碎片中最小節點的數量。

  • 向外擴展時,所有現有碎片共有的任何標籤都會複製到新碎片。

  • 擴展全域資料存放區叢集時, ElastiCache 不會自動將函數從其中一個現有節點複寫至新的節點 (s)。我們建議在橫向擴展叢集之後,將函數載入新的碎片,如此一來每個碎片都會具有相同函數。

注意

在 中 ElastiCache ,使用 Valkey 7.2 和更新版本,以及使用 Redis 7 和更新OSS版本:在擴展叢集時, ElastiCache 會自動將載入其中一個現有節點 (隨機選取) 的函數複寫至新的節點。如果您的應用程式使用函數 ,建議您先將所有函數載入所有碎片,然後再向外擴展,以免叢集最終在不同的碎片上出現不同的函數定義。

如需詳細資訊,請參閱線上叢集大小調整

您可以使用 AWS Management Console、 AWS CLI和 水平擴展或重新平衡您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集 ElastiCache API。

使用線上重新分片功能新增碎片

您可以使用 AWS Management Console AWS CLI、 ElastiCache 或 將碎片新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集API。當您將碎片新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集時,現有碎片上的任何標籤都會複製到新的碎片。

主題

    您可以使用 AWS Management Console 將一或多個碎片新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集。下列程序描述該程序。

    將碎片新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集
    1. 在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/

    2. 從導覽窗格中,選擇 Valkey 叢集Redis OSS叢集

    3. 找到並選擇您要新增碎片的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是叢集名稱左側的方塊。

      提示

      Valkey 或 Redis OSS(啟用叢集模式) 在模式欄中顯示叢集 Valkey 或叢集 Redis OSS

    4. 選擇 Add shard (新增碎片)

      1. 針對 Number of shards to be added (要新增的碎片數),選擇您要新增至此叢集的碎片數量。

      2. 針對 Availability zone(s) (可用區域),選擇 No preference (無偏好設定)Specify availability zones (指定可用區域) 中的一個。

      3. 如果您選擇 Specify availability zones (指定可用區域),針對每個碎片中的每個節點,從可用區域的清單選取節點的可用區域。

      4. 選擇新增

    下列程序說明如何使用 新增碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 AWS CLI。

    使用下列參數搭配 modify-replication-group-shard-configuration

    參數
    • --apply-immediately - 必要項目。指定碎片重新組態操作要立即開始。

    • --replication-group-id - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • --node-group-count - 必要項目。指定操作完成時要存在的碎片數量 (節點群組)。新增碎片時,--node-group-count 的值必須大於目前的碎片數量。

      您可以選擇性地使用 --resharding-configuration 為複寫群組中的每個節點指定可用區域。

    • --resharding-configuration - 選用。複寫群組的每個碎片中每個節點偏好的可用區域清單。只有在 --node-group-count 的值大於目前的碎片數量時,才使用此參數。如果在新增碎片時省略此參數,Amazon ElastiCache 會為新節點選取可用區域。

    下列範例會重新設定名稱為 的 Valkey 或 Redis OSS(啟用叢集模式) 叢集中四個碎片上的鍵空間my-cluster。此範例也會指定每個碎片中每個節點的可用區域。該操作會立即開始。

    範例 - 新增碎片

    若為 Linux、macOS 或 Unix:

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --resharding-configuration \ "PreferredAvailabilityZones=us-east-2a,us-east-2c" \ "PreferredAvailabilityZones=us-east-2b,us-east-2a" \ "PreferredAvailabilityZones=us-east-2c,us-east-2d" \ "PreferredAvailabilityZones=us-east-2d,us-east-2c" \ --apply-immediately

    針對 Windows:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 4 ^ --resharding-configuration ^ "PreferredAvailabilityZones=us-east-2a,us-east-2c" ^ "PreferredAvailabilityZones=us-east-2b,us-east-2a" ^ "PreferredAvailabilityZones=us-east-2c,us-east-2d" ^ "PreferredAvailabilityZones=us-east-2d,us-east-2c" ^ --apply-immediately

    如需詳細資訊,請參閱 AWS CLI 文件中的 modify-replication-group-shard-configuration

    您可以使用 ElastiCache API來重新設定 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片,方法是使用 ModifyReplicationGroupShardConfiguration操作。

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

    參數
    • ApplyImmediately=true - 必要項目。指定碎片重新組態操作要立即開始。

    • ReplicationGroupId - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • NodeGroupCount - 必要項目。指定操作完成時要存在的碎片數量 (節點群組)。新增碎片時,NodeGroupCount 的值必須大於目前的碎片數量。

      您可以選擇性地使用 ReshardingConfiguration 為複寫群組中的每個節點指定可用區域。

    • ReshardingConfiguration - 選用。複寫群組的每個碎片中每個節點偏好的可用區域清單。只有在 NodeGroupCount 的值大於目前的碎片數量時,才使用此參數。如果在新增碎片時省略此參數,Amazon 會為新節點 ElastiCache 選取可用區域。

    下列程序說明如何使用 新增碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 ElastiCache API。

    範例 - 新增碎片

    下列範例會將節點群組新增至 Valkey 或 Redis OSS(啟用叢集模式) 叢集 my-cluster,因此操作完成時總共有四個節點群組。此範例也會指定每個碎片中每個節點的可用區域。該操作會立即開始。

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=4 &ReplicationGroupId=my-cluster &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2a &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2b &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2a &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2c &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2d &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2d &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>

    如需詳細資訊,請參閱 參考ModifyReplicationGroupShardConfiguration中的 ElastiCache API 。

    使用線上重新分片移除碎片

    您可以使用 AWS Management Console AWS CLI、 或 ,從 Valkey 或 Redis OSS(啟用叢集模式) 叢集移除碎片ElastiCache API。

    移除碎片 (主控台)

    下列程序說明如何使用 移除碎片,重新設定 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片 AWS Management Console。

    從複寫群組中移除節點群組 (碎片) 之前, ElastiCache 請確定所有資料都符合其餘碎片。如果資料可納入,則會按請求從複寫群組刪除指定的碎片。如果資料無法納入其他的節點群組,流程會中止,複寫群組的節點群組設定會與請求之前相同。

    您可以使用 AWS Management Console 從您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集中移除一或多個碎片。您無法移除複寫群組中的所有碎片。而是必須刪除複寫群組。如需詳細資訊,請參閱刪除複寫群組。下列程序描述用於刪除一或多個碎片的程序。

    從 Valkey 或 Redis OSS(啟用叢集模式) 叢集中移除碎片
    1. 在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/

    2. 從導覽窗格中,選擇 Valkey 叢集Redis OSS叢集

    3. 找到並選擇要從中移除碎片的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是叢集名稱左側的方塊。

      提示

      在 Shards 欄中,Valkey 或 Redis OSS(啟用叢集模式) 叢集的值為 1 或更高。

    4. 從碎片的清單,選擇您要刪除的每個碎片名稱左側的方塊。

    5. 選擇 Delete shard (刪除碎片)

    移除碎片 (AWS CLI)

    下列程序說明如何使用 移除碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 AWS CLI。

    重要

    從複寫群組中移除節點群組 (碎片) 之前, ElastiCache 請確定所有資料都符合其餘碎片。如果資料可納入,則會按請求從複寫群組刪除指定的碎片 (--node-groups-to-remove),而其金鑰空間會映射至其餘的碎片。如果資料無法納入其他的節點群組,流程會中止,複寫群組的節點群組設定會與請求之前相同。

    您可以使用 AWS CLI 從您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集中移除一或多個碎片。您無法移除複寫群組中的所有碎片。而是必須刪除複寫群組。如需詳細資訊,請參閱刪除複寫群組

    使用下列參數搭配 modify-replication-group-shard-configuration

    參數
    • --apply-immediately - 必要項目。指定碎片重新組態操作要立即開始。

    • --replication-group-id - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • --node-group-count - 必要項目。指定操作完成時要存在的碎片數量 (節點群組)。移除碎片時,--node-group-count 的值必須小於目前的碎片數量。

    • --node-groups-to-remove - 當 --node-group-count 小於目前的數量節點群組 (碎片) 時為必要項目。IDs 要從複寫群組中移除的碎片 (節點群組) 清單。

    下列程序描述用於刪除一或多個碎片的程序。

    範例 - 移除碎片

    下列範例會從 Valkey 或 Redis OSS(啟用叢集模式) 叢集 中移除兩個節點群組my-cluster,因此操作完成時總共有兩個節點群組。來自移除碎片的金鑰空間會平均分散在其餘碎片間。

    若為 Linux、macOS 或 Unix:

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 2 \ --node-groups-to-remove "0002" "0003" \ --apply-immediately

    針對 Windows:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 2 ^ --node-groups-to-remove "0002" "0003" ^ --apply-immediately

    移除碎片 (ElastiCache API)

    您可以使用 ElastiCache API來重新設定 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片,方法是使用 ModifyReplicationGroupShardConfiguration操作。

    下列程序說明如何使用 移除碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 ElastiCache API。

    重要

    從複寫群組中移除節點群組 (碎片) 之前, ElastiCache 請確定所有資料都符合其餘碎片。如果資料可納入,則會按請求從複寫群組刪除指定的碎片 (NodeGroupsToRemove),而其金鑰空間會映射至其餘的碎片。如果資料無法納入其他的節點群組,流程會中止,複寫群組的節點群組設定會與請求之前相同。

    您可以使用 ElastiCache API從您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集中移除一或多個碎片。您無法移除複寫群組中的所有碎片。而是必須刪除複寫群組。如需詳細資訊,請參閱刪除複寫群組

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

    參數
    • ApplyImmediately=true - 必要項目。指定碎片重新組態操作要立即開始。

    • ReplicationGroupId - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • NodeGroupCount - 必要項目。指定操作完成時要存在的碎片數量 (節點群組)。移除碎片時,NodeGroupCount 的值必須小於目前的碎片數量。

    • NodeGroupsToRemove - 當 --node-group-count 小於目前的數量節點群組 (碎片) 時為必要項目。IDs 要從複寫群組中移除的碎片 (節點群組) 清單。

    下列程序描述用於刪除一或多個碎片的程序。

    範例 - 移除碎片

    下列範例會從 Valkey 或 Redis OSS(啟用叢集模式) 叢集 中移除兩個節點群組my-cluster,因此操作完成時總共有兩個節點群組。來自移除碎片的金鑰空間會平均分散在其餘碎片間。

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=2 &ReplicationGroupId=my-cluster &NodeGroupsToRemove.member.1=0002 &NodeGroupsToRemove.member.2=0003 &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>

    線上碎片重新平衡

    您可以使用 AWS Management Console AWS CLI、 或 重新平衡 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片ElastiCache API。

    線上碎片重新平衡 (主控台)

    下列程序說明如何使用 重新平衡碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 AWS Management Console。

    重新平衡 Valkey 或 Redis OSS(啟用叢集模式) 叢集上碎片之間的鍵空間
    1. 在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/

    2. 從導覽窗格中,選擇 Valkey 叢集Redis OSS叢集

    3. 選擇您要重新平衡的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是名稱左側的方塊。

      提示

      在 Shards 欄中,Valkey 或 Redis OSS(啟用叢集模式) 叢集的值為 1 或更高。

    4. 選擇 Rebalance (重新平衡)

    5. 提示時,選擇 Rebalance (重新平衡)。您可能會看到類似這樣的訊息:Slots in the replication group are uniformly distributed. Nothing to do. (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidReplicationGroupState; Request ID: 2246cebd-9721-11e7-8d5b-e1b0f086c8cf)。 如果您這樣做,請選擇取消

    線上碎片重新平衡 (AWS CLI)

    使用下列參數搭配 modify-replication-group-shard-configuration

    參數
    • -apply-immediately - 必要項目。指定碎片重新組態操作要立即開始。

    • --replication-group-id - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • --node-group-count - 必要項目。若要重新平衡叢集中所有碎片間的金鑰空間,此值必須與目前的碎片數量相同。

    下列程序說明如何使用 重新平衡碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 AWS CLI。

    範例 - 重新平衡叢集中的碎片

    下列範例會重新平衡 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的插槽,my-cluster以便盡可能平均地分配插槽。--node-group-count (4) 的值為目前在叢集中碎片的數量。

    若為 Linux、macOS 或 Unix:

    aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --apply-immediately

    針對 Windows:

    aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 4 ^ --apply-immediately

    線上碎片重新平衡 (ElastiCache API)

    您可以使用 ElastiCache API來重新設定 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片,方法是使用 ModifyReplicationGroupShardConfiguration操作。

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

    參數
    • ApplyImmediately=true - 必要項目。指定碎片重新組態操作要立即開始。

    • ReplicationGroupId - 必要項目。指定碎片重新組態操作要執行所在的複寫群組 (叢集)。

    • NodeGroupCount - 必要項目。若要重新平衡叢集中所有碎片間的金鑰空間,此值必須與目前的碎片數量相同。

    下列程序說明如何使用 重新平衡碎片,在 Valkey 或 Redis OSS(啟用叢集模式) 叢集中重新設定碎片 ElastiCache API。

    範例 - 重新平衡叢集

    下列範例會重新平衡 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的插槽,my-cluster以便盡可能平均地分配插槽。NodeGroupCount (4) 的值為目前在叢集中碎片的數量。

    https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=4 &ReplicationGroupId=my-cluster &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>