

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

# 扩缩 Valkey 或 Redis OSS（已启用集群模式）集群
<a name="scaling-redis-cluster-mode-enabled"></a>

由于对集群的需求发生变化，您可能决定通过更改 Valkey 或 Redis OSS（已启用集群模式）集群中的分片数量来提高性能或降低成本。我们建议使用在线水平扩展来实现这一目的，因为采用这种方法，您的集群在扩展过程中可以继续为请求提供服务。

您决定重新调节集群的情况包括以下几种：
+ **内存压力：**

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

  您可以通过监控以下指标来确定您的节点是否承受内存压力：*FreeableMemory*SwapUsage**、和*BytesUsedForCache*。
+ **CPU 或网络瓶颈：**

  如果 latency/throughput 问题困扰着您的集群，则可能需要向外扩展以解决问题。

  您可以通过监控以下指标来监控延迟和吞吐量级别：*CPUUtilization*NetworkBytesIn**、*NetworkBytesOut*、*CurrConnections*、和*NewConnections*。
+ **您的集群过度扩展：**

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

  您可以使用以下指标监控集群的使用情况，以确定是否可以安全地进行扩展：*FreeableMemory*、*SwapUsage*、*BytesUsedForCache*CPUUtilization**、*NetworkBytesIn*、*NetworkBytesOut*、*CurrConnections*、和*NewConnections*。

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

有两种方法可以扩缩您的 Valkey 或 Redis OSS（已启用集群模式）集群：水平扩缩和垂直扩缩。
+ 利用横向扩展，可以通过添加或删除节点组（分片）来更改复制组中的节点组（分片）数量。在线重新分片过程允许在集群继续处理传入请求的 in/out 同时进行扩展。

  采用与旧集群不同的方法来配置新集群中的槽。仅采用离线方法。
+ 纵向扩展 – 更改节点类型以调整集群大小。在线垂直扩展允许在集群继续处理传入请求的 up/down 同时进行扩展。

如果要通过横向缩减或纵向缩减来减小集群的大小和内存容量，请确保新配置具有足够的内存用于数据和 Valkey 或 Redis OSS 开销。

有关更多信息，请参阅 [选择节点大小](CacheNodes.SelectSize.md)。

