

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

# 在 ElastiCache 中管理节点
<a name="CacheNodes"></a>

节点是 Amazon ElastiCache 部署中的最小构建数据块。它是固定大小、与网络连接的安全 RAM 块。每个节点都运行创建集群或最后一次修改集群时选择的引擎。每个节点都有自己的域名服务（DNS）名称和端口。支持多种类型的 ElastiCache 节点，每种类型的节点具有不同的关联内存量和计算能力。

有关要使用的节点大小的更详细讨论，请参阅[选择节点大小](CacheNodes.SelectSize.md)。

一般而言，由于支持分片，Valkey 或 Redis OSS（已启用集群模式）部署具有许多更小的节点。相比之下，Valkey 或 Redis OSS（已禁用集群模式）部署在集群中的节点数量更少、规模更大。有关要使用的节点大小的更详细讨论，请参阅[选择节点大小](CacheNodes.SelectSize.md)。

**Topics**
+ [查看 ElastiCache 节点状态](Nodes.viewing.md)
+ [Valkey 或 Redis OSS 节点和分片](CacheNodes.NodeGroups.md)
+ [连接到节点](nodes-connecting.md)
+ [受支持的节点类型](CacheNodes.SupportedTypes.md)
+ [重启节点](nodes.rebooting.md)
+ [替换节点（Valkey 和 Redis OSS）](CacheNodes.NodeReplacement.md)
+ [替换节点（Memcached）](CacheNodes.NodeReplacement-mc.md)
+ [预留节点](CacheNodes.Reserved.md)
+ [迁移上一代节点](CacheNodes.NodeMigration.md)

涉及节点的一些重要操作如下：
+ [向 ElastiCache 集群添加节点](Clusters.AddNode.md)
+ [从 ElastiCache 集群中移除节点](Clusters.DeleteNode.md)
+ [缩放 ElastiCache](Scaling.md)
+ [查找 ElastiCache 中的缓存连接端点](Endpoints.md)
+ [自动识别集群（Memcached）中的节点](AutoDiscovery.md)

# 查看 ElastiCache 节点状态
<a name="Nodes.viewing"></a>

使用[ElastiCache 控制台](https://console.aws.amazon.com/elasticache/)，您可以快速访问 ElastiCache 节点的状态。 ElastiCache 节点的状态表示该节点的运行状况。您可以使用以下过程在 Amazon ElastiCache 控制台、AWS CLI命令或 API 操作中查看 ElastiCache 节点状态。

下表列出了 ElastiCache 节点可能的状态值。此表还显示您是否需要为该 ElastiCache 节点付费。


| **Type** | **已计费** | **描述** | 
| --- | --- | --- | 
|  `available`  |  计费  |  该 ElastiCache 节点运行状况良好，可用。  | 
|  `creating`  |  不计费  |  正在创建 ElastiCache 节点。节点正在创建，无法访问。  | 
|  `deleting`  |  不计费  |  正在删除该 ElastiCache 节点。  | 
|  `modifying`  |  计费  |  由于客户要求修改该 ElastiCache 节点，因此正在修改该节点。  | 
|  `updating`  |  计费  |  **更新**状态表明 Amazon ElastiCache 节点存在以下一项或多项情况： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/Nodes.viewing.html)  | 
|  `rebooting cluster nodes`  |  计费  |  由于客户请求或 Amazon ElastiCache 流程要求重启节点，该 ElastiCache 节点正在重启。  | 
|  `incompatible_parameters`  |  不计费  |  Amazon ElastiCache 无法启动该节点，因为节点的参数组中指定的参数与该节点不兼容。请恢复参数更改或使这些更改与数据库节点相兼容，以便重新访问节点。有关不兼容参数的更多信息，请查看该 ElastiCache 节点[的事件](https://us-east-1.console.aws.amazon.com/elasticache/home?region=us-east-1#/events)列表。  | 
|  `incompatible_network`  |  不计费  |  网络不兼容状态表示 Amazon 节点存在以下一项或多项情况： ElastiCache  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/Nodes.viewing.html)  | 
|  `restore_failed`  |  不计费  |  恢复失败状态表明 Amazon 节点存在以下情况之一： ElastiCache  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/Nodes.viewing.html)  | 
|  `snapshotting`  |  计费  |  ElastiCache 正在创建 Valkey 或 Redis OSS 节点的快照。  | 

## 使用控制台查看 ElastiCache 节点状态
<a name="Nodes.viewing.console"></a>

要使用控制台查看 ElastiCache 节点的状态，请执行以下操作：

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

1. 在导航窗格中，选择 **Redis OSS 集群**或 **Memcached 集群**。将出现 **“缓存” 页面**，其中包含 ElastiCache 节点列表。还显示每个节点的状态值。

1. 然后，您可以导航到缓存的**服务更新**选项卡，以显示适用于缓存的服务更新列表。

## 使用查看 ElastiCache 节点状态AWS CLI
<a name="Nodes.viewing.cli"></a>

要使用查看 ElastiCache 节点及其状态信息AWS CLI，请使用`describe-cache-cluster`命令。例如，以下AWS CLI命令显示每个 ElastiCache 节点。

```
aws elasticache describe-cache-clusters
```

## 通过 API 查看 ElastiCache 节点状态
<a name="Nodes.viewing.api"></a>

 要使用 Amazon ElastiCache API 查看 ElastiCache 节点的状态，请调用`DescribeCacheClusteroperation`带`ShowCacheNodeInfo`标志的，以检索有关各个缓存节点的信息。

# Valkey 或 Redis OSS 节点和分片
<a name="CacheNodes.NodeGroups"></a>

分片（在 API 和 CLI 中，为节点组）是节点层次结构，每个都包含在一个集群中。分片支持复制。在分片中，一个节点充当读/写主节点。分片中的所有其他节点充当主节点的只读副本。Valkey 或 Redis OSS 3.2 及更高版本支持集群（在 API 和 CLI 中为复制组）内的多个分片。有了这种支持，您就可以在 Valkey 或 Redis OSS（已启用集群模式）集群中对数据进行分区。

下图说明了 Valkey 或 Redis OSS（已禁用集群模式）集群与 Valkey 或 Redis OSS（已启用集群模式）集群之间的区别。

