在 Valkey 或 Redis 中扩展集群OSS(已启用集群模式) - 亚马逊 ElastiCache

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Valkey 或 Redis 中扩展集群OSS(已启用集群模式)

随着集群需求的变化,您可能会决定通过更改 Valkey 或 RedisOSS(已启用集群模式)集群中的分片数量来提高性能或降低成本。我们建议使用在线水平扩展来实现这一目的,因为采用这种方法,您的集群在扩展过程中可以继续为请求提供服务。

您决定重新调节集群的情况包括以下几种:

  • 内存压力:

    如果集群中的节点存在内存压力,您可能会决定进行横向扩展,以便获得更多资源来更好地存储数据并为请求提供服务。

    您可以通过监控以下指标来确定您的节点是否承受内存压力:FreeableMemorySwapUsage、和BytesUseForCache

  • CPU或者网络瓶颈:

    如果延迟/吞吐量问题给您的集群带来麻烦,您可能需要进行横向扩展来解决这些问题。

    您可以通过监控以下指标来监控延迟和吞吐量级别:CPUUtilizationNetworkBytesInNetworkBytesOutCurrConnections、和NewConnections

  • 您的集群过度扩展:

    对集群的当前需求是缩减集群不会降低性能,并可以降低成本。

    您可以使用以下指标监控集群的使用情况,以确定是否可以安全地进行扩展:FreeableMemorySwapUsageBytesUseForCacheCPUUtilizationNetworkBytesInNetworkBytesOutCurrConnections、和NewConnections

扩展的性能影响

当使用离线过程进行扩展时,您的集群在大部分过程中处于离线状态,因此无法为请求提供服务。当使用在线方法进行扩展时,由于扩展是计算密集型操作,因此会导致一定程度的性能下降,但是在整个扩展操作过程中您的集群仍然会继续为请求提供服务。您的性能下降程度取决于您的正常CPU使用率和数据。

有两种方法可以扩展 Valkey 或 RedisOSS(已启用集群模式)集群:水平和垂直扩展。

  • 利用横向扩展,可以通过添加或删除节点组(分片)来更改复制组中的节点组(分片)数量。在线重新分片过程允许在集群继续处理传入请求时进行缩减/扩展。

    采用与旧集群不同的方法来配置新集群中的槽。仅采用离线方法。

  • 纵向扩展 – 更改节点类型以调整集群大小。在线纵向扩展允许在集群继续处理传入请求时进行扩展/缩减。

如果您要通过缩小或缩小集群的大小和内存容量,请确保新配置有足够的内存来存放您的数据以及 Valkey 或 Redis OSS 的开销。

有关更多信息,请参阅选择缓存节点大小

Valkey 或 Redis 的离线重新分片OSS(已启用集群模式)

离线分片重新配置带来的主要优势便是,除了在复制组中添加或删除分片以外,您还可以执行更多操作。离线重新分片和重新平衡时,除了更改复制组中的分片数量外,还可以执行以下操作:

注意

启用了数据分层的 Valkey 或 Redis OSS 集群不支持离线重新分片。有关更多信息,请参阅 数据分层 ElastiCache

  • 更改复制组的节点类型。

  • 为复制组中的每个节点指定可用区。

  • 升级为更新的引擎版本。

  • 单独指定每个分片中的副本节点数量。

  • 为每个分片指定密钥空间。

离线分片重新配置的主要缺点是,从过程的还原部分开始直到更新应用程序中的终端节点,集群一直处于离线状态。您的集群处于离线状态的时间长短因集群中的数据量而异。

要重新配置分片,请离线 Valkey 或 RedisOSS(已启用集群模式)集群
  1. 为现有的 Valkey 或 Redis OSS 集群创建手动备份。有关更多信息,请参阅 进行手动备份

  2. 通过从备份中还原来创建新集群。有关更多信息,请参阅 从备份还原到新缓存

  3. 将您的应用程序中的终端节点更新为新集群的终端节点。有关更多信息,请参阅 在中查找连接端点 ElastiCache

Valkey 或 Redis 的在线重新分片OSS(已启用集群模式)

通过在 ElastiCache Valkey 7.2 或更高版本或 Redis 3.2.10 或更高OSS版本中使用在线重新分片和分片再平衡,您可以在不停机的情况下动态扩展 Valkey 或 RedisOSS(已启用集群模式)集群。此方法意味着,即使在进行扩展或重新平衡的过程中,您的集群也可以继续为请求提供服务。

您可执行以下操作:

  • 横向@@ 扩展-通过向 Valkey 或 Redis(已启用集群模式)集群(复制组)添加分片OSS(节点组)来增加读取和写入容量。

    如果您向复制组添加一个或多个分片,则每个新分片中的节点数量与最小的现有分片中的节点数量相同。

  • 缩小@@ 规模 — 通过从 Valkey 或 RedisOSS(已启用集群模式)集群中移除分片,从而降低读取和写入容量,从而降低成本。

  • 重新平衡 — 在 Valkey 或 RedisOSS(已启用集群模式)集群中的分片之间移动密钥空间,使其在分片之间尽可能均匀分布。

