本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Valkey 或 Redis OSS 中擴展叢集 (啟用叢集模式)
隨著叢集的需求變更,您可以變更 Valkey 或 Redis OSS (啟用叢集模式) 叢集中的碎片數量,以決定改善效能或降低成本。我們建議使用線上水平擴展來執行此動作,因為它可允許叢集在擴展程序期間繼續提供請求的服務。
您用來決定重新擴展叢集的可能條件包括下列:
-
記憶體壓力:
如果叢集中的節點遭受記憶體壓力,您可以決定向外擴展,使得您有更多資源能更妥善地存放資料和提供請求的服務。
您可以判斷節點是否遭受記憶體壓力,方法是監控下列指標:FreeableMemory、SwapUsage 和 BytesUseForCache。
-
CPU 或網路瓶頸:
如果延遲/傳輸量問題正困擾著您的叢集,您可能需要向外擴展來解決問題。
您可以監控延遲和傳輸量層級,方法是監控下列指標:CPUUtilization、NetworkBytesIn、NetworkBytesOut、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 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 (啟用叢集模式) 叢集
-
前往 https://console.aws.amazon.com/elasticache/
開啟 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,透過 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 (啟用叢集模式) 叢集移除碎片
-
前往 https://console.aws.amazon.com/elasticache/
開啟 ElastiCache 主控台。 -
從導覽窗格中,選擇 Valkey 叢集或 Redis OSS 叢集。
-
找到並選擇您要從中移除碎片之 Valkey 或 Redis OSS (啟用叢集模式) 叢集的名稱,而非叢集名稱左側的方塊。
提示
在碎片欄中,Valkey 或 Redis OSS (啟用叢集模式) 叢集的值為 1 或更高。
-
從碎片的清單,選擇您要刪除的每個碎片名稱左側的方塊。
-
選擇 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-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,透過 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 (啟用叢集模式) 叢集上碎片之間的金鑰空間
-
前往 https://console.aws.amazon.com/elasticache/
開啟 ElastiCache 主控台。 -
從導覽窗格中,選擇 Valkey 叢集或 Redis OSS 叢集。
-
選擇您要重新平衡之 Valkey 或 Redis OSS (啟用叢集模式) 叢集的名稱,而非名稱左側的方塊。
提示
在碎片欄中,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)
。如果有看到,請選擇 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-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,透過 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>