本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Valkey 或 Redis 中擴展叢集 OSS(已啟用叢集模式)
隨著叢集的需求變更,您可以變更 Valkey 或 Redis OSS(啟用叢集模式) 叢集中的碎片數量,以決定改善效能或降低成本。我們建議使用線上水平擴展來執行此動作,因為它可允許叢集在擴展程序期間繼續提供請求的服務。
您用來決定重新擴展叢集的可能條件包括下列:
-
記憶體壓力:
如果叢集中的節點遭受記憶體壓力,您可以決定向外擴展,使得您有更多資源能更妥善地存放資料和提供請求的服務。
您可以監控下列指標來判斷節點是否受到記憶體壓力:FreeableMemory、 SwapUsage和 BytesUseForCache。
-
CPU 或網路瓶頸:
如果延遲/傳輸量問題正困擾著您的叢集,您可能需要向外擴展來解決問題。
您可以透過監控下列指標來監控延遲和輸送量層級:CPUUtilization、NetworkBytesInNetworkBytesOut、、 CurrConnections和 NewConnections。
-
您的叢集過度擴展:
對叢集的目前需求使得向內擴展不會傷害效能和減少成本。
您可以使用下列指標來監控叢集的使用,以判斷您是否可以安全地擴展:FreeableMemory、SwapUsage、BytesUseForCache、CPUUtilization、NetworkBytesIn、 NetworkBytesOut CurrConnections和 NewConnections。
擴展的效能影響
使用離線程序擴展時,您的叢集將有一大部分程序會離線,因此無法提供請求的服務。使用線上方法擴展時,因為擴展是運算密集的操作,效能會有一些下降,然後,您的叢集會繼續在整個擴展操作中提供請求的服務。您的降級程度取決於正常CPU使用率和資料。
有兩種方法可以擴展您的 Valkey 或 Redis OSS(啟用叢集模式) 叢集;水平和垂直擴展。
-
水平擴展可讓您透過新增或移除節點群組 (碎片),來變更複寫群組中節點群組 (碎片) 的數量。線上重新分片程序允許向內/向外擴展,同時間叢集仍可繼續服務傳入請求。
在您的新叢集中以與在舊叢集中不同的方式設定槽。僅限離線方法。
-
垂直擴展 - 變更節點類型以調整叢集大小。線上垂直擴展允許向上/向下擴展,同時間叢集仍可繼續服務傳入請求。
如果您要透過縮減或縮減叢集的大小和記憶體容量,請確保新組態有足夠的記憶體來容納資料和 Valkey 或 Redis OSS額外負荷。
如需詳細資訊,請參閱選取快取節點大小。
Valkey 或 Redis 的離線重新共享 OSS(啟用叢集模式)
您從離線碎片重新組態可獲得的主要優點是,您可以做得更多而不只是從複寫群組新增或移除碎片。當您在離線時重新碎片和重新平衡時,除了變更複寫群組中的碎片數量之外,您還可以執行下列動作:
注意
啟用資料分層的 Valkey 或 Redis OSS叢集不支援離線重新編譯。如需詳細資訊,請參閱中的資料分層 ElastiCache。
-
變更您複寫群組的節點類型。
-
指定複寫群組中每個節點的可用區域。
-
升級至較新的引擎版本。
-
獨立指定每個碎片中複本節點的數量。
-
指定每個碎片的金鑰空間。
離線碎片重新組態的主要缺點是,您的叢集會離線開始進行程序的還原部分,並繼續直到您在應用程式中更新端點為止。叢集離線的時間長度會因叢集中資料量而不同。
若要離線重新設定碎片 Valkey 或 Redis OSS(啟用叢集模式) 叢集
-
建立現有 Valkey 或 Redis OSS叢集的手動備份。如需詳細資訊,請參閱取得手動備份。
-
透過從備份還原來建立新叢集。如需詳細資訊,請參閱從備份還原到新的快取。
-
在應用程式中,將端點更新為新叢集的端點。如需詳細資訊,請參閱在 中尋找連線端點 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(啟用叢集模式) 叢集
-
在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/
。 -
從導覽窗格中,選擇 Valkey 叢集或 Redis OSS叢集 。
-
找到並選擇您要新增碎片的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是叢集名稱左側的方塊。
提示
Valkey 或 Redis OSS(啟用叢集模式) 在模式欄中顯示叢集 Valkey 或叢集 Redis OSS
-
選擇 Add shard (新增碎片)。
-
針對 Number of shards to be added (要新增的碎片數),選擇您要新增至此叢集的碎片數量。
-
針對 Availability zone(s) (可用區域),選擇 No preference (無偏好設定) 或 Specify availability zones (指定可用區域) 中的一個。
-
如果您選擇 Specify availability zones (指定可用區域),針對每個碎片中的每個節點,從可用區域的清單選取節點的可用區域。
-
選擇新增。
-
下列程序說明如何使用 新增碎片,在 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-count4
\ --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-count4
^ --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(啟用叢集模式) 叢集中移除碎片
-
在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/
。 -
從導覽窗格中,選擇 Valkey 叢集或 Redis OSS叢集 。
-
找到並選擇要從中移除碎片的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是叢集名稱左側的方塊。
提示
在 Shards 欄中,Valkey 或 Redis OSS(啟用叢集模式) 叢集的值為 1 或更高。
-
從碎片的清單,選擇您要刪除的每個碎片名稱左側的方塊。
-
選擇 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-count2
\ --node-groups-to-remove "0002
" "0003
" \ --apply-immediately
針對 Windows:
aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id
my-cluster
^ --node-group-count2
^ --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(啟用叢集模式) 叢集上碎片之間的鍵空間
-
在 開啟 ElastiCache 主控台https://console.aws.amazon.com/elasticache/
。 -
從導覽窗格中,選擇 Valkey 叢集或 Redis OSS叢集 。
-
選擇您要重新平衡的 Valkey 或 Redis OSS(啟用叢集模式) 叢集的名稱,而不是名稱左側的方塊。
提示
在 Shards 欄中,Valkey 或 Redis OSS(啟用叢集模式) 叢集的值為 1 或更高。
-
選擇 Rebalance (重新平衡)。
-
提示時,選擇 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-count4
\ --apply-immediately
針對 Windows:
aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id
my-cluster
^ --node-group-count4
^ --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>