您无法执行以下操作:

  • 单独配置分片:

    您无法单独指定分片的键空间。要执行此操作,您必须使用离线过程。

目前,以下限制适用于 ElastiCache 在线重新分片和重新平衡:

  • 这些进程需要 Valkey 7.2 及更高版本或 Redis OSS 引擎版本 3.2.10 或更高版本。有关升级引擎版本的信息,请参阅的版本管理 ElastiCache

  • 槽或键空间和大型项目存在以下限制:

    如果分片中的任何密钥包含一个大型项,在横向扩展或重新平衡时关键字不会迁移到新分片。此功能会导致分片不平衡。

    如果某个分片中的任何密钥包含大型项目(序列化后大于 256MB 的项目),则在缩减时不会删除该分片。此功能可导致某些分片无法删除。

  • 在横向扩展时,任何新分片中的节点数量等于最小的现有分片中的节点数量。

  • 在横向扩展时,所有现有分片的任何常见标签将被复制到新分片中。

  • 扩展全局数据存储集群时,不会自动 ElastiCache 将函数从一个现有节点复制到新节点。我们建议在横向扩展集群后将您的函数加载到新的分片中,这样每个分片都具有相同的函数。

注意

在 ElastiCache Valkey 7.2 及更高OSS版本以及 Redis 版本 7 及更高版本中:扩展集群时, ElastiCache 会自动将现有节点之一(随机选择)中加载的函数复制到新节点。如果您的应用程序使用 Functions,我们建议您在扩展之前将所有函数加载到所有分片中,这样您的集群就不会在不同的分片上出现不同的函数定义。

有关更多信息,请参阅 在线集群大小调整

您可以使用、和,水平扩展或重新平衡 Valkey 或 RedisOSS(已启用集群模式)集群。 AWS Management Console AWS CLI ElastiCache API

通过在线重新分片功能添加分片

您可以使用、或向 Valkey 或 RedisOSS(已启用集群模式)集群添加分片。 AWS Management Console AWS CLI ElastiCache API当您向 Valkey 或 RedisOSS(已启用集群模式)集群添加分片时,现有分片上的所有标签都将复制到新的分片中。

