

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

# 扩缩 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)
    + [删除分片（Amazon 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)
    + [在线分片重新平衡（Amazon 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 集群（Amazon 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 集群（Amazon 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（已启用集群模式）集群。Amazon Web Services 管理控制台Amazon CLI ElastiCache 

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

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

**Topics**

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

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

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

1. 打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.amazonaws.cn/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. 选择**添加**。

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

以下过程介绍了如何通过使用Amazon 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
```

有关更多信息，请参阅Amazon CLI文档中的 [modify-replication-group-shard-配置](https://docs.amazonaws.cn/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.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)中的。

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

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

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

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

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

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

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

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

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

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

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

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

1. 选择 **Delete shard**。

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

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

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

您可以使用从 Valkey 或 Redis OSS（已启用集群模式）集群中移除一个或多个分片。Amazon 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（已启用集群模式）集群中的Amazon Web Services 管理控制台分片。Amazon CLI ElastiCache 

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

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

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

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

1. 打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.amazonaws.cn/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**。

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

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

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

以下过程介绍了如何通过使用Amazon 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>
```