**Contents**
+ [Valkey 或 Redis OSS（已启用集群模式）的离线重新分片](#redis-cluster-resharding-offline)
+ [Valkey 或 Redis OSS（已启用集群模式）的离线重新分片](#redis-cluster-resharding-online)
  + [通过在线重新分片功能添加分片](#redis-cluster-resharding-online-add)
  + [通过在线重新分片功能删除分片](#redis-cluster-resharding-online-remove)
    + [删除分片（控制台）](#redis-cluster-resharding-online-remove-console)
    + [删除分片（AWS CLI）](#redis-cluster-resharding-online-remove-cli)
    + [移除分片 (ElastiCacheAPI)](#redis-cluster-resharding-online-remove-api)
  + [在线分片重新平衡](#redis-cluster-resharding-online-rebalance)
    + [在线分片重新平衡（控制台）](#redis-cluster-resharding-online-rebalance-console)
    + [在线分片重新平衡（AWS CLI）](#redis-cluster-resharding-online-rebalance-cli)
    + [在线分片再平衡 (API) ElastiCache](#redis-cluster-resharding-online-rebalance-api)
+ [通过修改节点类型来在线纵向扩展](redis-cluster-vertical-scaling.md)
  + [在线纵向扩展](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-up)
    + [纵向扩展 Valkey 或 Redis OSS 集群（控制台）](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-console)
    + [纵向扩展 Valkey 或 Redis OSS 集群（AWS CLI）](redis-cluster-vertical-scaling.md#Scaling.RedisStandalone.ScaleUp.CLI)
    + [扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache](redis-cluster-vertical-scaling.md#VeticalScaling.RedisReplGrps.ScaleUp.API)
  + [在线缩减](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-down)
    + [纵向缩减 Valkey 或 Redis OSS 集群（控制台）](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-down-console)
    + [纵向缩减 Valkey 或 Redis OSS 集群（AWS CLI）](redis-cluster-vertical-scaling.md#Scaling.RedisStandalone.ScaleDown.CLI)
    + [缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache](redis-cluster-vertical-scaling.md#Scaling.Vertical.ScaleDown.API)

## Valkey 或 Redis OSS（已启用集群模式）的离线重新分片
<a name="redis-cluster-resharding-offline"></a>

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

**注意**  
启用了数据分层的 Valkey 或 Redis OSS 集群不支持离线重新分片。有关更多信息，请参阅 [ElastiCache 中的数据分层](data-tiering.md)。
+ 更改复制组的节点类型。
+ 为复制组中的每个节点指定可用区。
+ 升级为更新的引擎版本。
+ 单独指定每个分片中的副本节点数量。
+ 为每个分片指定密钥空间。

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

**离线重新配置分片 Valkey 或 Redis OSS（已启用集群模式）集群**

1. 手动备份现有的 Valkey 或 Redis OSS 集群。有关更多信息，请参阅 [进行手动备份](backups-manual.md)。

1. 通过从备份中还原来创建新集群。有关更多信息，请参阅 [从备份还原到新缓存](backups-restoring.md)。

1. 将您的应用程序中的终端节点更新为新集群的终端节点。有关更多信息，请参阅 [查找 ElastiCache 中的缓存连接端点](Endpoints.md)。

## Valkey 或 Redis OSS（已启用集群模式）的离线重新分片
<a name="redis-cluster-resharding-online"></a>

通过在 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 或更新版本。有关升级引擎版本的信息，请参阅[的版本管理 ElastiCache](VersionManagement.md)。
+ 槽或键空间和大型项目存在以下限制：

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

  如果某个分片中的任何密钥包含大型项目（序列化后大于 256MB 的项目），则在缩减时不会删除该分片。此功能可导致某些分片无法删除。
+ 在横向扩展时，任何新分片中的节点数量等于最小的现有分片中的节点数量。
+ 在横向扩展时，所有现有分片的任何常见标签将被复制到新分片中。
+ 扩展全局数据存储集群时，不会自动 ElastiCache 将函数从一个现有节点复制到新节点。我们建议在横向扩展集群后将您的函数加载到新的分片中，这样每个分片都具有相同的函数。

**注意**  
在 ElastiCache Valkey 7.2 及 ElastiCache 更高版本以及 Redis OSS 版本 7 及更高版本中：扩展集群时， ElastiCache 会自动将现有节点（随机选择）中加载的函数复制到新节点。如果您的应用程序使用[函数](https://valkey.io/topics/functions-intro/)，我们建议您在横向扩展之前将所有函数加载到所有分片，这样您的集群就不会在不同的分片上出现不同的函数定义。

有关更多信息，请参阅 [在线集群大小调整](best-practices-online-resharding.md)。

您可以使用、和 API 水平扩展或重新平衡您的 Valkey 或 Redis OSS（已启用集群模式）集群。AWS 管理控制台AWS CLI ElastiCache 

### 通过在线重新分片功能添加分片
<a name="redis-cluster-resharding-online-add"></a>

你可以使用、或 API 向你的 Valkey 或 Redis OSS（已启用集群模式）集群添加分片。AWS 管理控制台AWS CLI ElastiCache向 Valkey 或 Redis OSS（已启用集群模式）集群添加分片时，现有分片的所有标签都将复制到新分片。

**Topics**

#### 添加分片（控制台）
<a name="redis-cluster-resharding-online-add-console"></a>

您可以使用将一个或多个分片AWS 管理控制台添加到您的 Valkey 或 Redis OSS（已启用集群模式）集群。以下步骤描述了这个过程。

**向 Valkey 或 Redis OSS（已启用集群模式）集群添加分片**

1. 打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

1. 找到并选择要将分片添加到其中的 Valkey 或 Redis OSS（已启用集群模式）集群的名称，而不是选择集群名称左侧的框。
**提示**  
Valkey 或 Redis OSS（已启用集群模式）的**模式**列中会显示**Clustered Valkey**** 或 Clustered Redis**

1. 选择 **Add shard**。

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

   1. 对于 **Availability zone(s)**，请选择 **No preference** 或 **Specify availability zones**。

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

   1. 选择**添加**。

#### 添加分片（AWS CLI）
<a name="redis-cluster-resharding-online-add-cli"></a>

以下过程介绍了如何通过使用AWS CLI添加分片来重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。

在`modify-replication-group-shard-configuration`中使用以下参数：

**Parameters**
+ `--apply-immediately` – 必需。指定分片重新配置操作立即开始。
+ `--replication-group-id` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `--node-group-count` – 必需。指定操作完成时存在的分片（节点组）数量。添加分片后，`--node-group-count` 的值必须大于当前分片数量。

  您也可以使用 `--resharding-configuration` 为复制组中的每个节点指定可用区。
+ `--resharding-configuration` – 可选。复制组中每个分片中的每个节点的首选可用区列表。只有当 `--node-group-count` 的值大于当前分片数量时，才能使用此参数。如果在添加分片时省略此参数，Amazon 将为新节点 ElastiCache 选择可用区。

以下示例将重新配置名为 `my-cluster` 的 Valkey 或 Redis OSS（已启用集群模式）集群中四个分片的键空间。该示例还为每个分片中的每个节点指定可用区。操作将立即开始。

**Example - 添加分片**  
对于 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-配置](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group-shard-configuration.html)。

#### 添加分片 (ElastiCache API)
<a name="redis-cluster-resharding-online-add-api"></a>

您可以使用该 ElastiCache API 通过操作在线重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。`ModifyReplicationGroupShardConfiguration`

在`ModifyReplicationGroupShardConfiguration`中使用以下参数：

**Parameters**
+ `ApplyImmediately=true` – 必需。指定分片重新配置操作立即开始。
+ `ReplicationGroupId` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `NodeGroupCount` – 必需。指定操作完成时存在的分片（节点组）数量。添加分片后，`NodeGroupCount` 的值必须大于当前分片数量。

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

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

**Example - 添加分片**  
以下示例将节点组添加到 Valkey 或 Redis OSS（已启用集群模式）集群 `my-cluster` 中，因此操作完成后共有 4 个节点组。该示例还为每个分片中的每个节点指定可用区。操作将立即开始。  

```
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](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)中的。

### 通过在线重新分片功能删除分片
<a name="redis-cluster-resharding-online-remove"></a>

您可以使用、或 API 从 Valkey 或 Redis OSS（已启用集群模式）集群中AWS 管理控制台移除分片。AWS CLI ElastiCache 

**Topics**
+ [删除分片（控制台）](#redis-cluster-resharding-online-remove-console)
+ [删除分片（AWS CLI）](#redis-cluster-resharding-online-remove-cli)
+ [移除分片 (ElastiCacheAPI)](#redis-cluster-resharding-online-remove-api)

#### 删除分片（控制台）
<a name="redis-cluster-resharding-online-remove-console"></a>

以下过程介绍了如何通过使用AWS 管理控制台删除分片来重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。

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

您可以使用从 Valkey 或 Redis OSS（已启用集群模式）集群中移除一个或多个分片。AWS 管理控制台您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息，请参阅 [删除复制组](Replication.DeletingRepGroup.md)。以下步骤描述了删除一个或多个分片的过程。

**从 Valkey 或 Redis OSS（已启用集群模式）集群中删除分片**

1. 打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

1. 找到并选择要从中删除分片的 Valkey 或 Redis OSS（已启用集群模式）集群的名称，而不是选择集群名称左侧的框。
**提示**  
Valkey 或 Redis OSS（已启用集群模式）集群的**分片**列中会显示 1 或大于 1 的值。

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

1. 选择 **Delete shard**。

#### 删除分片（AWS CLI）
<a name="redis-cluster-resharding-online-remove-cli"></a>

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

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

您可以使用从 Valkey 或 Redis OSS（已启用集群模式）集群中移除一个或多个分片。AWS CLI您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息，请参阅 [删除复制组](Replication.DeletingRepGroup.md)。

在`modify-replication-group-shard-configuration`中使用以下参数：

**Parameters**
+ `--apply-immediately` – 必需。指定分片重新配置操作立即开始。
+ `--replication-group-id` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `--node-group-count` – 必需。指定操作完成时存在的分片（节点组）数量。删除分片后，`--node-group-count` 的值必须小于当前分片数量。

  
+ `--node-groups-to-remove` – 当 `--node-group-count` 小于当前节点组（分片）数量时，此参数为必需。 IDs 要从复制组中移除的分片（节点组）的列表。

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

**Example - 删除分片**  
以下示例从 Valkey 或 Redis OSS（已启用集群模式）集群 `my-cluster` 中删除 2 个节点组，因此操作完成后共有 2 个节点组。删除分片的键空间会均匀地分布在其余分片上。  
对于 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
```

#### 移除分片 (ElastiCacheAPI)
<a name="redis-cluster-resharding-online-remove-api"></a>

您可以使用该 ElastiCache API 通过操作在线重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。`ModifyReplicationGroupShardConfiguration`

以下过程介绍如何通过使用 API 移除分片来重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。 ElastiCache 

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

你可以使用 ElastiCache API 从 Valkey 或 Redis OSS（已启用集群模式）集群中移除一个或多个分片。您无法删除某个复制组中的所有分片。而必须删除复制组。有关更多信息，请参阅 [删除复制组](Replication.DeletingRepGroup.md)。

在`ModifyReplicationGroupShardConfiguration`中使用以下参数：

**Parameters**
+ `ApplyImmediately=true` – 必需。指定分片重新配置操作立即开始。
+ `ReplicationGroupId` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `NodeGroupCount` – 必需。指定操作完成时存在的分片（节点组）数量。删除分片后，`NodeGroupCount` 的值必须小于当前分片数量。
+ `NodeGroupsToRemove` – 当 `--node-group-count` 小于当前节点组（分片）数量时，此参数为必需。 IDs 要从复制组中移除的分片（节点组）的列表。

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

**Example - 删除分片**  
以下示例从 Valkey 或 Redis OSS（已启用集群模式）集群 `my-cluster` 中删除 2 个节点组，因此操作完成后共有 2 个节点组。删除分片的键空间会均匀地分布在其余分片上。  

```
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>
```

### 在线分片重新平衡
<a name="redis-cluster-resharding-online-rebalance"></a>

您可以使用、或 API 重新平衡您的 Valkey 或 Redis OSS（已启用集群模式）集群中的AWS 管理控制台分片。AWS CLI ElastiCache 

**Topics**
+ [在线分片重新平衡（控制台）](#redis-cluster-resharding-online-rebalance-console)
+ [在线分片重新平衡（AWS CLI）](#redis-cluster-resharding-online-rebalance-cli)
+ [在线分片再平衡 (API) ElastiCache](#redis-cluster-resharding-online-rebalance-api)

#### 在线分片重新平衡（控制台）
<a name="redis-cluster-resharding-online-rebalance-console"></a>

以下过程介绍了如何通过使用AWS 管理控制台重新平衡分片来重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。

**在 Valkey 或 Redis OSS（已启用集群模式）集群的分片之间重新平衡键空间**

1. 打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

1. 选择要重新平衡的 Valkey 或 Redis OSS（已启用集群模式）集群的名称，而不是名称左侧的框。
**提示**  
Valkey 或 Redis OSS（已启用集群模式）集群的**分片**列中会显示 1 或大于 1 的值。

1. 选择 **Rebalance**。

1. 系统提示时，请选择 **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）
<a name="redis-cluster-resharding-online-rebalance-cli"></a>

在`modify-replication-group-shard-configuration`中使用以下参数：

**Parameters**
+ `-apply-immediately` – 必需。指定分片重新配置操作立即开始。
+ `--replication-group-id` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `--node-group-count` – 必需。要在集群中的所有分片之间重新平衡键空间，该值必须与当前分片数量相同。

以下过程介绍了如何通过使用AWS CLI重新平衡分片来重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。

**Example - 重新平衡集群中的分片**  
以下示例演示重新平衡 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
```

#### 在线分片再平衡 (API) ElastiCache
<a name="redis-cluster-resharding-online-rebalance-api"></a>

您可以使用该 ElastiCache API 通过操作在线重新配置 Valkey 或 Redis OSS（已启用集群模式）集群中的分片。`ModifyReplicationGroupShardConfiguration`

在`ModifyReplicationGroupShardConfiguration`中使用以下参数：

**Parameters**
+ `ApplyImmediately=true` – 必需。指定分片重新配置操作立即开始。
+ `ReplicationGroupId` – 必需。指定在哪个复制组（集群）上执行分片重新配置操作。
+ `NodeGroupCount` – 必需。要在集群中的所有分片之间重新平衡键空间，该值必须与当前分片数量相同。

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

**Example - 集群重新平衡**  
以下示例演示重新平衡 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>
```

# 通过修改节点类型来在线纵向扩展
<a name="redis-cluster-vertical-scaling"></a>

通过对 Valkey 7.2 或更新版本或者 Redis OSS 版本 3.2.10 或更新版本使用在线垂直扩缩，您可以在最少停机时间的情况下动态扩缩 Valkey 或 Redis OSS 集群。这样，即使在扩展时，Valkey 或 Redis OSS 集群也可以处理请求。

**注意**  
不支持在使用数据分层功能的集群（例如，使用 r6gd 节点类型的集群）和不使用数据分层功能的集群（例如，使用 r6g 节点类型的集群）之间扩缩。有关更多信息，请参阅 [ElastiCache 中的数据分层](data-tiering.md)。

您可执行以下操作：
+ **纵向扩展** – 通过调整 Valkey 或 Redis OSS 集群的节点类型以使用较大的节点类型来增加读取和写入容量。

  ElastiCache 在保持在线状态并处理请求的同时，动态调整集群的大小。
+ **缩减** – 通过向下调整节点类型以使用较小节点来减少读写容量。同样，在保持在线状态并处理请求的同时， ElastiCache 动态调整集群的大小。在这种情况下，您可以通过缩小节点来降低成本。

**注意**  
扩展和缩减过程依赖于使用新选择的节点类型创建集群并将新节点与先前节点同步。为确保秤 up/down 流畅无阻，请执行以下操作：  
确保您具有足够的 ENI（弹性网络接口）容量。如果要缩减，请确保较小的节点具有足够的内存来承受预期流量。  
有关内存管理的最佳实践，请参阅 [管理 Valkey 和 Redis OSS 的预留内存](redis-memory-management.md)。
虽然纵向扩展过程旨在保持完全在线，但它确实依赖于在旧节点和新节点之间同步数据。我们建议您在预期数据流量最小时启动扩展/缩减。
尽可能在生产前调试环境中测试扩展期间的应用程序行为。

**Contents**
+ [在线纵向扩展](#redis-cluster-vertical-scaling-scaling-up)
  + [纵向扩展 Valkey 或 Redis OSS 集群（控制台）](#redis-cluster-vertical-scaling-console)
  + [纵向扩展 Valkey 或 Redis OSS 集群（AWS CLI）](#Scaling.RedisStandalone.ScaleUp.CLI)
  + [扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache](#VeticalScaling.RedisReplGrps.ScaleUp.API)
+ [在线缩减](#redis-cluster-vertical-scaling-scaling-down)
  + [纵向缩减 Valkey 或 Redis OSS 集群（控制台）](#redis-cluster-vertical-scaling-down-console)
  + [纵向缩减 Valkey 或 Redis OSS 集群（AWS CLI）](#Scaling.RedisStandalone.ScaleDown.CLI)
  + [缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache](#Scaling.Vertical.ScaleDown.API)

## 在线纵向扩展
<a name="redis-cluster-vertical-scaling-scaling-up"></a>

**Topics**
+ [纵向扩展 Valkey 或 Redis OSS 集群（控制台）](#redis-cluster-vertical-scaling-console)
+ [纵向扩展 Valkey 或 Redis OSS 集群（AWS CLI）](#Scaling.RedisStandalone.ScaleUp.CLI)
+ [扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache](#VeticalScaling.RedisReplGrps.ScaleUp.API)

### 纵向扩展 Valkey 或 Redis OSS 集群（控制台）
<a name="redis-cluster-vertical-scaling-console"></a>

以下过程介绍如何使用 ElastiCache 管理控制台扩展 Valkey 或 Redis OSS 集群。在此过程中，集群将继续处理请求，且停机时间降至最短。

**纵向扩展 Valkey 或 Redis OSS 集群（控制台）**

1. 登录AWS 管理控制台并打开 ElastiCache 控制台，网址为[ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

1. 从集群列表中，选择集群。

1. 选择 **Modify**(修改)。

1. 在 **Modify Cluster** 向导中：

   1. 从 **Node type** 列表中选择您希望扩展到的节点类型。要扩展，请选择大于现有节点的节点类型。

1. 如果您要立即执行扩展过程，请选中**立即应用**框。如果 **Apply immediately** 框处于未选中状态，则在此集群的下一维护时段内执行纵向扩展过程。

1. 选择 **Modify**(修改)。

   如果您在上一步选择了 **Apply immediately**，则集群的状态将变为 *modifying*。当状态变为 *available* 时，即表示修改完成，您可以开始使用新集群。

### 纵向扩展 Valkey 或 Redis OSS 集群（AWS CLI）
<a name="Scaling.RedisStandalone.ScaleUp.CLI"></a>

以下过程介绍如何使用AWS CLI纵向扩展 Valkey 或 Redis OSS 集群。在此过程中，集群将继续处理请求，且停机时间降至最短。

**纵向扩展 Valkey 或 Redis OSS 集群（AWS CLI）**

1. 通过运行带有以下参数的AWS CLI`list-allowed-node-type-modifications`命令来确定可以扩展到的节点类型。

   对于 Linux、macOS 或 Unix：

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-replication-group-id
   ```

   对于 Windows：

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-replication-group-id
   ```

   以上命令的输出类似于此处所示（JSON 格式）。

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium",
   	       	"cache.t1.small "
   	    ], 
   }
   ```

   有关更多信息，请参阅 *AWS CLI参考*中的 [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html)。

1. 使用AWS CLI`modify-replication-group`命令和以下参数修改您的复制组以向上扩展到新的更大的节点类型。
   + `--replication-group-id` – 要纵向扩展到的复制组的名称。
   + `--cache-node-type` – 要扩展集群的新节点类型。此值必须是步骤 1 中由 `list-allowed-node-type-modifications` 命令返回的节点类型之一。
   + `--cache-parameter-group-name` – [可选] 如果您使用 `reserved-memory` 管理集群的预留内存，则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 `reserved-memory-percent`，则可以忽略此参数。
   + `--apply-immediately` – 使纵向扩展过程立即得到应用。要将纵向扩展流程推迟到此集群的下一维护时段，请使用 `--no-apply-immediately` 参数。

   对于 Linux、macOS 或 Unix：

   ```
   aws elasticache modify-replication-group  \
   	    --replication-group-id my-redis-cluster \
   	    --cache-node-type cache.m3.xlarge \	    
   	    --apply-immediately
   ```

   对于 Windows：

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-redis-cluster ^
   	    --cache-node-type cache.m3.xlarge ^	   
   	    --apply-immediately
   ```

   以上命令的输出类似于此处所示（JSON 格式）。

   ```
   {
   		"ReplicationGroup": {
           "Status": "modifying",
           "Description": "my-redis-cluster",
           "NodeGroups": [
               {
                   "Status": "modifying",
                   "Slots": "0-16383",
                   "NodeGroupId": "0001",
                   "NodeGroupMembers": [
                       {
                           "PreferredAvailabilityZone": "us-east-1f",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-001"
                       },
                       {
                           "PreferredAvailabilityZone": "us-east-1d",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-002"
                       }
                   ]
               }
           ],
           "ConfigurationEndpoint": {
               "Port": 6379,
               "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com"
           },
           "ClusterEnabled": true,
           "ReplicationGroupId": "my-redis-cluster",
           "SnapshotRetentionLimit": 1,
           "AutomaticFailover": "enabled",
           "SnapshotWindow": "07:30-08:30",
           "MemberClusters": [
               "my-redis-cluster-0001-001",
               "my-redis-cluster-0001-002"
           ],
           "CacheNodeType": "cache.m3.xlarge",
            "DataTiering": "disabled"
           "PendingModifiedValues": {}
       }
   }
   ```

   有关更多信息，请参阅 *AWS CLI参考*中的 [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html)。

1. 如果您使用了`--apply-immediately`，请使用带有以下参数的AWS CLI`describe-cache-clusters`命令检查集群的状态。当状态变为 *available* 时，您便可开始使用较大的新集群节点。

### 扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache
<a name="VeticalScaling.RedisReplGrps.ScaleUp.API"></a>

以下过程使用 ElastiCache API 将您的集群从当前节点类型扩展到新的更大的节点类型。在此过程中， ElastiCache 更新 DNS 条目，使其指向新节点。因此，您便不需要更新应用程序中的终端节点。对于 Valkey 7.2 及更高版本或 Redis OSS 5.0.5 及更高版本，您可以在该集群继续保持在线并处理传入请求时扩展启用失效转移的集群。在 Redis OSS 版本 4.0.10 及更低版本上，更新 DNS 条目时，您可能会发现先前版本上来自主节点的读取和写入短暂中断。

纵向扩展为较大的节点类型所需的时间因节点类型和当前集群中的数据量不同而异。

**扩展 Valkey 或 Redis OSS 缓存集群 (API) ElastiCache**

1. 使用带有以下参数的 ElastiCache API `ListAllowedNodeTypeModifications` 操作来确定可以扩展到哪些节点类型。
   + `ReplicationGroupId` – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   有关更多信息，请参阅 *Amazon ElastiCache API 参考[ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html)*中的。

1. 使用 `ModifyReplicationGroup` ElastiCache API 操作并使用以下参数将当前的复制组扩展到新的节点类型。
   + `ReplicationGroupId` – 复制组的名称。
   + `CacheNodeType` – 此复制组中集群的较大新节点类型。此值必须是上一步中由 `ListAllowedNodeTypeModifications` 操作返回的实例类型之一。
   + `CacheParameterGroupName` – [可选] 如果您使用 `reserved-memory` 管理集群的预留内存，则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 `reserved-memory-percent`，则可以忽略此参数。
   + `ApplyImmediately` – 设置为 `true` 可促使立即应用纵向扩展流程。要将扩展流程推迟到下一维护时段，请使用 `ApplyImmediately``=false`。

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.m3.2xlarge
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   有关更多信息，请参阅 *Amazon ElastiCache API 参考[ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)*中的。

1. 如果您使用了 `ApplyImmediately``=true`，请使用带有以下参数的 ElastiCache API `DescribeReplicationGroups` 操作监控复制组的状态。当状态从 *modifying* 变为 *available* 时，您便可开始写入已扩展的新复制组。
   + `ReplicationGroupId` – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeReplicationGroups
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   有关更多信息，请参阅 *Amazon ElastiCache API 参考[DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)*中的。

## 在线缩减
<a name="redis-cluster-vertical-scaling-scaling-down"></a>

**Topics**
+ [纵向缩减 Valkey 或 Redis OSS 集群（控制台）](#redis-cluster-vertical-scaling-down-console)
+ [纵向缩减 Valkey 或 Redis OSS 集群（AWS CLI）](#Scaling.RedisStandalone.ScaleDown.CLI)
+ [缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache](#Scaling.Vertical.ScaleDown.API)

### 纵向缩减 Valkey 或 Redis OSS 集群（控制台）
<a name="redis-cluster-vertical-scaling-down-console"></a>

以下过程介绍如何使用 ElastiCache 管理控制台缩小 Valkey 或 Redis OSS 集群。在此过程中，您的 Valkey 或 Redis OSS 集群将继续处理请求，且停机时间降至最短。

**缩减 Valkey 或 Redis OSS 集群（控制台）**

1. 登录AWS 管理控制台并打开 ElastiCache 控制台，网址为[ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

1. 从集群列表中，选择首选集群。

1. 选择 **Modify**(修改)。

1. 在 **Modify Cluster** 向导中：

   1. 从 **Node type** 列表中选择您希望扩展到的节点类型。要缩减，请选择小于现有节点的节点类型。请注意，并不是可缩减到所有节点类型。

1. 如果您要立即执行缩减过程，请选中**立即应用**框。如果**立即应用**框处于未选中状态，则在此集群的下一维护时段内执行缩减过程。

1. 选择 **Modify**(修改)。

   如果您在上一步选择了 **Apply immediately**，则集群的状态将变为 *modifying*。当状态变为 *available* 时，即表示修改完成，您可以开始使用新集群。

### 纵向缩减 Valkey 或 Redis OSS 集群（AWS CLI）
<a name="Scaling.RedisStandalone.ScaleDown.CLI"></a>

以下过程介绍如何使用AWS CLI纵向缩减 Valkey 或 Redis OSS 集群。在此过程中，集群将继续处理请求，且停机时间降至最短。

**纵向缩减 Valkey 或 Redis OSS 集群（AWS CLI）**

1. 通过运行带有以下参数的AWS CLI`list-allowed-node-type-modifications`命令来确定可以缩减到的节点类型。

   对于 Linux、macOS 或 Unix：

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-replication-group-id
   ```

   对于 Windows：

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-replication-group-id
   ```

   以上命令的输出类似于此处所示（JSON 格式）。

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium ",
     	      "cache.t1.small"
   	    ]
   }
   ```

   有关更多信息，请参阅 *AWS CLI参考*中的 [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html)。

1. 使用AWS CLI`modify-replication-group`命令和以下参数修改您的复制组以缩小到新的较小节点类型。
   + `--replication-group-id` – 要缩减到的复制组的名称。
   + `--cache-node-type` – 要扩展集群的新节点类型。此值必须是步骤 1 中由 `list-allowed-node-type-modifications` 命令返回的节点类型之一。
   + `--cache-parameter-group-name` – [可选] 如果您使用 `reserved-memory` 管理集群的预留内存，则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 `reserved-memory-percent`，则可以忽略此参数。
   + `--apply-immediately` – 使纵向扩展过程立即得到应用。要将收缩流程推迟到此集群的下一维护时段，请使用 `--no-apply-immediately` 参数。

   对于 Linux、macOS 或 Unix：

   ```
   aws elasticache modify-replication-group  \
   	    --replication-group-id my-redis-cluster \
   	    --cache-node-type cache.t2.micro \	    
   	    --apply-immediately
   ```

   对于 Windows：

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-redis-cluster ^
   	    --cache-node-type cache.t2.micro ^	   
   	    --apply-immediately
   ```

   以上命令的输出类似于此处所示（JSON 格式）。

   ```
   {	
   		"ReplicationGroup": {
           "Status": "modifying",
           "Description": "my-redis-cluster",
           "NodeGroups": [
               {
                   "Status": "modifying",
                   "Slots": "0-16383",
                   "NodeGroupId": "0001",
                   "NodeGroupMembers": [
                       {
                           "PreferredAvailabilityZone": "us-east-1f",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-001"
                       },
                       {
                           "PreferredAvailabilityZone": "us-east-1d",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-002"
                       }
                   ]
               }
           ],
           "ConfigurationEndpoint": {
               "Port": 6379,
               "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com"
           },
           "ClusterEnabled": true,
           "ReplicationGroupId": "my-redis-cluster",
           "SnapshotRetentionLimit": 1,
           "AutomaticFailover": "enabled",
           "SnapshotWindow": "07:30-08:30",
           "MemberClusters": [
               "my-redis-cluster-0001-001",
               "my-redis-cluster-0001-002"
           ],
           "CacheNodeType": "cache.t2.micro",
            "DataTiering": "disabled"
           "PendingModifiedValues": {}
       }
   }
   ```

   有关更多信息，请参阅 *AWS CLI参考*中的 [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html)。

1. 如果您使用了`--apply-immediately`，请使用带有以下参数的AWS CLI`describe-cache-clusters`命令检查集群的状态。当状态变为 *available* 时，您便可开始使用较小的新集群节点。

### 缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache
<a name="Scaling.Vertical.ScaleDown.API"></a>

以下过程使用 ElastiCache API 将您的复制组从其当前节点类型扩展到新的较小节点类型。在此过程中，您的 Valkey 或 Redis OSS 集群将继续处理请求，且停机时间降至最短。

缩减为较小的节点类型所需的时间因节点类型和当前集群中的数据量而异。

**缩小规模 (ElastiCache API)**

1. 使用带有以下参数的 ElastiCache API `ListAllowedNodeTypeModifications` 操作来确定可以缩减为哪些节点类型。
   + `ReplicationGroupId` – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   有关更多信息，请参阅 *Amazon ElastiCache API 参考[ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html)*中的。

1. 使用 `ModifyReplicationGroup` ElastiCache API 操作并使用以下参数将当前的复制组缩小到新的节点类型。
   + `ReplicationGroupId` – 复制组的名称。
   + `CacheNodeType` – 此复制组中集群的较小新节点类型。此值必须是上一步中由 `ListAllowedNodeTypeModifications` 操作返回的实例类型之一。
   + `CacheParameterGroupName` – [可选] 如果您使用 `reserved-memory` 管理集群的预留内存，则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 `reserved-memory-percent`，则可以忽略此参数。
   + `ApplyImmediately` – 设置为 `true` 可促使立即应用缩减流程。要将缩减流程推迟到下一维护时段，请使用 `ApplyImmediately``=false`。

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.t2.micro
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   有关更多信息，请参阅 *Amazon ElastiCache API 参考[ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)*中的。