主题

    您可以使用将一个或多个分片 AWS Management Console 添加到您的 Valkey 或 RedisOSS(已启用集群模式)集群。以下步骤描述了这个过程。

    向你的 Valkey 或 RedisOSS(已启用集群模式)集群添加分片
    1. 打开 ElastiCache 控制台,网址为https://console.aws.amazon.com/elasticache/

    2. 在导航窗格中,选择 Valkey 集群或 Redis OSS 集群

    3. 找到并选择要向其添加分片的 Valkey 或 RedisOSS(已启用集群模式)集群的名称,而不是集群名称左边的方框。

      提示

      Valkey 或 RedisOSS(已启用集群模式)在 “模式” 列中显示 Clustered Valkey 或 C l ustered Redis OSS

    4. 选择 Add shard

      1. 对于 Number of shards to be added,请选择要添加到此集群的分片数量。

      2. 对于 Availability zone(s),请选择 No preferenceSpecify availability zones

      3. 如果您选择 Specify availability zones,则对于每个分片中的每个节点,请从可用区列表中选择节点的可用区。

      4. 选择添加

    以下过程介绍如何通过使用添加分片来重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 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 或 RedisOSS(已启用集群模式)集群中的四个分片上重新配置密钥空间。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-配置

    您可以使用操作在线重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API ModifyReplicationGroupShardConfiguration

    ModifyReplicationGroupShardConfiguration中使用以下参数:

    参数
    • ApplyImmediately=true – 必需。指定分片重新配置操作立即开始。

    • ReplicationGroupId – 必需。指定在哪个复制组(集群)上执行分片重新配置操作。

    • NodeGroupCount – 必需。指定操作完成时存在的分片(节点组)数量。添加分片后,NodeGroupCount 的值必须大于当前分片数量。

      您也可以使用 ReshardingConfiguration 为复制组中的每个节点指定可用区。

    • ReshardingConfiguration – 可选。复制组中每个分片中的每个节点的首选可用区列表。只有当 NodeGroupCount 的值大于当前分片数量时,才能使用此参数。如果在添加分片时省略此参数,Amazon 将为新节点 ElastiCache 选择可用区。

    以下过程介绍如何通过使用添加分片来重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API

    例 - 添加分片

    以下示例将节点组添加到 Valkey 或 RedisOSS(已启用集群模式)集群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中的。

    通过在线重新分片功能删除分片

    您可以使用、或从 Valkey 或 RedisOSS(已启用集群模式)集群中 AWS Management Console移除分片。 AWS CLI ElastiCache API

    删除分片(控制台)

    以下过程介绍如何通过使用删除分片来重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 AWS Management Console

    在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。

    您可以使用从 Valkey 或 RedisOSS(已启用集群模式)集群中移除一个或多个分片。 AWS Management Console 您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息,请参阅 删除复制组。以下步骤描述了删除一个或多个分片的过程。

    从 Valkey 或 RedisOSS(已启用集群模式)集群中移除分片
    1. 打开 ElastiCache 控制台,网址为https://console.aws.amazon.com/elasticache/

    2. 在导航窗格中,选择 Valkey 集群或 Redis OSS 集群

    3. 找到并选择要从中移除分片的 Valkey 或 RedisOSS(已启用集群模式)集群的名称,而不是集群名称左边的方框。

      提示

      Valkey 或 RedisOSS(已启用集群模式)集群在 “分” 列中的值为 1 或更大。

    4. 从分片列表中,选择要删除的每个分片的名称左侧的框。

    5. 选择 Delete shard

    删除分片(AWS CLI)

    以下过程介绍如何通过使用删除分片来重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 AWS CLI

    重要

    在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片(--node-groups-to-remove),并将其密钥空间映射到其余分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。

    您可以使用从 Valkey 或 RedisOSS(已启用集群模式)集群中移除一个或多个分片。 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 小于当前节点组(分片)数量时,此参数为必需。IDs要从复制组中移除的分片(节点组)的列表。

    以下步骤描述了删除一个或多个分片的过程。

    例 - 删除分片

    以下示例从 Valkey 或 RedisOSS(已启用集群模式)集群中删除两个节点组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

    您可以使用操作在线重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API ModifyReplicationGroupShardConfiguration

    以下过程介绍如何通过使用删除分片来重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API

    重要

    在从复制组中移除节点组(分片)之前,请 ElastiCache 确保所有数据都适合剩余的分片。如果数据将适合,将根据要求从复制组中删除指定分片(NodeGroupsToRemove),并将其密钥空间映射到其余分片。如果数据不适合剩余的节点组,则过程将终止,并且复制组的节点组配置将保留为与发出请求之前相同。

    您可以使用从 Valkey 或 RedisOSS(已启用集群模式)集群中移除一个或多个分片。 ElastiCache API您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息,请参阅 删除复制组

    ModifyReplicationGroupShardConfiguration中使用以下参数:

    参数
    • ApplyImmediately=true – 必需。指定分片重新配置操作立即开始。

    • ReplicationGroupId – 必需。指定在哪个复制组(集群)上执行分片重新配置操作。

    • NodeGroupCount – 必需。指定操作完成时存在的分片(节点组)数量。删除分片后,NodeGroupCount 的值必须小于当前分片数量。

    • NodeGroupsToRemove – 当 --node-group-count 小于当前节点组(分片)数量时,此参数为必需。IDs要从复制组中移除的分片(节点组)的列表。

    以下步骤描述了删除一个或多个分片的过程。

    例 - 删除分片

    以下示例从 Valkey 或 RedisOSS(已启用集群模式)集群中删除两个节点组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>

    在线分片重新平衡

    您可以使用、或重新平衡您的 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 AWS Management Console AWS CLI ElastiCache API

    在线分片重新平衡(控制台)

    以下过程介绍如何通过使用重新平衡分片来重新配置您的 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 AWS Management Console

    在 Valkey 或 RedisOSS(已启用集群模式)集群上的分片之间重新平衡密钥空间
    1. 打开 ElastiCache 控制台,网址为https://console.aws.amazon.com/elasticache/

    2. 在导航窗格中,选择 Valkey 集群或 Redis OSS 集群

    3. 选择要重新平衡的 Valkey 或 RedisOSS(已启用集群模式)集群的名称,而不是名称左边的方框。

      提示

      Valkey 或 RedisOSS(已启用集群模式)集群在 “分” 列中的值为 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 或 RedisOSS(已启用集群模式)集群中的分片。 AWS CLI

    例 - 重新平衡集群中的分片

    以下示例重新平衡 Valkey 或 RedisOSS(已启用集群模式)集群中的插槽,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)

    您可以使用操作在线重新配置 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API ModifyReplicationGroupShardConfiguration

    ModifyReplicationGroupShardConfiguration中使用以下参数:

    参数
    • ApplyImmediately=true – 必需。指定分片重新配置操作立即开始。

    • ReplicationGroupId – 必需。指定在哪个复制组(集群)上执行分片重新配置操作。

    • NodeGroupCount – 必需。要在集群中的所有分片之间重新平衡键空间,该值必须与当前分片数量相同。

    以下过程介绍如何通过使用重新平衡分片来重新配置您的 Valkey 或 RedisOSS(已启用集群模式)集群中的分片。 ElastiCache API

    例 - 集群重新平衡

    以下示例重新平衡 Valkey 或 RedisOSS(已启用集群模式)集群中的插槽,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>