![\[图片：Redis（已禁用集群模式）和 Valkey 或 Redis OSS（已启用集群模式）分片（API/CLI：节点组）\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ElastiCache-NodeGroups.png)


Valkey 或 Redis OSS（已启用集群模式）集群支持通过分片进行复制。API 操作 [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)（CLI：[describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html)）可以列出带有成员节点的节点组、节点在节点组中的角色以及其他信息。

创建 Valkey 或 Redis OSS 集群时，您需要指定是否要创建已启用集群模式的集群。Valkey 或 Redis OSS（已禁用集群模式）集群永远只有一个分片，可通过添加（总计最多 5 个）或删除只读副本节点进行水平扩展。有关更多信息，请参阅 [使用复制组时的高可用性](Replication.md)、[为 Valkey 或 Redis OSS（已禁用集群模式）添加只读副本](Replication.AddReadReplica.md) 或 [为 Valkey 或 Redis OSS（已禁用集群模式）删除只读副本](Replication.RemoveReadReplica.md)。Valkey 或 Redis OSS（已禁用集群模式）集群也可以通过更改节点类型进行纵向扩展。有关更多信息，请参阅 [扩缩单节点 Valkey 或 Redis OSS（已禁用集群模式）副本节点](Scaling.RedisReplGrps.md)。

如果引擎为 Valkey 或 Redis OSS 5.0.6 或更高版本，您可以将每个集群的节点或分片限制增至最多 500 个。例如，您可以选择配置一个 500 节点的集群，范围介于 83 个分片（一个主分片和 5 个副本分片）和 500 个分片（一个主分片，无副本分片）之间。确保可提供足够的 IP 地址来满足增长需求。常见的陷阱包括子网组中的子网 CIDR 范围太小，或者子网被其他集群共享和大量使用。有关更多信息，请参阅 [创建子网组](SubnetGroups.Creating.md)。

 对于低于 5.0.6 的版本，每个集群的限制为 250。

若要请求提高限制，请参阅 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 并选择限制类型 **Nodes per cluster per instance type（每个实例类型的每个集群的节点数）**。

在创建 Valkey 或 Redis OSS（已启用集群模式）集群后，您可以对其进行更改（横向缩减或扩展）。有关更多信息，请参阅[缩放 ElastiCache](Scaling.md)和[替换节点（Valkey 和 Redis OSS）](CacheNodes.NodeReplacement.md)。

创建新集群时，可以使用旧集群中的数据为其设定种子，以免从头开始创建。仅当集群组具有与旧集群相同数量的分片时，此方法才有效。如果您需要更改节点类型或引擎版本，这样做会很有用。有关更多信息，请参阅[进行手动备份](backups-manual.md)和[从备份还原到新缓存](backups-restoring.md)。

# 连接到节点
<a name="nodes-connecting"></a>

## 连接到 Valkey 或 Redis OSS 节点
<a name="nodes-connecting.val"></a>

在尝试与 Valkey 或 Redis OSS 集群中的节点连接之前，您必须拥有适用于这些节点的端点。要找到终端节点，请参阅：
+ [查找 Valkey 或 Redis OSS（已禁用集群模式）集群端点（控制台）](Endpoints.md#Endpoints.Find.Redis)
+ [查找 Valkey 或 Redis OSS（已启用集群模式）集群的端点（控制台）](Endpoints.md#Endpoints.Find.RedisCluster)
+ [查找端点（AWS CLI）](Endpoints.md#Endpoints.Find.CLI)
+ [查找端点（ElastiCache API）](Endpoints.md#Endpoints.Find.API)

在以下示例中，您使用 *valkey-cli* 实用工具连接到运行 Valkey 或 Redis OSS 的集群。

**注意**  
有关可用命令的更多信息，请参阅[命令](http://valkey.io/commands)网页。

**使用 *valkey-cli* 连接到 Valkey 或 Redis OSS 集群**

1. 使用您选择的连接实用工具连接到 Amazon EC2 实例。
**注意**  
有关如何连接到 Amazon EC2 实例的说明，请参阅 [Amazon EC2 入门指南](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)。

1. 要生成 `valkey-cli`，请下载并安装 GNU Compiler Collection (`gcc`)。在 EC2 实例的命令提示符下输入下面的命令，然后在确认提示符下输入 `y`。

   ```
   sudo yum install gcc
   ```

   此时会显示类似以下内容的输出。

   ```
   Loaded plugins: priorities, security, update-motd, upgrade-helper
   Setting up Install Process
   Resolving Dependencies
   --> Running transaction check
   
   ...(output omitted)...
   
   Total download size: 27 M
   Installed size: 53 M
   Is this ok [y/N]: y
   Downloading Packages:
   (1/11): binutils-2.22.52.0.1-10.36.amzn1.x86_64.rpm      | 5.2 MB     00:00     
   (2/11): cpp46-4.6.3-2.67.amzn1.x86_64.rpm                | 4.8 MB     00:00     
   (3/11): gcc-4.6.3-3.10.amzn1.noarch.rpm                  | 2.8 kB     00:00     
   
   ...(output omitted)...
   
   Complete!
   ```

1. 下载并编译 *valkey-cli* 实用工具。此实用工具包含在 Valkey 软件发布版中。在 EC2 实例的命令提示符处，键入以下命令：
**注意**  
对于 Ubuntu 系统，在运行 `make` 之前，先运行 `make distclean`。

   ```
   wget https://github.com/valkey-io/valkey/archive/refs/tags/8.0.0.tar.gz
   tar xvzf valkey-8.0.0.tar.gz
   cd valkey-8.0.0
   make distclean      # ubuntu systems only
   make
   ```

1. 在 EC2 实例的命令提示符处，键入以下命令。

   ```
   src/valkey-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379
   ```

   此时会显示类似于以下内容的 Valkey 或 Redis OSS 命令提示符。

   ```
   redis mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 6379>
   ```

1. 运行 Valkey 或 Redis OSS 命令测试连接。

    您现已连接至集群并且可以运行 Valkey 或 Redis OSS 命令。以下是一些示例命令及其 Valkey 或 Redis OSS 响应。

   ```
   set a "hello"          // Set key "a" with a string value and no expiration
   OK
   get a                  // Get value for key "a"
   "hello"
   get b                  // Get value for key "b" results in miss
   (nil)				
   set b "Good-bye" EX 5  // Set key "b" with a string value and a 5 second expiration
   get b
   "Good-bye"
                      // wait 5 seconds
   get b
   (nil)                  // key has expired, nothing returned
   quit                   // Exit from valkey-cli
   ```

要连接到具有安全套接字层 (SSL) 加密（启用了传输中加密）的节点或集群，请参阅[ElastiCache 传输中加密 (TLS)](in-transit-encryption.md)。

## 连接到 Memcached 节点
<a name="nodes-connecting.mem"></a>

在尝试与 Memcached 集群连接之前，您必须拥有适用于这些节点的终端节点。要找到终端节点，请参阅：
+ [查找集群的端点（控制台）（Memcached）](Endpoints.md#Endpoints.Find.Memcached)
+ [查找端点（AWS CLI）](Endpoints.md#Endpoints.Find.CLI)
+ [查找端点（ElastiCache API）](Endpoints.md#Endpoints.Find.API)

在以下示例中，您使用 *telnet* 实用工具连接到运行 Memcached 的节点。

**注意**  
有关 Memcached 以及可用 Memcached 命令的更多信息，请参阅 [Memcached](http://memcached.org/) 网站。

**使用 *telnet* 连接到节点**

1. 使用您选择的连接实用工具连接到 Amazon EC2 实例。
**注意**  
 有关如何连接到 Amazon EC2 实例的说明，请参阅 [Amazon EC2 入门指南](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)。

1. 在 Amazon EC2 实例下载并安装 *telnet* 实用工具。在 Amazon EC2 实例的命令提示符处，键入以下命令，然后键入 *y*。

   ```
   sudo yum install telnet
   ```

   此时会显示类似以下内容的输出。

   ```
   Loaded plugins: priorities, security, update-motd, upgrade-helper
   Setting up Install Process
   Resolving Dependencies
   --> Running transaction check
   
   ...(output omitted)...
   
   Total download size: 63 k
   Installed size: 109 k
   Is this ok [y/N]: y
   Downloading Packages:
   telnet-0.17-47.7.amzn1.x86_64.rpm                        |  63 kB     00:00  
   
   ...(output omitted)...
   
   Complete!
   ```

1. 在 Amazon EC2 实例的命令提示符处，键入以下命令，并使用节点的端点替换此示例中所示的相应节点端点。

   ```
   telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211
   ```

   此时会显示类似以下内容的输出。

   ```
   Trying 128.0.0.1...
   Connected to mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com.
   Escape character is '^]'.
   >
   ```

1. 运行 Memcached 命令测试连接。

    您现已连接到一个节点，可以运行 Memcached 命令了。示例如下：

   ```
   set a 0 0 5      // Set key "a" with no expiration and 5 byte value
   hello            // Set value as "hello"
   STORED
   get a            // Get value for key "a"
   VALUE a 0 5
   hello
   END
   get b            // Get value for key "b" results in miss
   END
   >
   ```

# 受支持的节点类型
<a name="CacheNodes.SupportedTypes"></a>

ElastiCache 支持以下节点类型。一般而言，与其上一代类型对应项相比，最新一代类型以更低的成本提供了更多内存和计算能力。

有关每种节点类型的性能细节的更多信息，请参阅 [Amazon EC2 实例类型](https://aws.amazon.com/ec2/instance-types/)。

**注意**  
Amazon ElastiCache 正在将 T2 实例过渡到上一代状态。您将无法再使用 T2 实例创建新 ElastiCache 集群或购买新的 T2 预留节点。对现有的 T2 集群或预留没有影响。我们建议升级到较新的实例类型，例如 T3 或 T4g 实例，以获得更好的性能和成本效益。

**注意**  
AWS亚太地区（泰国）和墨西哥（中部）地区支持以下实例类型：  
**m7g/r7g：**large、xl、2xl、4xl、8xl、12xl 和 16xl。
**t3/t4g：**micro、small 和 medium。

有关要使用的节点大小的信息，请参阅 [选择节点大小](CacheNodes.SelectSize.md)。

**Topics**
+ [最新一代（Memcached）](#CacheNodes.CurrentGen-Memcached)
+ [最新一代（Valkey 或 Redis OSS）](#CacheNodes.CurrentGen)
+ [AWS区域支持的节点类型](#CacheNodes.SupportedTypesByRegion)
+ [可突增性能实例](#CacheNodes.Burstable)
+ [相关信息](#CacheNodes.RelatedInfo)

## 最新一代（Memcached）
<a name="CacheNodes.CurrentGen-Memcached"></a>

下表显示了使用网络 I/O 积分机制突增超出其基准带宽的实例类型的基准带宽和突发带宽。

**注意**  
具有可突发网络性能的实例类型使用网络 I/O 积分机制，以尽最大努力突破其基准带宽。

**一般性问题**


| 实例类型 | 支持的最低 Memcached 版本 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | 
| cache.m7g.large |  | 0.937 | 12.5 | 
| cache.m7g.xlarge |  | 1.876 | 12.5 | 
| cache.m7g.2xlarge |  | 3.75 | 15 | 
| cache.m7g.4xlarge |  | 7.5 | 15 | 
| cache.m7g.8xlarge |  | 15 | 不适用 | 
| cache.m7g.12xlarge |  | 22.5 | 不适用 | 
| cache.m7g.16xlarge |  | 30 | 不适用 | 
| cache.m6g.large | 1.5.16 | 0.75 | 10.0 | 
| cache.m6g.xlarge | 1.5.16 | 1.25 | 10.0 | 
| cache.m6g.2xlarge | 1.5.16 | 2.5 | 10.0 | 
| cache.m6g.4xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.m6g.8xlarge | 1.5.16 | 12 | 不适用 | 
| cache.m6g.12xlarge | 1.5.16 | 20 | 不适用 | 
| cache.m6g.16xlarge | 1.5.16 | 25 | 不适用 | 
| cache.m5.large | 1.5.16 | 0.75 | 10.0 | 
| cache.m5.xlarge | 1.5.16 | 1.25 | 10.0 | 
| cache.m5.2xlarge | 1.5.16 | 2.5 | 10.0 | 
| cache.m5.4xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.m5.12xlarge | 1.5.16 | 不适用 | 不适用 | 
| cache.m5.24xlarge | 1.5.16 | 不适用 | 不适用 | 
| cache.m4.large | 1.5.16 | 0.45 | 1.2 | 
| cache.m4.xlarge | 1.5.16 | 0.75 | 2.8 | 
| cache.m4.2xlarge | 1.5.16 | 1.0 | 10.0 | 
| cache.m4.4xlarge | 1.5.16 | 2.0 | 10.0 | 
| cache.m4.10xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.t4g.micro | 1.5.16 | 0.064 | 5.0 | 
| cache.t4g.small | 1.5.16 | 0.128 | 5.0 | 
| cache.t4g.medium | 1.5.16 | 0.256 | 5.0 | 
| cache.t3.micro | 1.5.16 | 0.064 | 5.0 | 
| cache.t3.small | 1.5.16 | 0.128 | 5.0 | 
| cache.t3.medium | 1.5.16 | 0.256 | 5.0 | 
| cache.t2.micro | 1.5.16 | 0.064 | 1.024 | 
| cache.t2.small | 1.5.16 | 0.128 | 1.024 | 
| cache.t2.medium | 1.5.16 | 0.256 | 1.024 | 

**针对 Memcached 进行了优化的内存**


| 实例类型 | 支持的最低版本 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | 
| cache.r7g.large |  | 0.937 | 12.5 | 
| cache.r7g.xlarge |  | 1.876 | 12.5 | 
| cache.r7g.2xlarge |  | 3.75 | 15 | 
| cache.r7g.4xlarge |  | 7.5 | 15 | 
| cache.r7g.8xlarge |  | 15 | 不适用 | 
| cache.r7g.12xlarge |  | 22.5 | 不适用 | 
| cache.r7g.16xlarge |  | 30 | 不适用 | 
| cache.r6g.large | 1.5.16 | 0.75 | 10.0 | 
| cache.r6g.xlarge | 1.5.16 | 1.25 | 10.0 | 
| cache.r6g.2xlarge | 1.5.16 | 2.5 | 10.0 | 
| cache.r6g.4xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.r6g.8xlarge | 1.5.16 | 12 | 不适用 | 
| cache.r6g.12xlarge | 1.5.16 | 20 | 不适用 | 
| cache.r6g.16xlarge | 1.5.16 | 25 | 不适用 | 
| cache.r5.large | 1.5.16 | 0.75 | 10.0 | 
| cache.r5.xlarge | 1.5.16 | 1.25 | 10.0 | 
| cache.r5.2xlarge | 1.5.16 | 2.5 | 10.0 | 
| cache.r5.4xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.r5.12xlarge | 1.5.16 | 20 | 不适用 | 
| cache.r5.24xlarge | 1.5.16 | 25 | 不适用 | 
| cache.r4.large | 1.5.16 | 0.75 | 10.0 | 
| cache.r4.xlarge | 1.5.16 | 1.25 | 10.0 | 
| cache.r4.2xlarge | 1.5.16 | 2.5 | 10.0 | 
| cache.r4.4xlarge | 1.5.16 | 5.0 | 10.0 | 
| cache.r4.8xlarge | 1.5.16 | 12 | 不适用 | 
| cache.r4.16xlarge | 1.5.16 | 25 | 不适用 | 

**针对 Memcached 进行了优化的网络**


| 实例类型 | 支持的最低版本 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | 
| cache.c7gn.large | 1.6.6 | 6.25 | 30 | 
| cache.c7gn.xlarge | 1.6.6 | 12.5 | 40 | 
| cache.c7gn.2xlarge | 1.6.6 | 25 | 50 | 
| cache.c7gn.4xlarge | 1.6.6 | 50 | 不适用 | 
| cache.c7gn.8xlarge | 1.6.6 | 100 | 不适用 | 
| cache.c7gn.12xlarge | 1.6.6 | 150 | 不适用 | 
| cache.c7gn.16xlarge | 1.6.6 | 200 | 不适用 | 

## 最新一代（Valkey 或 Redis OSS）
<a name="CacheNodes.CurrentGen"></a>

有关上一代的更多信息，请参阅[上一代节点](https://aws.amazon.com/elasticache/previous-generation/)。

**注意**  
具有可突发网络性能的实例类型使用网络 I/O 积分机制，以尽最大努力突破其基准带宽。

**一般性问题**


| 实例类型 | 支持的最低 Redis OSS 版本 |  I/O 使用 Redis OSS 5.0.6\$1 进行了增强 | TLS 分载（Redis OSS 6.2.5\$1） | 使用 Redis OSS 7.0. I/O 4\$1 增强多路复用 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | --- | --- | --- | 
| cache.m7g.large | 6.2 | N | N | N | 0.937 | 12.5 | 
| cache.m7g.xlarge | 6.2 | Y | Y | Y | 1.876 | 12.5 | 
| cache.m7g.2xlarge | 6.2 | Y | Y | Y | 3.75 | 15 | 
| cache.m7g.4xlarge | 6.2 | Y | Y | Y | 7.5 | 15 | 
| cache.m7g.8xlarge | 6.2 | Y | Y | Y | 15 | 不适用 | 
| cache.m7g.12xlarge | 6.2 | Y | Y | Y | 22.5 | 不适用 | 
| cache.m7g.16xlarge | 6.2 | Y | Y | Y | 30 | 不适用 | 
| cache.m6g.large | 5.0.6 | N | N | N | 0.75 | 10.0 | 
| cache.m6g.xlarge | 5.0.6 | Y | Y | Y | 1.25 | 10.0 | 
| cache.m6g.2xlarge | 5.0.6 | Y | Y | Y | 2.5 | 10.0 | 
| cache.m6g.4xlarge | 5.0.6 | Y | Y | Y | 5.0 | 10.0 | 
| cache.m6g.8xlarge | 5.0.6 | Y | Y | Y | 12 | 不适用 | 
| cache.m6g.12xlarge | 5.0.6 | Y | Y | Y | 20 | 不适用 | 
| cache.m6g.16xlarge | 5.0.6 | Y | Y | Y | 25 | 不适用 | 
| cache.m5.large | 3.2.4 | N | N | N | 0.75 | 10.0 | 
| cache.m5.xlarge | 3.2.4 | Y | N | N | 1.25 | 10.0 | 
| cache.m5.2xlarge | 3.2.4 | Y | Y | Y | 2.5 | 10.0 | 
| cache.m5.4xlarge | 3.2.4 | Y | Y | Y | 5.0 | 10.0 | 
| cache.m5.12xlarge | 3.2.4 | Y | Y | Y | 12 | 不适用 | 
| cache.m5.24xlarge | 3.2.4 | Y | Y | Y | 25 | 不适用 | 
| cache.m4.large | 3.2.4 | N | N | N | 0.45 | 1.2 | 
| cache.m4.xlarge | 3.2.4 | Y | N | N | 0.75 | 2.8 | 
| cache.m4.2xlarge | 3.2.4 | Y | Y | Y | 1.0 | 10.0 | 
| cache.m4.4xlarge | 3.2.4 | Y | Y | Y | 2.0 | 10.0 | 
| cache.m4.10xlarge | 3.2.4 | Y | Y | Y | 5.0 | 10.0 | 
| cache.t4g.micro | 3.2.4 | N | N | N | 0.064 | 5.0 | 
| cache.t4g.small | 5.0.6 | N | N | N | 0.128 | 5.0 | 
| cache.t4g.medium | 5.0.6 | N | N | N | 0.256 | 5.0 | 
| cache.t3.micro | 3.2.4 | N | N | N | 0.064 | 5.0 | 
| cache.t3.small | 3.2.4 | N | N | N | 0.128 | 5.0 | 
| cache.t3.medium | 3.2.4 | N | N | N | 0.256 | 5.0 | 
| cache.t2.micro | 3.2.4 | N | N | N | 0.064 | 1.024 | 
| cache.t2.small | 3.2.4 | N | N | N | 0.128 | 1.024 | 
| cache.t2.medium | 3.2.4 | N | N | N | 0.256 | 1.024 | 

**内存优化**


| 实例类型 | 支持的最低 Redis OSS 版本 |  I/O 使用 Redis OSS 5.0.6\$1 进行了增强 | TLS 分载（Redis OSS 6.2.5\$1） | 使用 Redis OSS 7.0. I/O 4\$1 增强多路复用 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | --- | --- | --- | 
| cache.r7g.large | 6.2 | N | N | N | 0.937 | 12.5 | 
| cache.r7g.xlarge | 6.2 | Y | Y | Y | 1.876 | 12.5 | 
| cache.r7g.2xlarge | 6.2 | Y | Y | Y | 3.75 | 15 | 
| cache.r7g.4xlarge | 6.2 | Y | Y | Y | 7.5 | 15 | 
| cache.r7g.8xlarge | 6.2 | Y | Y | Y | 15 | 不适用 | 
| cache.r7g.12xlarge | 6.2 | Y | Y | Y | 22.5 | 不适用 | 
| cache.r7g.16xlarge | 6.2 | Y | Y | Y | 30 | 不适用 | 
| cache.r6g.large | 5.0.6 | N | N | N | 0.75 | 10.0 | 
| cache.r6g.xlarge | 5.0.6 | Y | Y | Y | 1.25 | 10.0 | 
| cache.r6g.2xlarge | 5.0.6 | Y | Y | Y | 2.5 | 10.0 | 
| cache.r6g.4xlarge | 5.0.6 | Y | Y | Y | 5.0 | 10.0 | 
| cache.r6g.8xlarge | 5.0.6 | Y | Y | Y | 12 | 不适用 | 
| cache.r6g.12xlarge | 5.0.6 | Y | Y | Y | 20 | 不适用 | 
| cache.r6g.16xlarge | 5.0.6 | Y | Y | Y | 25 | 不适用 | 
| cache.r5.large | 3.2.4 | N | N | N | 0.75 | 10.0 | 
| cache.r5.xlarge | 3.2.4 | Y | N | N | 1.25 | 10.0 | 
| cache.r5.2xlarge | 3.2.4 | Y | Y | Y | 2.5 | 10.0 | 
| cache.r5.4xlarge | 3.2.4 | Y | Y | Y | 5.0 | 10.0 | 
| cache.r5.12xlarge | 3.2.4 | Y | Y | Y | 12 | 不适用 | 
| cache.r5.24xlarge | 3.2.4 | Y | Y | Y | 25 | 不适用 | 
| cache.r4.large | 3.2.4 | N | N | N | 0.75 | 10.0 | 
| cache.r4.xlarge | 3.2.4 | Y | N | N | 1.25 | 10.0 | 
| cache.r4.2xlarge | 3.2.4 | Y | Y | Y | 2.5 | 10.0 | 
| cache.r4.4xlarge | 3.2.4 | Y | Y | Y | 5.0 | 10.0 | 
| cache.r4.8xlarge | 3.2.4 | Y | Y | Y | 12 | 不适用 | 
| cache.r4.16xlarge | 3.2.4 | Y | Y | Y | 25 | 不适用 | 

**利用数据分层功能优化内存**


| 实例类型 | 支持的最低 Redis OSS 版本 |  I/O 使用 Redis OSS 5.0.6\$1 进行了增强 | TLS 分载（Redis OSS 6.2.5\$1） | 使用 Redis OSS 7.0. I/O 4\$1 增强多路复用 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | --- | --- | --- | 
| cache.r6gd.xlarge | 6.2.0 | Y | N | N | 1.25 | 10 | 
| cache.r6gd.2xlarge | 6.2.0 | Y | Y | Y | 2.5 | 10 | 
| cache.r6gd.4xlarge | 6.2.0 | Y | Y | Y | 5.0 | 10 | 
| cache.r6gd.8xlarge | 6.2.0 | Y | Y | Y | 12 | 不适用 | 
| cache.r6gd.12xlarge | 6.2.0 | Y | Y | Y | 20 | 不适用 | 
| cache.r6gd.16xlarge | 6.2.0 | Y | Y | Y | 25 | 不适用 | 

**网络优化**


| 实例类型 | 支持的最低 Redis OSS 版本 |  I/O 使用 Redis OSS 5.0.6\$1 进行了增强 | TLS 分载（Redis OSS 6.2.5\$1） | 使用 Redis OSS 7.0. I/O 4\$1 增强多路复用 | 基准带宽（Gbps） | 突增带宽（Gbps） | 
| --- | --- | --- | --- | --- | --- | --- | 
| cache.c7gn.large | 6.2 | N | N | N | 6.25 | 30 | 
| cache.c7gn.xlarge | 6.2 | Y | Y | Y | 12.5 | 40 | 
| cache.c7gn.2xlarge | 6.2 | Y | Y | Y | 25 | 50 | 
| cache.c7gn.4xlarge | 6.2 | Y | Y | Y | 50 | 不适用 | 
| cache.c7gn.8xlarge | 6.2 | Y | Y | Y | 100 | 不适用 | 
| cache.c7gn.12xlarge | 6.2 | Y | Y | Y | 150 | 不适用 | 
| cache.c7gn.16xlarge | 6.2 | Y | Y | Y | 200 | 不适用 | 

## AWS区域支持的节点类型
<a name="CacheNodes.SupportedTypesByRegion"></a>

支持的节点类型可能因AWS地区而异。有关更多详情，请参阅 [Amazon ElastiCache 定价](https://aws.amazon.com/elasticache/pricing/)。

## 可突增性能实例
<a name="CacheNodes.Burstable"></a>

您可以在亚马逊上启动通用可突发性 T4G、T3-Standard 和 T2-Standard 缓存节点。 ElastiCache这些节点提供基准水平的 CPU 性能，并能随时突增 CPU 使用量，直至累积的积分耗尽。一个 *CPU 积分*提供一个完整 CPU 核心在一分钟内的性能。

Amazon ElastiCache 的 T4g、T3 和 T2 节点配置为标准节点，适用于平均 CPU 利用率一直低于实例基准性能的工作负载。为了突增到基准以上，节点会花费在其 CPU 积分余额中累积的积分。如果节点用完了累积的积分，则性能会逐步减低至基准性能水平。这种逐步减低的过程可确保在耗尽了累积的积分余额时，节点不会出现突然的性能下跌。*有关更多信息，请参阅 *Amazon EC2 用户指南*中的 [CPU 积分和突发性能实例的基准](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html)性能。*

下表列出了可突增性能节点类型以及每小时赚取 CPU 积分的速率。它还显示了节点可以累积的最大 CPU 积分数和CPUs 每个节点的 v 数。此外，它以一个完整核心百分比的形式提供基准性能水平（使用单个 vCPU）。


| 节点类型 | 每小时获得的 CPU 积分 |  可累积获得的最大积分数\$1 |  v CPUs  |  每个 vCPU 的基准性能  |  内存（GiB）  |  网络性能  | 
| --- | --- | --- | --- | --- | --- | --- | 
| t4g.micro | 12 | 288 | 2 | 10% | 0.5 | 高达 5Gb | 
| t4g.small | 24 | 576 | 2 | 20% | 1.37 | 高达 5Gb | 
| t4g.medium | 24 | 576 | 2 | 20% | 3.09 | 高达 5Gb | 
| t3.micro | 12 | 288 | 2 | 10% | 0.5 | 高达 5Gb | 
| t3.small | 24 | 576 | 2 | 20% | 1.37 | 高达 5Gb | 
| t3.medium | 24 | 576 | 2 | 20% | 3.09 | 高达 5Gb | 
| t2.micro | 6 | 144 | 1 | 10% | 0.5 | 低到中 | 
| t2.small | 12 | 288 | 1 | 20% | 1.55 | 低到中 | 
| t2.medium | 24 | 576 | 2 | 20% | 3.22 | 低到中 | 

\$1 可累积的积分数等于可在 24 小时周期内获得的积分数。

\$1\$1 下表列出了每个 vCPU 的基准性能。一些节点大小具有多个 vCPU。对于这些，通过将 vCPU 百分比乘以 v 来计算节点的基准 CPU 利用率。CPUs

以下 CPU 积分指标对 T3 和 T4 可突增性能实例可用：

**注意**  
这些指标对具爆发能力的 T2 实例不可用。
+ `CPUCreditUsage`
+ `CPUCreditBalance`

有关这些指标的更多信息，请参阅 [CPU 积分指标](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#cpu-credit-metrics)。

此外，请注意以下细节：
+ 默认情况下，所有最新一代节点类型在基于 Amazon VPC 的虚拟私有云（VPC）中创建。
+ T2 实例不支持 Redis OSS 仅附加文件（AOF）。Redis OSS 版本 2.8.22 及更高版本不支持 Redis OSS 配置变量 `appendonly` 和 `appendfsync`。

## 相关信息
<a name="CacheNodes.RelatedInfo"></a>
+ [Amazon ElastiCache 产品功能和详情](https://aws.amazon.com/elasticache/details)
+ [Memcached 节点类型特定参数](ParameterGroups.Engine.md#ParameterGroups.Memcached) 
+ [Valkey 和 Redis OSS 参数](ParameterGroups.Engine.md#ParameterGroups.Redis)
+ [传输中加密（TLS）](in-transit-encryption.md)

# 重启节点
<a name="nodes.rebooting"></a>

一些更改需要重启 Valkey、Memcached 或 Redis OSS 集群才能应用。例如，对于某些参数，对参数组中参数值的更改仅在重启后才会应用。

**Topics**
+ [重启 Redis OSS 节点（仅限已禁用集群模式）](#nodes.rebooting.redis)
+ [重启 Memcached 集群](#Clusters.Rebooting)

## 重启 Redis OSS 节点（仅限已禁用集群模式）
<a name="nodes.rebooting.redis"></a>

对于 Valkey 或 Redis OSS（已禁用集群模式）集群，参数组中的参数仅在重启后应用：
+ activerehashing
+ 数据库

Redis 节点只能通过 ElastiCache 控制台更新。一次只能重启单个节点。要重启多个节点，您必须为每个节点重复此过程。

**Valkey 或 Redis OSS（已启用集群模式）参数更改**  
如果要更改 Valkey 或 Redis OSS（已启用集群模式）集群上的以下参数，请按照随后的步骤操作。  
activerehashing
数据库
创建集群的手动备份。请参阅[进行手动备份](backups-manual.md)。
删除 Valkey 或 Redis OSS（已启用集群模式）集群。请参阅[删除中的集群 ElastiCache](Clusters.Delete.md)。
使用修改的参数组和备份还原集群，以便为新集群创建种子。请参阅[从备份还原到新缓存](backups-restoring.md)。
更改其他参数不需要执行此操作。

### 使用 AWS 管理控制台
<a name="nodes.rebooting.con"></a>

可使用 ElastiCache 控制台重启节点。

**重启节点（控制台）**

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

1. 从右上角的列表中，选择适用的 AWS 区域。

1. 在左侧导航窗格中，选择 **Redis OSS**。

   此时会显示一个正在运行 Redis OSS 的集群的列表。

1. 选择 **Cluster Name（集群名称）**下的集群。

1. 在 **Node name（节点名称）**下，选择要重启的节点旁边的单选按钮。

1. 选择 **Actions（操作）**，然后选择 **Reboot node（重启节点）**。

要重启多个节点，请对要重启的每个节点重复步骤 2 到步骤 5。在重启另一个节点之前，您无需等待一个节点完成重启。

## 重启 Memcached 集群
<a name="Clusters.Rebooting"></a>

当您重启 Memcached 集群时，集群将刷新其所有数据并重新启动其引擎。在此过程中，您无法访问集群。由于集群已刷新其所有数据，因此当集群再次可用时，将从空集群开始。

您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 重启集群。无论您是使用 ElastiCache 控制台、AWS CLI 还是 ElastiCache API，都只能发起对单个集群的重启。要重启多个集群，您必须对过程或操作进行迭代。

### 使用 AWS 管理控制台
<a name="Clusters.Rebooting.CON"></a>

您可以使用 ElastiCache 控制台重启集群。

**重启一个集群（控制台）**

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

1. 从右上角的列表中，选择您感兴趣的 AWS 区域。

1. 在导航窗格中，选择在您要重启的集群上运行的引擎。

   此时会显示运行所选引擎的集群的列表。

1. 通过选中集群名称左侧的框来选择要重启的集群。

   **重启**按钮处于活动状态。

   如果您选择多个集群，则**重启**按钮不可用。

1. 选择**重启**。

   此时会显示重启集群确认屏幕。

1. 要重启集群，请选择 **Reboot**。集群的状态将变为 *rebooting cluster nodes (正在重启集群节点)*。

   要不重启集群，请选择 **Cancel**。

要重启多个集群，请对要重启的每个集群重复步骤 2 到步骤 5。在重启一个集群之前，您无需等待另一个集群完成重启。

要重启特定节点，请选择相应节点，然后选择 **Reboot（重启）**。

### 使用 AWS CLI
<a name="Clusters.Rebooting.CLI"></a>

要重启集群 (AWS CLI)，请使用 `reboot-cache-cluster` CLI 操作。

要重启集群中的特定节点，请使用 `--cache-node-ids-to-reboot` 列出要重启的特定集群。以下命令重启 *my-cluster* 的节点 0001、0002 和 0004。

对于 Linux、macOS 或 Unix：

```
aws elasticache reboot-cache-cluster \
    --cache-cluster-id my-cluster \
    --cache-node-ids-to-reboot 0001 0002 0004
```

对于 Windows：

```
aws elasticache reboot-cache-cluster ^
    --cache-cluster-id my-cluster ^
    --cache-node-ids-to-reboot 0001 0002 0004
```

要重启集群中的所有节点，请使用 `--cache-node-ids-to-reboot` 参数并列出该集群的所有节点 ID。有关更多信息，请参阅 [reboot-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/reboot-cache-cluster.html)。

### 使用 ElastiCache API
<a name="Clusters.Rebooting.API"></a>

要使用 ElastiCache API 重启集群，请使用 `RebootCacheCluster` 操作。

要重启集群中的特定节点，请使用 `CacheNodeIdsToReboot` 列出要重启的特定集群。以下命令重启 *my-cluster* 的节点 0001、0002 和 0004。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=RebootCacheCluster
   &CacheClusterId=my-cluster
   &CacheNodeIdsToReboot.member.1=0001
   &CacheNodeIdsToReboot.member.2=0002
   &CacheNodeIdsToReboot.member.3=0004
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

要重启集群中的所有节点，请使用 `CacheNodeIdsToReboot` 参数并列出该集群的所有节点 ID。有关更多信息，请参阅 [RebootCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RebootCacheCluster.html)。

# 替换节点（Valkey 和 Redis OSS）
<a name="CacheNodes.NodeReplacement"></a>

Amazon ElastiCache 频繁升级其实例集，并将补丁和升级无缝应用到实例中。但是，我们需要经常重启您的 ElastiCache 节点，以将必需的操作系统更新应用于底层主机。我们需要进行升级来增强安全性、可靠性和操作性能，而应用这些升级就需要进行替换。

您还可以选择在计划节点替换时段之前的任意时间自已管理这些替换。当您自己管理替换时，您的实例将在重启节点时收到操作系统更新，并且您的计划节点替换将被取消。您可能会继续接收指示节点替换将发生的提醒。如果您已手动缓解对于维护的需求，则可以忽略这些提醒。

**注意**  
由 Amazon ElastiCache 自动生成的替换缓存节点可能具有不同的 IP 地址。您负责查看应用程序配置，以确保缓存节点与适当的 IP 地址关联。

以下列表标识了在 ElastiCache 计划 Valkey 或 Redis OSS 替换节点时可执行的操作。要加快查找您的场景所需的信息，请从以下菜单中进行选择。
+ [Do nothing](#DoNothing) – 让 Amazon ElastiCache 按计划替换节点。
+ [Change your maintenance window](#ChangeWindow) – 将您的维护时段更改为更适合的时间。
+ Valkey 或 Redis OSS（已启用集群模式）配置
  + [Replace the only node in any Valkey or Redis OSS cluster](#ReplaceStandalone) – 使用备份和还原替换 Valkey 或 Redis OSS 集群中的节点的过程。
  + [Replace a replica node in any Valkey or Redis OSS cluster](#ReplaceReplica) – 在无需集群停机的情况下通过增加和减少只读副本数量来替换任何 Valkey 或 Redis OSS 集群中的只读副本的过程。
  + [Replace any node in a Valkey or Redis OSS (cluster mode enabled) shard](#ReplaceShardNode) – 在无需集群停机的情况下通过横向扩展和横向缩减来替换 Valkey 或 Redis OSS（已启用集群模式）集群中的节点的动态过程。
+ Valkey 或 Redis OSS（已禁用集群模式）配置
  + [Replace the only node in any Valkey or Redis OSS cluster](#ReplaceStandalone) – 使用备份和还原替换 Valkey 或 Redis OSS 集群中的任何节点的过程。
  + [Replace a replica node in any Valkey or Redis OSS cluster](#ReplaceReplica) – 在无需集群停机的情况下通过增加和减少只读副本数量来替换任何 Valkey 或 Redis OSS 集群中的只读副本的过程。
  + [Replace a node in a Valkey or Redis OSS (cluster mode disabled) cluster](#ReplaceStandaloneClassic) – 使用复制替换 Valkey 或 Redis OSS（已禁用集群模式）集群中的节点的过程。
  + [Replace a Valkey or Redis OSS (cluster mode disabled) read-replica](#ReplaceReadReplica) – 手动替换 Valkey 或 Redis OSS（已禁用集群模式）复制组中的只读副本的过程。
  + [Replace a Valkey or Redis OSS (cluster mode disabled) primary node](#ReplacePrimary) – 手动替换 Valkey 或 Redis OSS（已禁用集群模式）复制组中的主节点的过程。

**Valkey 和 Redis OSS 节点替换选项**
+ **不执行任何操作** – 如果您不执行任何操作，则 ElastiCache 将按计划替换节点。

   

  对于启用了自动失效转移的非集群配置，Valkey 7.2 及以上版本和 Redis OSS 5.0.6 及以上版本的集群，将在集群继续保持在线并处理传入的写入请求时完成替换。对于 Redis OSS 4.0.10 或更低版本上启用了自动失效转移的集群，您可能会注意到与 DNS 更新相关的短暂写入中断（长达几秒钟）。

  如果节点属于启用了自动失效转移的集群，则 ElastiCache for Valkey 或 ElastiCache for Redis OSS 可在修补、更新和其他与维护相关的节点替换期间提供更高的可用性。

   

  对于设置为使用 ElastiCache for Valkey 或 ElastiCache for Redis OSS 集群客户端的 ElastiCache 集群配置，在集群处理传入的写入请求时，立即完成替换。

   

  对于启用了自动失效转移的非集群配置，Valkey 7.2 及以上版本和 Redis OSS 5.0.6 及以上版本的集群，将在集群继续保持在线并处理传入的写入请求时完成替换。对于 Redis OSS 4.0.10 或更低版本上启用了自动失效转移的集群，您可能会注意到与 DNS 更新相关的短暂写入中断（长达几秒钟）。

   

  如果节点是独立节点，则 Amazon ElastiCache 会首先启动替换节点，然后从现有节点同步。在这段时间内，现有节点不可用于处理服务请求。同步完成后，现有节点将会终止，新节点将取代它。ElastiCache 会尽最大努力在此操作期间保留您的数据。

   
+ **更改维护时段** – 对于计划的维护事件，您将收到 ElastiCache 发送的电子邮件或通知事件。在这些情况下，如果在计划替换时间之前更改维护时段，则现在将在新时间替换您的节点。有关更多信息，请参阅下列内容：
  + [修改 ElastiCache 集群](Clusters.Modify.md)
  + [修改复制组](Replication.Modify.md)
**注意**  
仅当 ElastiCache 通知包括维护时段时，您才可以通过移动维护时段的方式更改替换时段。如果该通知不包括维护时段，您则无法更改替换窗口。

  例如，假设现在是 11 月 9 日星期四 15:00，下一个维护时段是 11 月 10 日星期五 17:00。下面是 3 种情况及其结果：
  + 您将维护时段更改为星期五 16:00，这在当前日期和时间之后且在下一个计划维护时段之前。将在 11 月 10 日星期五 16:00 替换节点。
  + 您将维护时段更改为星期六 16:00，这在当前日期和时间之后且在下一个计划维护时段之后。将在 11 月 11 日星期六 16:00 替换节点。
  + 您将维护时段更改为星期三 16:00，这在当前日期和时间之前。将在 11 月 15 日下一个星期三 16:00 替换节点。

  有关说明，请参阅[管理 ElastiCache 集群维护](maintenance-window.md)。

   
+ **替换任何 Valkey 或 Redis OSS 集群中仅有的节点** – 如果集群没有任何只读副本，您可以使用以下过程来替换节点。

**使用备份和还原替换仅有的节点**

  1. 创建节点的集群的快照。有关说明，请参阅[进行手动备份](backups-manual.md)。

  1. 以快照做种创建新集群。有关说明，请参阅[从备份还原到新缓存](backups-restoring.md)。

  1. 删除具有计划替换的节点的集群。有关说明，请参阅[删除中的集群 ElastiCache](Clusters.Delete.md)。

  1. 在您的应用程序中，将旧节点的终端节点替换为新节点的终端节点。

   
+ **替换任何 Valkey 或 Redis OSS 集群中的副本节点** – 要替换副本集群，请增加副本数量。为此，请添加副本，然后通过删除要替换的副本来减少副本计数。此过程是动态的，不会有任何集群停机。
**注意**  
如果您的分区或复制组已有五个副本，请反向操作步骤 1 和 2。

**替换任何 Valkey 或 Redis OSS 集群中的副本**

  1. 通过将副本添加到分片或复制组来增加副本数量。有关更多信息，请参阅 [增加分区中的副本数量](increase-replica-count.md)。

  1. 删除要替换的副本。有关更多信息，请参阅 [减少分区中的副本数量](decrease-replica-count.md)。

  1. 更新应用程序中的终端节点。

   
+ **替换 Valkey 或 Redis OSS（已启用集群模式）分片中的任何节点** – 要在不停机的情况下替换集群中的节点，请使用在线重新分片。首先通过横向扩展来添加分片，然后通过缩减来删除具有要替换的节点的分片。

**替换 Valkey 或 Redis OSS（已启用集群模式）集群中的任何节点**

  1. 扩展：添加其配置与具有要替换的节点的现有分片的配置相同的其他分片。有关更多信息，请参阅 [通过在线重新分片功能添加分片](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online-add)。

  1. 缩减：删除具有要替换的节点的分区。有关更多信息，请参阅 [通过在线重新分片功能删除分片](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online-remove)。

  1. 更新应用程序中的终端节点。

   
+ **替换 Valkey 或 Redis OSS（已禁用集群模式）集群中的节点** – 如果集群是没有任何只读副本的 Valkey 或 Redis OSS（已禁用集群模式）集群，请使用以下过程来替换节点。

**使用复制替换节点（仅限已禁用集群模式）**

  1. 使用计划替换的节点作为主节点向集群添加复制。不要在此集群上启用多可用区。有关说明，请参阅[向没有分片的 Valkey 或 Redis OSS 集群添加复制](Clusters.AddNode.md#AddReplication.CON)。

  1. 将一个只读副本添加到该集群。有关说明，请参阅[向 ElastiCache 集群添加节点（控制台）](Clusters.AddNode.md#AddNode.CON)。

  1. 将新创建的只读副本提升为主副本。有关说明，请参阅[将 Valkey 或 Redis OSS（已禁用集群模式）复制组的只读副本提升为主节点](Replication.PromoteReplica.md)。

  1. 删除计划替换的节点。有关说明，请参阅[从 ElastiCache 集群中移除节点](Clusters.DeleteNode.md)。

  1. 在您的应用程序中，将旧节点的终端节点替换为新节点的终端节点。

   
+ **替换 Valkey 或 Redis OSS（已禁用集群模式）只读副本** – 如果节点是复制组中的只读副本，则替换该节点。

  如果您的集群只具有一个副本节点，并且启用了多可用区，则必须禁用多可用区才能删除副本。有关说明，请参阅[修改复制组](Replication.Modify.md)。

**替换 Valkey 或 Redis OSS（已禁用集群模式）只读副本**

  1. 删除计划替换的副本。有关说明，请参阅：
     + [减少分区中的副本数量](decrease-replica-count.md)
     + [从 ElastiCache 集群中移除节点](Clusters.DeleteNode.md)

  1. 添加一个新副本来替换计划替换的副本。如果您使用的名称与刚删除的副本相同，可以跳过第 3 步。有关说明，请参阅：
     + [增加分区中的副本数量](increase-replica-count.md)
     + [为 Valkey 或 Redis OSS（已禁用集群模式）添加只读副本](Replication.AddReadReplica.md)

  1. 在您的应用程序中，将旧副本的终端节点替换为新副本的终端节点。

  1. 如果您在开始时禁用了多可用区，现在请重新启用。有关说明，请参阅[启用多可用区](AutoFailover.md#AutoFailover.Enable)。

   
+ **替换 Valkey 或 Redis OSS（已禁用集群模式）主节点** – 如果节点是主节点，则先将一个只读副本提升为主节点。然后删除以前是主节点的副本。

  如果您的集群只具有一个副本，并且启用了多可用区，则必须禁用多可用区才能在步骤 2 中删除副本。有关说明，请参阅[修改复制组](Replication.Modify.md)。

**替换 Valkey 或 Redis OSS（已禁用集群模式）主节点**

  1. 将只读副本提升为主集群。有关说明，请参阅[将 Valkey 或 Redis OSS（已禁用集群模式）复制组的只读副本提升为主节点](Replication.PromoteReplica.md)。

  1. 删除计划替换的节点（旧的主节点）。有关说明，请参阅[从 ElastiCache 集群中移除节点](Clusters.DeleteNode.md)。

  1. 添加一个新副本来替换计划替换的副本。如果您使用的名称与刚删除的节点相同，可以跳过在应用程序中更改终端节点。

     有关说明，请参阅[为 Valkey 或 Redis OSS（已禁用集群模式）添加只读副本](Replication.AddReadReplica.md)。

  1. 在您的应用程序中，将旧节点的终端节点替换为新节点的终端节点。

  1. 如果您在开始时禁用了多可用区，现在请重新启用。有关说明，请参阅[启用多可用区](AutoFailover.md#AutoFailover.Enable)。

   

# 替换节点（Memcached）
<a name="CacheNodes.NodeReplacement-mc"></a>

Amazon ElastiCache for Memcached 频繁升级其机群，将补丁和升级无缝地应用于实例。但是，我们需要经常重启您的 ElastiCache for Memcached 节点，以将必需的操作系统更新应用于底层主机。我们需要进行升级来增强安全性、可靠性和操作性能，而应用这些升级就需要进行替换。

您还可以选择在计划节点替换时段之前的任意时间自已管理这些替换。当您自己管理替换时，您的实例将在重启节点时收到操作系统更新，并且您的计划节点替换将被取消。您可能会继续接收指示节点替换将发生的提醒。如果您已手动缓解对于维护的需求，则可以忽略这些提醒。

**注意**  
由 Amazon ElastiCache 自动生成的替换缓存节点可能具有不同的 IP 地址。您负责查看应用程序配置，以确保缓存节点与适当的 IP 地址关联。

以下列表标识了在 ElastiCache 计划替换 Memcached 节点时可执行的操作。
+ **不执行任何操作** – 如果您不执行任何操作，则 ElastiCache 将按计划替换节点。在 ElastiCache 自动使用新节点替换节点时，新节点最初是空的。
+ **更改维护时段** – 对于计划的维护事件，您将收到来自 ElastiCache 的电子邮件或通知事件。在这种情况下，如果在计划替换时间之前更改维护时段，则现在将在新时间替换您的节点。有关更多信息，请参阅 [修改 ElastiCache 集群](Clusters.Modify.md)。
**注意**  
仅当 ElastiCache 通知包括维护时段时，您才可以通过移动维护时段的方式更改替换时段。如果该通知不包括维护时段，您则无法更改替换窗口。

  例如，假设现在是 11 月 9 日星期四 15:00，下一个维护时段是 11 月 10 日星期五 17:00。下面是 3 种情况及其结果：
  + 您将维护时段更改为星期五 16:00，这在当前日期和时间之后且在下一个计划维护时段之前。将在 11 月 10 日星期五 16:00 替换节点。
  + 您将维护时段更改为星期六 16:00，这在当前日期和时间之后且在下一个计划维护时段之后。将在 11 月 11 日星期六 16:00 替换节点。
  + 您将维护时段更改为星期三 16:00，这在当前日期和时间之前。将在 11 月 15 日下一个星期三 16:00 替换节点。

  有关说明，请参阅[管理 ElastiCache 集群维护](maintenance-window.md)。
+ **手动替换节点** – 如果您需要在下一维护时段之前替换节点，请手动替换节点。

  如果手动替换节点，则会重新分配密钥。此重新分配会导致缓存丢失。

**手动替换 Memcached 节点**

  1. 删除计划替换的节点。有关说明，请参阅[从 ElastiCache 集群中移除节点](Clusters.DeleteNode.md)。

  1. 向集群添加一个新节点。有关说明，请参阅[向 ElastiCache 集群添加节点](Clusters.AddNode.md)。

  1. 如果您未在此集群上使用自动发现，请参阅您的应用程序，并使用新节点的端点替换旧节点的端点的每个实例。

# 预留节点
<a name="CacheNodes.Reserved"></a>

预留一个或多个 ElastiCache 节点可能是降低成本的一种方法。预留节点需支付预付费用，此费用取决于节点类型和预留时间长短（一年或三年）。

要查看预留节点是否为您的使用案例节省了成本，请首先确定节点大小和所需节点数。然后估计节点的使用情况，并比较使用按需节点的总成本与使用预留节点的总成本。您可以在集群中混合搭配使用预留和按需节点。有关定价信息，请参阅 [Amazon ElastiCache 定价](https://aws.amazon.com/elasticache/pricing/)。

**Topics**
+ [使用预留节点管理成本](#reserved-nodes)
+ [标准预留节点产品](#reserved-nodes-standard)
+ [大小灵活的预留节点](#reserved-nodes-size)
+ [删除预留节点](#reserved-nodes-deleting)
+ [旧式预留节点产品](#reserved-nodes-utilization)
+ [获取有关预留节点产品的信息](#reserved-nodes-offerings)
+ [购买预留节点](#reserved-nodes-purchasing)
+ [获取有关预留节点的信息](#reserved-nodes-describing)

## 使用预留节点管理成本
<a name="reserved-nodes"></a>

预留一个或多个节点是一种降低成本的方法。预留节点需支付预付费用，此费用取决于节点类型和预留时间长短（一年或三年）。此费用远低于按需节点产生的每小时使用费。

要查看预留节点是否为您的使用案例节省了成本，请首先确定节点大小和所需节点数。然后估计节点的使用情况，并比较使用按需节点的总成本与使用预留节点的总成本。您可以在集群中混合搭配使用预留和按需节点。有关定价信息，请参阅 [Amazon ElastiCache 定价](https://aws.amazon.com/elasticache/pricing/)。

AWS 区域、节点类型和有效期长度必须在购买时选择，以后不能更改。

您可以使用 AWS 管理控制台、AWS CLI 或 ElastiCache API 列出和购买可用的预留节点产品。

有关预留节点的更多信息，请参阅 [Amazon ElastiCache 预留节点](https://aws.amazon.com/elasticache/reserved-cache-nodes/)。

## 标准预留节点产品
<a name="reserved-nodes-standard"></a>

购买 Amazon ElastiCache 中的预留节点实例（RI），即表示您购买了在预留节点实例的持续时间内对某个特定节点实例类型和 AWS 区域享受折扣费率的承诺。要使用 Amazon ElastiCache 预留节点实例，您需要创建新的 ElastiCache 节点实例，就像您为按需实例创建该实例一样。

如果新预留节点实例的规格与您账户的现有预留节点实例匹配，则将按预留节点实例的折扣费率计费。否则，将以按需费率对节点实例进行收费。这些标准 RI 可从 R5 和 M5 实例系列开始提供。

**注意**  
接下来讨论的所有产品类型都提供一年期和三年期选择。

**产品类型**  
**无预付** RI 提供对预留 ElastiCache 实例的访问，无需预付款。无论使用情况如何，您的*无预付* 预留 ElastiCache 实例都将按照期限内的小时数，采用打折小时费率进行计费。

**部分预付**：RI 需要预付部分预留 ElasticCache 实例费用。期限内剩余的小时数无论使用情况如何，都将按照打折小时费率计费。此选项替换了以前的*高使用率* 选项（将在下一部分中说明）。

**预付全部费用** – RI 要求在 RI 有效期开始时支付全额费用。无论使用了多少小时数，剩余有效期内不会再产生其他任何费用。

## 大小灵活的预留节点
<a name="reserved-nodes-size"></a>

所有预留节点的大小都很灵活。购买预留节点时，您需要指定节点类型，例如 cache.r6g.xlarge。有关节点类型的更多信息，请参阅 [Amazon ElastiCache 定价](https://aws.amazon.com/elasticache/pricing/ )。

如果您具有节点，则需要将其扩展为更大的容量，预留节点将自动应用于扩展的节点。即，同一节点系列中任何大小的使用率将自动应用预留节点。大小灵活的预留节点可供具有相同 AWS 区域的节点使用。大小灵活的预留节点只能在其节点系列中横向缩减。例如，cache.r6g.xlarge 的预留节点可以应用于 cache.r6g.2xlarge，但不能应用于 cache.r6gd.large，因为 cache.r6g 和 cache.r6gd 属于不同的节点系列。

大小灵活性意味着您可以在相同节点系列的配置之间自由移动。例如，您可以从同一 AWS 区域中的 r6g.xlarge 预留节点（8 个标准化单位）移动到两个 r6g.large 保留节点（8 个标准化单位）（2\$14 = 8 个标准化单位），无任何附加成本。

### 将节点从 Redis OSS 升级到 Valkey
<a name="reserved-nodes-upgrade-to-valkey"></a>

随着 Valkey 在 ElastiCache 中的推出，您现在可以将 Redis OSS 预留节点折扣应用于 Valkey 缓存引擎。您可以从 Redis OSS 升级到 Valkey，同时仍可从现有合同和预留中受益。除了可以在缓存节点系列和引擎中应用这些优势外，您甚至可以获得更多增量价值。Valkey 的定价比 Redis OSS 优惠 20%，而且由于预留节点的灵活性，您可以使用 Redis OSS 预留节点来覆盖 20% 以上运行的 Valkey 节点。

为了计算折扣率，每个 ElastiCache 节点和引擎组合都有一个以单位衡量的标准化系数。预留节点单位可应用于给定引擎的预留节点实例系列中的任何正在运行的节点。此外，Redis OSS 预留节点还可以跨引擎应用，以覆盖正在运行的 Valkey 节点。Valkey 的定价相对于 Redis OSS 和 Memcached 有一定折扣，因此其特定实例类型的单位较低，这使得 Redis OSS 预留节点能够覆盖更多 Valkey 节点。

举个例子，假设您为 Redis OSS 引擎购买了一个 cache.r7g.4xlarge 预留节点（32 个单位），并且正在运行一个 cache.r7g.4xlarge Redis OSS 节点（32 个单位）。如果您将该节点升级到 Valkey，则正在运行的节点的标准化系数将降至 25.6 个单位，而您现有的预留节点将为您提供额外 6.4 个单位，用于区域内 cache.r7g 系列中任何其他正在运行的 Valkey 或 Redis OSS 节点。您可以用它来覆盖账户中另一个 cache.r7g.4xlarge Valkey 节点的 25%（25.6 个单位），或者一个 cache.r7g.xlarge Valkey 节点的 100%（6.4 个单位）。



### 使用标准化单位比较使用情况
<a name="reserved-nodes-size.normalized"></a>

您可以使用标准化单位比较不同预留节点大小的使用情况。例如，在两个 cache.r6g.4xlarge 节点上使用一小时相当于在一个 cache.r6g.large 节点上使用 16 个小时。下表显示了每个节点大小的标准化单位数：


****  

| 节点大小 | 标准化单位与 Redis OSS 或 Memcached | 标准化单位与 Valkey | 
| --- | --- | --- | 
| micro | 0.5 | 0.4 | 
| small | 1 | 8. | 
| medium | 2 | 1.6 | 
| large | 4 | 3.2 | 
| xlarge | 8 | 6.4 | 
| 2xlarge | 16 | 12.8 | 
| 4xlarge | 32 | 25.6 | 
| 6xlarge | 48 | 38.4 | 
| 8xlarge | 64 | 51.2 | 
| 10xlarge | 80 | 64 | 
| 12xlarge | 96 | 76.8 | 
| 16xlarge | 128 | 102.4 | 
| 24xlarge | 192 | 153.6 | 

例如，您购买了 cache.r6gd.xlarge 预留节点，并且您的账户在同一 AWS 区域中具有两个运行的 cache.r6gd.large 预留节点。在这种情况下，账单优惠将完全应用于两个节点。

![\[Region containing a cache.r6gd.xlarge reserved node with two cache.r6gd.large nodes inside.\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ri1.png)


或者，如果您的账户在同一 AWS 区域中具有一个运行的 cache.r6gd.2xlarge 实例，则账单优惠应用于 50% 的预留节点使用量。

![\[Diagram showing a cache.r6gd.xlarge reserved node region containing a cache.r6gd.2xlarge instance.\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ri2.png)


## 删除预留节点
<a name="reserved-nodes-deleting"></a>

预留节点具有一年或三年的使用期限。您无法取消预留节点。不过，您可以删除预留节点折扣涵盖的节点。删除预留节点折扣涵盖的节点的过程与删除任何其他节点相同。

如果删除了预留节点折扣涵盖的节点，您可以启动另一个具有兼容规格的节点。在这种情况下，您可以在预留期限（一年或三年）内继续享受折扣费率。

## 旧式预留节点产品
<a name="reserved-nodes-utilization"></a>

旧式节点预留有三个级别：高利用率、中等利用率和低利用率。节点可在任意利用率级别预留一或三年。节点类型、利用率级别和预留期限将影响总成本。在购买预留节点之前，请通过比较各种模型确认预留节点是否可节省您的业务成本。

在一个利用率级别或期限购买的节点无法转换为不同的利用率级别或期限。

**利用率级别**  
*高利用率预留节点* 可支持具备一致基准容量的工作负载或者运行稳定的工作负载。高利用率预留节点需要高预付款，但是如果您计划在 79% 以上的预留节点期内运行，则可最大程度地节省成本 (最多可达按需价格的 70%)。要使用高利用率预留节点，首先需要支付一次性费用。然后，不论节点是否运行，在有效期内以较低的小时费用计费。

如果计划使用预留节点的时间较多，但是希望支付较低的一次性费用或希望在关闭节点时停止计费，*中等利用率预留节点*是最佳选择。如果计划在 40% 以上的预留节点期限内运行，中等利用率预留节点是更加符合成本效益的选择。此选项能节省按需定价 64% 以上的费用。使用中等利用率预留节点，支付的一次性费用比低利用率预留节点略高，在节点运行时适用较低的小时使用费率。

*低利用率预留节点* 适合每天只运行几小时或者每周只运行几天的周期性工作负载。要使用低利用率预留节点，首先需要支付一次性费用，在节点运行时以小时使用费用折扣价计费。只要节点运行时间超过预留节点有效期的 17%，就可以节省成本。在预留节点的整个有效期内，您可以节省成本，节省成本最多可达按需费用的 56%。


**旧式预留节点产品**  

| 提供物 | 预支费用 | 使用费 | 优势 | 
| --- | --- | --- | --- | 
|  高利用率 |  最高 |  最低小时费用。适用于整个期限，无论是否使用预留节点。 |  如果计划在 3 年期的 79% 以上的时间内运行预留节点，可最大程度降低总体成本。 | 
|  中等利用率 |  中 |  对每个节点运行小时适用的小时使用费用。节点未运行时，不产生小时费用。 |  适合于弹性工作负载或者当您预期为中度使用（即超过 3 年期的 40%）。 | 
|  低利用率 |  最低 |  对每个节点运行小时适用的小时使用费用。节点未运行时，不产生小时费用。所有产品类型的最高小时费用，但是该费用仅在预留节点运行时适用。 |  如果您计划一直运行节点，则总体成本最高。但是，如果您计划不经常（3 年期的 15% 以上的时间）使用预留节点，则总体成本最低。 | 
|  按需使用（无预留节点） |  无 |  最高小时费用。只要节点运行即适用。 |  最高小时成本。 | 

有关更多信息，请参阅 [Amazon ElastiCache 定价](https://aws.amazon.com/elasticache/pricing/)。

## 获取有关预留节点产品的信息
<a name="reserved-nodes-offerings"></a>

在购买预留节点之前，可了解有关可用的预留节点产品的信息。

以下示例演示如何使用 AWS 管理控制台、AWS CLI 和 ElastiCache API 获取有关可用的预留节点产品的定价和信息。

**Topics**
+ [使用 AWS 管理控制台](#reserved-nodes-offerings-console)
+ [使用 AWS CLI](#reserved-nodes-offerings-cli)
+ [使用 ElastiCache API](#reserved-nodes-offerings-api)

### 获取有关预留节点产品的信息（控制台）
<a name="reserved-nodes-offerings-console"></a>

要使用 AWS 管理控制台获取有关可用预留集群产品的定价和其他信息，请使用以下过程。

**获取有关可用预留节点产品的信息**

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

1. 在导航窗格中，选择 **Reserved Nodes**。

1. 选择 **Purchase Reserved Node**（购买预留节点）。

1. 对于**引擎**，选择 Valkey、Memcached 或 Redis OSS。

1. 要确定可用的产品，请选择以下选项：
   + **节点类型**
   + **租期**
   + **产品类型**

   在您做出这些选择后，每节点的费用和您的选择的总成本将显示在 **Reservation details**（预留详细信息）下。

1. 选择 **Cancel** 可避免购买这些节点和产生费用。

### 获取有关预留节点产品的信息 (AWS CLI)
<a name="reserved-nodes-offerings-cli"></a>

要获取 Valkey 或 Redis OSS 可用预留节点产品的定价和其他信息，请在命令提示符处键入以下命令：

```
1. aws elasticache describe-reserved-cache-nodes-offerings
```

此操作将生成类似于以下内容的输出（JSON 格式）：

```
 {
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xxx.large",
            "Duration": 94608000,
            "FixedPrice": XXXX.X,
            "UsagePrice": X.X,
            "ProductDescription": "redis",
            "OfferingType": "All Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.X,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
  },
  {
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xxx.xlarge",
            "Duration": 94608000,
            "FixedPrice": XXXX.X,
            "UsagePrice": X.X,
            "ProductDescription": "redis",
            "OfferingType": "Partial Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.XXX,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
  },
  {
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xxx.large",
            "Duration": 31536000,
            "FixedPrice": X.X,
            "UsagePrice": X.X,
            "ProductDescription": "redis",
            "OfferingType": "No Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.XXX,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
}
```

要获取 Memcached 可用预留节点产品的定价和其他信息，请在命令提示符处键入以下命令：

```
 {
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xxx.large",
            "Duration": 94608000,
            "FixedPrice": XXXX.X,
            "UsagePrice": X.X,
            "ProductDescription": "memcached",
            "OfferingType": "All Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.X,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
    },
	{
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xxx.xlarge",
            "Duration": 94608000,
            "FixedPrice": XXXX.X,
            "UsagePrice": X.X,
            "ProductDescription": "memcached",
            "OfferingType": "Partial Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.XXXX,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
     },
     {
            "ReservedCacheNodesOfferingId": "0xxxxxxxx-xxeb-44ex-xx3c-xxxxxxxx072",
            "CacheNodeType": "cache.xx.12xlarge",
            "Duration": 31536000,
            "FixedPrice": X.X,
            "UsagePrice": X.X,
            "ProductDescription": "memcached",
            "OfferingType": "No Upfront",
            "RecurringCharges": [
                {
                    "RecurringChargeAmount": X.XXXX,
                    "RecurringChargeFrequency": "Hourly"
                }
            ]
}
```

有关更多信息，请参阅《AWS CLI 参考》中的 [describe-reserved-cache-nodes-offerings](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-reserved-cache-nodes-offerings.html)。

### 获取有关预留节点产品的信息 (ElastiCache API)
<a name="reserved-nodes-offerings-api"></a>

若要获取有关可用预留节点产品的定价和信息，请调用 `DescribeReservedCacheNodesOfferings` 操作。

**Example**  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeReservedCacheNodesOfferings
    &Version=2014-12-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20141201T220302Z
    &X-Amz-Algorithm
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20141201T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

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

## 购买预留节点
<a name="reserved-nodes-purchasing"></a>

以下示例演示如何使用 AWS 管理控制台、AWS CLI 和 ElastiCache API 购买预留节点产品。

**重要**  
 按照本部分中的示例演示操作会在您的 AWS 账户中产生不可取消的费用。

**Topics**
+ [使用 AWS 管理控制台](#reserved-nodes-purchasing-console)
+ [使用 AWS CLI](#reserved-nodes-purchasing-cli)
+ [使用 ElastiCache API](#reserved-nodes-purchasing-api)

### 购买预留节点（控制台）
<a name="reserved-nodes-purchasing-console"></a>

 此示例演示如何购买预留节点 ID 为 *myreservationID* 的特定预留节点产品 *649fd0c8-cf6d-47a0-bfa6-060f8e75e95f*。

以下过程使用 AWS 管理控制台通过提供 ID 来购买预留节点产品。

**购买预留节点**

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

1. 在导航列表中，选择 **Reserved Nodes**（预留节点）链接。

1. 选择 **Purchase reserved nodes**（购买预留节点）按钮。

1. 对于**引擎**，选择 Valkey、Memcached 或 Redis OSS。

1. 要确定可用的产品，请选择以下选项：
   + **节点类型**
   + **租期**
   + **产品类型**
   + 一个可选的 **Reserved node ID**（预留节点 ID）

   在您做出这些选择后，每节点的费用和您的选择的总成本将显示在 **Reservation details**（预留详细信息）下。

1. 选择 **Purchase (购买)**。

### 购买预留节点 (AWS CLI)
<a name="reserved-nodes-purchasing-cli"></a>

 以下示例演示如何购买预留节点 ID 为 *myreservationID* 的特定预留集群产品 *649fd0c8-cf6d-47a0-bfa6-060f8e75e95f*。

 在命令提示符处输入以下命令：

对于 Linux、macOS 或 Unix：

```
1. aws elasticache purchase-reserved-cache-nodes-offering \
2.     --reserved-cache-nodes-offering-id 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f \
3.     --reserved-cache-node-id myreservationID
```

对于 Windows：

```
1. aws elasticache purchase-reserved-cache-nodes-offering ^
2.     --reserved-cache-nodes-offering-id 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f ^
3.     --reserved-cache-node-id myreservationID
```

 该命令返回的输出类似于下方内容：

```
1. RESERVATION  ReservationId      Class           Start Time                Duration  Fixed Price  Usage Price  Count  State            Description      Offering Type
2. RESERVATION  myreservationid    cache.xx.small  2013-12-19T00:30:23.247Z  1y        XXX.XX USD   X.XXX USD    1      payment-pending  memcached        Medium Utilization
```

有关更多信息，请参阅《AWS CLI 参考》中的 [purchase-reserved-cache-nodes-offering](https://docs.aws.amazon.com/cli/latest/reference/elasticache/purchase-reserved-cache-nodes-offering.html)。

### 购买预留节点 (ElastiCache API)
<a name="reserved-nodes-purchasing-api"></a>

以下示例演示如何购买预留集群 ID 为 *myreservationID* 的特定预留节点产品 *649fd0c8-cf6d-47a0-bfa6-060f8e75e95f*。

按照以下参数调用 `PurchaseReservedCacheNodesOffering` 操作：
+ `ReservedCacheNodesOfferingId` = `649fd0c8-cf6d-47a0-bfa6-060f8e75e95f`
+ `ReservedCacheNodeID` = `myreservationID`
+ `CacheNodeCount` = `1`

**Example**  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=PurchaseReservedCacheNodesOffering
    &ReservedCacheNodesOfferingId=649fd0c8-cf6d-47a0-bfa6-060f8e75e95f
    &ReservedCacheNodeID=myreservationID
    &CacheNodeCount=1
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20141201T220302Z
    &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>
```

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

## 获取有关预留节点的信息
<a name="reserved-nodes-describing"></a>

您可以使用 AWS 管理控制台、AWS CLI 和 ElastiCache API 获取有关已购买的预留节点的信息。

**Topics**
+ [使用 AWS 管理控制台](#reserved-nodes-describing-console)
+ [使用 AWS CLI](#reserved-nodes-describing-cli)
+ [使用 ElastiCache API](#reserved-nodes-describing-api)

### 获取有关预留节点的信息（控制台）
<a name="reserved-nodes-describing-console"></a>

以下过程介绍如何使用 AWS 管理控制台获取有关您购买的预留节点的信息。

**获取有关已购买的预留节点的信息**

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

1. 在导航列表中，选择 **Reserved nodes**（预留节点）链接。

    您的账户的预留节点显示在 Reserved nodes（预留节点）列表中。您可选择列表中的任何预留节点，在控制台底部的详细信息窗格中查看有关该预留节点的详细信息。

### 获取有关预留节点的信息 (AWS CLI)
<a name="reserved-nodes-describing-cli"></a>

若要获取有关您的 AWS 账户的预留节点的信息，请在命令提示符处键入以下命令：

```
aws elasticache describe-reserved-cache-nodes
```

此操作将生成类似于以下内容的输出（JSON 格式）：

```
{
    "ReservedCacheNodeId": "myreservationid",
    "ReservedCacheNodesOfferingId": "649fd0c8-cf6d-47a0-bfa6-060f8e75e95f",
    "CacheNodeType": "cache.xx.small",
    "DataTiering": "disabled",
    "Duration": "31536000",
    "ProductDescription": "memcached",
    "OfferingType": "Medium Utilization",
    "MaxRecords": 0
}
```

有关更多信息，请参阅《AWS CLI 参考》中的 [describe-reserved-cache-nodes](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-reserved-cache-nodes.html)。

### 获取有关预留节点的信息 (ElastiCache API)
<a name="reserved-nodes-describing-api"></a>

若要获取有关您的 AWS 账户的预留节点的信息，请调用 `DescribeReservedCacheNodes` 操作。

**Example**  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeReservedCacheNodes
    &Version=2014-12-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20141201T220302Z
    &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>
```

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

# 迁移上一代节点
<a name="CacheNodes.NodeMigration"></a>

上一代节点是正在逐步停用的节点类型。如果您的现有集群未使用上一代节点类型，则 ElastiCache 不支持创建具有该节点类型的新集群。

由于上一代节点类型的数量有限，当某一节点在集群中运行状况不佳时，我们无法保证成功替换该节点。在这种情况下，您的集群可用性可能会受到负面影响。

 我们建议您将集群迁移到新的节点类型，以获得更好的可用性和性能。有关要迁移到的建议节点类型，请参阅[升级途径](https://aws.amazon.com/ec2/previous-generation/)。有关 ElastiCache 中支持的节点类型和上一代节点类型的完整列表，请参阅 [受支持的节点类型](CacheNodes.SupportedTypes.md)。

## 迁移 Valkey 或 Redis OSS 集群上的节点
<a name="CacheNodes.NodeMigration.Redis"></a>

以下程序介绍了如何使用 ElastiCache 控制台迁移 Valkey 或 Redis OSS 集群节点类型。在此过程中，您的 Valkey 或 Redis OSS 集群将继续处理请求，且停机时间降至最短。根据您的集群配置，您可能会遇到以下停机时间。以下是估计值，可能因您的具体配置而有所不同：
+ 已禁用集群模式（单节点）的停机时间可能大约为 60 秒，主要原因是 DNS 传播。
+ 对于运行 Valkey 7.2 及以上版本或 Redis OSS 5.0.6 及以上版本的集群，已禁用集群模式（具有副本节点）的停机时间可能大约为 1 秒钟。所有较低版本的停机时间大约为 10 秒钟。
+ 启用集群模式的停机时间可能大约为 1 秒钟。

**要使用控制台修改 Valkey 或 Redis OSS 集群节点类型：**

1. 登录到控制台并打开 ElastiCache 控制台（[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/home)）。

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

1. 从集群列表中，选择要迁移的集群。

1. 选择 **Actions**（操作），然后选择 **Modify**（修改）。

1. 从节点类型列表中选择新的节点类型。

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

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

*要使用 AWS CLI 修改 Valkey 或 Redis OSS 集群节点类型：*

使用 [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) API，如下所示：

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group /
	--replication-group-id my-replication-group /
	--cache-node-type new-node-type /
	--apply-immediately
```

对于 Windows：

```
aws elasticache modify-replication-group ^
	--replication-group-id my-replication-group ^
	--cache-node-type new-node-type ^
	--apply-immediately
```

在这种情况下，*new-node-type* 的值是您要迁移到的节点类型。通过传递 `--apply-immediately` 参数，当复制组从 **modifying（正在修改）**变为 **available（可用）**状态时，将立即应用更新。如果 **Apply immediately（立即应用）**处于未选中状态，则在此集群的下一维护时段内执行迁移过程。

**注意**  
如果您无法修改带有 `InvalidCacheClusterState` 错误的集群，则需要先删除还原失败的节点。

### 修复或移除 restore-failed-node
<a name="remove-restore-failed-node"></a>

 以下程序介绍了如何从 Valkey 或 Redis OSS 集群中移除还原失败的节点。要详细了解 ElastiCache 节点如何进入还原失败状态，请参阅[查看 ElastiCache 节点状态](Nodes.viewing.md)。我们建议先移除所有处于还原失败状态的节点，然后将 ElastiCache 集群中剩余的上一代节点迁移到新一代节点类型，最后再重新添加所需数量的节点。

要移除还原失败的节点（控制台）：

1. 登录到控制台并打开 ElastiCache 控制台 ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/home))。

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

1. 从集群列表中，选择要从中移除节点的集群。

1. 从分区列表中，选择要从中移除节点的分区。如果集群的集群模式已禁用，则跳过此步骤。

1. 从节点列表中，选择状态为 `restore-failed` 的节点。

1. 选择 **Actions（操作）**，然后选择 **Delete node（删除节点）**。

从 ElastiCache 集群中移除还原失败的节点后，您现在可以迁移到新一代类型。有关更多信息，请参阅有关[迁移 Valkey 或 Redis OSS 集群上的节点](#CacheNodes.NodeMigration.Redis)的上述内容。

要重新向 ElastiCache 集群添加节点，请参阅[向 ElastiCache 集群添加节点](Clusters.AddNode.md)。

## 迁移 Memcached 集群上的节点
<a name="CacheNodes.NodeMigration.Memcached"></a>

要将 ElastiCache for Memcached 迁移到其他节点类型，您必须创建一个新的集群，该集群始终以空开始，以便您的应用程序可以填充。

**要使用 ElastiCache 控制台迁移 ElastiCache for Memcached 集群节点类型：**
+ 利用新的节点类型创建新集群。有关更多信息，请参阅 [创建 Memcached 集群（控制台）](Clusters.Create-mc.md#Clusters.Create.CON.Memcached)。
+ 在您的应用程序中，将终端节点更新为新集群的终端节点。有关更多信息，请参阅[查找集群的端点（控制台）（Memcached）](Endpoints.md#Endpoints.Find.Memcached)
+ 删除旧的集群。有关更多信息，请参阅 [删除中的集群 ElastiCache](Clusters.Delete.md)。