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

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

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

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

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

  • 記憶體壓力:

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

    您可以判斷節點是否遭受記憶體壓力,方法是監控下列指標:FreeableMemorySwapUsageBytesUseForCache

  • CPU 或網路瓶頸:

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

    您可以監控延遲和傳輸量層級,方法是監控下列指標:CPUUtilizationNetworkBytesInNetworkBytesOutCurrConnectionsNewConnections

  • 您的叢集過度擴展:

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

    您可以使用下列指標監控叢集的使用情況,以判斷是否可以安全地縮減:FreeableMemorySwapUsageBytesUseForCacheCPUUtilizationNetworkBytesInNetworkBytesOutCurrConnectionsNewConnections

擴展的效能影響

使用離線程序擴展時,您的叢集將有一大部分程序會離線,因此無法提供請求的服務。使用線上方法擴展時,因為擴展是運算密集的操作,效能會有一些下降,然後,您的叢集會繼續在整個擴展操作中提供請求的服務。您遭遇到的下降程度取決於您的一般 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 OSS 版本 3.2.10 或更新版本,您可以動態擴展您的 Valkey 或 Redis OSS (啟用叢集模式) 叢集,而無須停機。此方法表示叢集可以繼續提供請求的服務 (甚至是在擴展或重新平衡進行中時)。

您可以執行下列作業:

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

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

  • 向內擴展 – 透過從 Valkey 或 Redis OSS (啟用叢集模式) 叢集移除碎片,減少讀取和寫入容量,進而降低成本。

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

您無法執行下列:

  • 獨立設定碎片:

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

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

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

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

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

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

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

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

  • 橫向擴展 Global Data Store 叢集時,ElastiCache 不會自動將函數從其中一個現有節點複製到新節點。我們建議在橫向擴展叢集之後,將函數載入新的碎片,如此一來每個碎片都會具有相同函數。

注意

在 ElastiCache for Valkey 7.2 及更新版本,以及 ElastiCache for Redis OSS 第 7 版及更新版本中:擴展叢集時,ElastiCache 會自動將載入其中一個現有節點 (隨機選取) 的函數複寫至新節點。如果您的應用程式使用 函數,我們建議您在向外擴展之前將所有函數載入所有碎片,讓您的叢集不會在不同的碎片上產生不同的函數定義。

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

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

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

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

主題

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

    將碎片新增至您的 Valkey 或 Redis OSS (啟用叢集模式) 叢集
    1. 前往 https://console.aws.amazon.com/elasticache/ 開啟 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,透過 ModifyReplicationGroupShardConfiguration操作,在線上重新設定 Valkey 或 Redis OSS (啟用叢集模式) 叢集中的碎片。

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

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

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

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

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

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

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

    範例 - 新增碎片

    下列範例會將節點群組新增至 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>

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

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

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

    移除碎片 (主控台)

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

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

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

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

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

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

      提示

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

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

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

    移除碎片 (AWS CLI)

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

    重要

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

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

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

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

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

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

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

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

    範例 - 移除碎片

    下列範例會從 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,透過 ModifyReplicationGroupShardConfiguration操作,在線上重新設定 Valkey 或 Redis OSS (啟用叢集模式) 叢集中的碎片。

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

    重要

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

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

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

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

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

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

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

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

    範例 - 移除碎片

    下列範例會從 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>

    線上碎片重新平衡

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

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

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

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

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

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

      提示

      在碎片欄中,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)。如果有看到,請選擇 Cancel (取消)

    線上碎片重新平衡 (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,透過 ModifyReplicationGroupShardConfiguration操作,在線上重新設定 Valkey 或 Redis OSS (啟用叢集模式) 叢集中的碎片。

    使用下列參數搭配 ModifyReplicationGroupShardConfiguration

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

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

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

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

    範例 - 重新平衡叢集

    下列範例會重新平衡 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>