

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

# 通过修改节点类型来在线纵向扩展
通过修改节点类型来在线纵向扩展

通过对 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 集群（Amazon 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 集群（Amazon CLI）
](#Scaling.RedisStandalone.ScaleDown.CLI)
  + [

### 缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache
](#Scaling.Vertical.ScaleDown.API)

## 在线纵向扩展
在线纵向扩展

**Topics**
+ [

### 纵向扩展 Valkey 或 Redis OSS 集群（控制台）
](#redis-cluster-vertical-scaling-console)
+ [

### 纵向扩展 Valkey 或 Redis OSS 集群（Amazon CLI）
](#Scaling.RedisStandalone.ScaleUp.CLI)
+ [

### 扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache
](#VeticalScaling.RedisReplGrps.ScaleUp.API)

### 纵向扩展 Valkey 或 Redis OSS 集群（控制台）
使用Amazon Web Services 管理控制台

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

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

1. 登录Amazon Web Services 管理控制台并打开 ElastiCache 控制台，网址为[ https://console.aws.amazon.com/elasticache/](https://console.amazonaws.cn/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 集群（Amazon CLI）


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

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

1. 通过运行带有以下参数的Amazon 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 "
   	    ], 
   }
   ```

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

1. 使用Amazon 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": {}
       }
   }
   ```

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

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

### 扩展 Valkey 或 Redis OSS 集群 (API) ElastiCache


以下过程使用 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.amazonaws.cn/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.amazonaws.cn/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.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)*中的。

## 在线缩减
在线缩减

**Topics**
+ [

### 纵向缩减 Valkey 或 Redis OSS 集群（控制台）
](#redis-cluster-vertical-scaling-down-console)
+ [

### 纵向缩减 Valkey 或 Redis OSS 集群（Amazon CLI）
](#Scaling.RedisStandalone.ScaleDown.CLI)
+ [

### 缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache
](#Scaling.Vertical.ScaleDown.API)

### 纵向缩减 Valkey 或 Redis OSS 集群（控制台）
使用Amazon Web Services 管理控制台

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

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

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

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

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

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

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

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

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

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

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

### 纵向缩减 Valkey 或 Redis OSS 集群（Amazon CLI）


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

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

1. 通过运行带有以下参数的Amazon 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"
   	    ]
   }
   ```

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

1. 使用Amazon 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": {}
       }
   }
   ```

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

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

### 缩小 Valkey 或 Redis OSS 集群 (API) ElastiCache


以下过程使用 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.amazonaws.cn/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.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)*中的。