本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Redis OSS 的在线重新分片和分片再平衡(已启用集群模式)
通过在 A ElastiCache mazon (Redis OSS) 3.2.10 或更高版本中使用在线重新分片和分片再平衡,您可以在不停机的情况下动态扩展 ElastiCache Redis OSS(已启用集群模式)。此方法意味着,即使在进行扩展或重新平衡的过程中,您的集群也可以继续为请求提供服务。
您可执行以下操作:
-
横向@@ 扩展-通过向 Redis OSS(已启用集群模式)集群(复制组)添加分片(节点组)来增加读取和写入容量。
如果您向复制组添加一个或多个分片,则每个新分片中的节点数量与最小的现有分片中的节点数量相同。
-
缩小@@ 规模 — 通过从 Redis OSS(已启用集群模式)集群中移除分片,从而降低读取和写入容量,从而降低成本。
-
重新平衡 — 在 for Redis OSS(已启用集群模式)集群中的分片之间移动密钥空间,使其在分片之间尽可能均匀分布。 ElastiCache
您无法执行以下操作:
-
单独配置分片:
您无法单独指定分片的键空间。要执行此操作,您必须使用离线过程。
目前,以下限制适用于 ElastiCache (Redis OSS)在线重新分片和再平衡:
-
这些进程需要 Redis OSS 引擎版本 3.2.10 或更高版本。有关升级引擎版本的信息,请参阅引擎版本和升级 。
-
槽或键空间和大型项目存在以下限制:
如果分片中的任何密钥包含一个大型项,在横向扩展或重新平衡时关键字不会迁移到新分片。此功能会导致分片不平衡。
如果某个分片中的任何密钥包含大型项目(序列化后大于 256MB 的项目),则在缩减时不会删除该分片。此功能可导致某些分片无法删除。
-
在横向扩展时,任何新分片中的节点数量等于最小的现有分片中的节点数量。
-
在横向扩展时,所有现有分片的任何常见标签将被复制到新分片中。
-
扩展全局数据存储集群时,不会自动 ElastiCache 将函数从一个现有节点复制到新节点。我们建议在横向扩展集群后将您的函数加载到新的分片中,这样每个分片都具有相同的函数。
注意
在 ElastiCache (Redis OSS) 版本 7 及更高版本中:扩展集群时, ElastiCache 会自动将现有节点之一(随机选择)中加载的函数复制到新节点。如果您的应用程序使用 Redis OSS
有关更多信息,请参阅 在线集群大小调整。
您可以使用、和 API 横向扩展或重新平衡 ElastiCache 适用于 Redis OSS(已启用集群模式)的 AWS CLI集群。 AWS Management Console ElastiCache
通过在线重新分片功能添加分片
您可以使用、或 ElastiCache API 向 Redis OSS(已启用集群模式)集群添加分片。 AWS Management Console AWS CLI当您向 Redis OSS(已启用集群模式)集群添加分片时,现有分片上的所有标签都将复制到新的分片中。
主题
您可以使用向您的 AWS Management Console Redis OSS(已启用集群模式)集群添加一个或多个分片。以下步骤描述了这个过程。
向 Redis OSS(已启用集群模式)集群添加分片
-
打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 -
在导航窗格中,选择 Redis OSS 集群。
-
找到并选择要向其添加分片的 Redis OSS(已启用集群模式)集群的名称,而不是集群名称左边的方框。
提示
Redis OSS(已启用集群模式)在 “模式” 列中显示集群模式 Redis OSS
-
选择 Add shard。
-
对于 Number of shards to be added,请选择要添加到此集群的分片数量。
-
对于 Availability zone(s),请选择 No preference 或 Specify availability zones。
-
如果您选择 Specify availability zones,则对于每个分片中的每个节点,请从可用区列表中选择节点的可用区。
-
选择添加。
-
以下过程介绍如何通过使用添加分片来重新配置 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 选择可用区。
以下示例在 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-配置。
您可以使用该 ElastiCache API 通过操作在线重新配置 Redis OSS(已启用集群模式)集群中的分片。ModifyReplicationGroupShardConfiguration
在ModifyReplicationGroupShardConfiguration
中使用以下参数:
参数
-
ApplyImmediately=true
– 必需。指定分片重新配置操作立即开始。 -
ReplicationGroupId
– 必需。指定在哪个复制组(集群)上执行分片重新配置操作。 -
NodeGroupCount
– 必需。指定操作完成时存在的分片(节点组)数量。添加分片后,NodeGroupCount
的值必须大于当前分片数量。您也可以使用
ReshardingConfiguration
为复制组中的每个节点指定可用区。 -
ReshardingConfiguration
– 可选。复制组中每个分片中的每个节点的首选可用区列表。只有当NodeGroupCount
的值大于当前分片数量时,才能使用此参数。如果在添加分片时省略此参数,Amazon 将为新节点 ElastiCache 选择可用区。
以下过程介绍如何通过使用 API 添加分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 ElastiCache
例 - 添加分片
以下示例将节点组添加到 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 从 Redis OSS(已启用集群模式)集群中 AWS Management Console移除分片。 AWS CLI
删除分片(控制台)
以下过程介绍如何通过使用删除分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 AWS Management Console
在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。
您可以使用从 Redis OSS(已启用集群模式)集群中移除一个或多个分片。 AWS Management Console 您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息,请参阅 删除复制组。以下步骤描述了删除一个或多个分片的过程。
从 Redis OSS(已启用集群模式)集群中移除分片
-
打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 -
在导航窗格中,选择 Redis OSS 集群。
-
找到并选择要从中移除分片的 Redis OSS(已启用集群模式)集群的名称,而不是集群名称左边的方框。
提示
Redis OSS(已启用集群模式)集群在 “分片” 列中的值为 1 或更大。
-
从分片列表中,选择要删除的每个分片的名称左侧的框。
-
选择 Delete shard。
删除分片(AWS CLI)
以下过程介绍如何通过使用删除分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 AWS CLI
重要
在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片(--node-groups-to-remove
),并将其密钥空间映射到其余分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。
您可以使用从 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
小于当前节点组(分片)数量时,此参数为必需。要从复制组中删除的分片(节点组)ID 列表。
以下步骤描述了删除一个或多个分片的过程。
例 - 删除分片
以下示例从 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
移除分片 (ElastiCacheAPI)
您可以使用该 ElastiCache API 通过操作在线重新配置 Redis OSS(已启用集群模式)集群中的分片。ModifyReplicationGroupShardConfiguration
以下过程介绍如何通过使用 API 移除分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 ElastiCache
重要
在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片(NodeGroupsToRemove
),并将其密钥空间映射到其余分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。
您可以使用 ElastiCache API 从 Redis OSS(已启用集群模式)集群中移除一个或多个分片。您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息,请参阅 删除复制组。
在ModifyReplicationGroupShardConfiguration
中使用以下参数:
参数
-
ApplyImmediately=true
– 必需。指定分片重新配置操作立即开始。 -
ReplicationGroupId
– 必需。指定在哪个复制组(集群)上执行分片重新配置操作。 -
NodeGroupCount
– 必需。指定操作完成时存在的分片(节点组)数量。删除分片后,NodeGroupCount
的值必须小于当前分片数量。 -
NodeGroupsToRemove
– 当--node-group-count
小于当前节点组(分片)数量时,此参数为必需。要从复制组中删除的分片(节点组)ID 列表。
以下步骤描述了删除一个或多个分片的过程。
例 - 删除分片
以下示例从 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>
在线分片重新平衡
您可以使用、或 API 重新平衡 Redis OSS(已启用集群模式)集群中的 AWS Management Console分片。 AWS CLI ElastiCache
在线分片重新平衡(控制台)
以下过程介绍如何通过使用重新平衡分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 AWS Management Console
在 Redis OSS(已启用集群模式)集群上的分片之间重新平衡 keyspace
-
打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 -
在导航窗格中,选择 Redis OSS 集群。
-
选择要重新平衡的 Redis OSS(已启用集群模式)集群的名称,而不是名称左边的复选框。
提示
Redis OSS(已启用集群模式)集群在 “分片” 列中的值为 1 或更大。
-
选择 Rebalance。
-
系统提示时,请选择 Rebalance。您可能会看到一条类似于这样的消息:
复制组中的槽分布不均。无需执行任何操作。(服务:AmazonElastiCache;状态码:400;错误代码:InvalidReplicationGroupState;请求编号:2246cebd-9721-11e7-8d5b-e1b0f086
c8c8cf)。如果如此,请选择 Cancel。
在线分片重新平衡(AWS CLI)
在modify-replication-group-shard-configuration
中使用以下参数:
参数
-
-apply-immediately
– 必需。指定分片重新配置操作立即开始。 -
--replication-group-id
– 必需。指定在哪个复制组(集群)上执行分片重新配置操作。 -
--node-group-count
– 必需。要在集群中的所有分片之间重新平衡键空间,该值必须与当前分片数量相同。
以下过程介绍如何通过使用重新平衡分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 AWS CLI
例 - 重新平衡集群中的分片
以下示例重新平衡 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
在线分片再平衡 (API) ElastiCache
您可以使用该 ElastiCache API 通过操作在线重新配置 Redis OSS(已启用集群模式)集群中的分片。ModifyReplicationGroupShardConfiguration
在ModifyReplicationGroupShardConfiguration
中使用以下参数:
参数
-
ApplyImmediately=true
– 必需。指定分片重新配置操作立即开始。 -
ReplicationGroupId
– 必需。指定在哪个复制组(集群)上执行分片重新配置操作。 -
NodeGroupCount
– 必需。要在集群中的所有分片之间重新平衡键空间,该值必须与当前分片数量相同。
以下过程介绍如何通过使用 API 重新平衡分片来重新配置 Redis OSS(已启用集群模式)集群中的分片。 ElastiCache
例 - 集群重新平衡
以下示例重新平衡 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>