

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

# 向 ElastiCache 集群添加节点
<a name="Clusters.AddNode"></a>

向 Memcached 集群添加节点会增加您集群的分区数量。更改集群中的分区数量时，需要重新映射一些键空间，以将其映射到正确的节点。重新映射键空间会暂时增加集群上的缓存未命中次数。有关更多信息，请参阅 [配置您的 ElastiCache 客户端以实现高效的负载平衡 (Memcached)](BestPractices.LoadBalancing.md)。

要重新配置 Valkey 或 Redis OSS（已启用集群模式）集群，请参阅[扩缩 Valkey 或 Redis OSS（已启用集群模式）集群](scaling-redis-cluster-mode-enabled.md)

您可以使用 ElastiCache 管理控制台、Amazon CLI或 ElastiCache API 向集群添加节点。

## 使用 ElastiCache Amazon Web Services 管理控制台
<a name="Clusters.AddNode.CON"></a>

将节点添加到单节点 Valkey 或 Redis OSS（已禁用集群模式）集群（未启用复制的集群）是包含两个步骤的流程：首先添加复制，然后添加副本节点。

**主题**
+ [向没有分片的 Valkey 或 Redis OSS 集群添加复制](#AddReplication.CON)
+ [向 ElastiCache 集群添加节点（控制台）](#AddNode.CON)

下面的过程可向未启用复制的单节点 Valkey 或 Redis OSS 添加复制。在添加复制时，现有的节点将成为启用复制的集群中的主节点。添加复制后，您可以向该集群添加最多 5 个副本节点。<a name="AddReplication.CON"></a>

**向没有分片的 Valkey 或 Redis OSS 集群添加复制**

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

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

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

1. 选择要将节点添加到的集群的名称，而不是集群名称左侧的框。

   未启用复制的 Redis OSS 集群满足以下条件：
   + 它运行的是 Redis OSS，而不是启用集群模式的 Redis OSS。
   + 它有零个分片。

     如果该集群有任何分片、已启用复制，则您可以在[向 ElastiCache 集群添加节点（控制台）](#AddNode.CON)处继续。

1. 选择 **Add replication**。

1. 在**添加复制**中，为该启用复制的集群输入说明。

1. 选择**添加**。

   一旦该集群的状态恢复为 *available*，您就可以在下一个流程中继续，并向该集群中添加副本。<a name="AddNode.CON"></a>

**向 ElastiCache 集群添加节点（控制台）**

以下步骤可用于将节点添加到集群。

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

1. 在导航窗格中，选择在您要添加节点的集群上运行的引擎。

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

1. 从集群列表中，对于要向其添加节点的集群，选择其名称。

   如果您的集群是 Valkey 或 Redis OSS（已启用集群模式）集群，请参阅 [扩缩 Valkey 或 Redis OSS（已启用集群模式）集群](scaling-redis-cluster-mode-enabled.md)。

   如果您的集群是具有零个分片的 Valkey 或 Redis OSS（已禁用集群模式）集群，请先完成 [向没有分片的 Valkey 或 Redis OSS 集群添加复制](#AddReplication.CON) 中的步骤。

1. 选择 **Add node**。

1. 在 **Add Node (添加节点)** 对话框中，填写请求的信息。

1. 选择 **Apply Immediately - Yes (立即应用 - 是)** 按钮立即添加此节点，或选择 **No (否)** 在集群的下一个维护时段添加此节点。  
**新添加和删除请求对待处理请求的影响**    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AmazonElastiCache/latest/dg/Clusters.AddNode.html)

   要确定哪些操作处于待处理状态，请选择 **Description（描述）**选项卡，然后查看显示了多少待处理的创建或删除操作。您不能同时拥有待处理的创建操作和待处理的删除操作。

1. 选择 **Add** 按钮。

    片刻之后，新的节点应会出现在节点列表中，其状态为 **creating**。若非如此，请刷新浏览器页面。当节点的状态更改为 *available* 时，便可以使用新节点。

## 使用 wit Amazon CLI h ElastiCache
<a name="Clusters.AddNode.CLI"></a>

要使用向集群添加节点Amazon CLI，请使用`modify-cache-cluster`带有以下参数的Amazon CLI操作：
+ `--cache-cluster-id` 要将节点添加到的集群的 ID。
+ `--num-cache-nodes` `--num-cache-nodes` 参数指定应用修改后此集群中应有的节点的数量。要向此集群添加节点，`--num-cache-nodes` 必须大于此集群中的当前节点数。如果此值小于当前节点数，则 ElastiCache 需要参数`cache-node-ids-to-remove`和要从集群中移除的节点列表。有关更多信息，请参阅 [使用 wit Amazon CLI h ElastiCache](Clusters.DeleteNode.md#Clusters.DeleteNode.CLI)。
+ `--apply-immediately` 或 `--no-apply-immediately`，用于指定是立即添加这些节点还是在下一维护时段添加这些节点。

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id my-cluster \
    --num-cache-nodes 5 \
    --apply-immediately
```

对于 Windows：

```
aws elasticache modify-cache-cluster ^
    --cache-cluster-id my-cluster ^
    --num-cache-nodes 5 ^
    --apply-immediately
```

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

```
{
    "CacheCluster": {
        "Engine": "memcached", 
        "CacheParameterGroup": {
            "CacheNodeIdsToReboot": [], 
            "CacheParameterGroupName": "default.memcached1.4", 
            "ParameterApplyStatus": "in-sync"
        }, 
        "CacheClusterId": "my-cluster", 
        "PreferredAvailabilityZone": "us-west-2b", 
        "ConfigurationEndpoint": {
            "Port": 11211, 
            "Address": "rlh-mem000.7alc7bf-example.cfg.usw2.cache.amazonaws.com"
        }, 
        "CacheSecurityGroups": [], 
        "CacheClusterCreateTime": "2016-09-21T16:28:28.973Z", 
        "AutoMinorVersionUpgrade": true, 
        "CacheClusterStatus": "modifying", 
        "NumCacheNodes": 2, 
        "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
        "SecurityGroups": [
            {
                "Status": "active", 
                "SecurityGroupId": "sg-dbe93fa2"
            }
        ], 
        "CacheSubnetGroupName": "default", 
        "EngineVersion": "1.4.24", 
        "PendingModifiedValues": {
            "NumCacheNodes": 5
        }, 
        "PreferredMaintenanceWindow": "sat:09:00-sat:10:00", 
        "CacheNodeType": "cache.m3.medium",
         "DataTiering": "disabled",
    }
}
```

有关更多信息，请参阅Amazon CLI主题[https://docs.amazonaws.cn/cli/latest/reference/elasticache/modify-cache-cluster.html](https://docs.amazonaws.cn/cli/latest/reference/elasticache/modify-cache-cluster.html)。

## 使用 wit Amazon CLI h ElastiCache
<a name="Clusters.AddNode.CLI"></a>

如果要向未启用复制的现有 Valkey 或 Redis OSS（已禁用集群模式）集群添加节点，则必须先创建将该现有集群指定为主集群的复制组。有关更多信息，请参阅 [使用可用 Valkey 或 Redis OSS 集群创建复制组（Amazon CLI）](Replication.CreatingReplGroup.ExistingCluster.md#Replication.CreatingReplGroup.ExistingCluster.CLI)。待该复制组为 *available*（可用）后，您可以继续下面的流程。

要使用向集群添加节点Amazon CLI，请使用`increase-replica-count`带有以下参数的Amazon CLI操作：
+ `--replication-group-id` 要添加节点的复制组的 ID。
+ `--new-replica-count` 指定应用修改后此复制组中应有的节点的数量。要向此集群添加节点，`--new-replica-count` 必须大于此集群中的当前节点数。
+ `--apply-immediately` 或 `--no-apply-immediately`，用于指定是立即添加这些节点还是在下一维护时段添加这些节点。

对于 Linux、macOS 或 Unix：

```
aws elasticache increase-replica-count \
    --replication-group-id my-replication-group \
    --new-replica-count 4 \
    --apply-immediately
```

对于 Windows：

```
aws elasticache increase-replica-count ^
    --replication-group-id my-replication-group ^
    --new-replica-count 4 ^
    --apply-immediately
```

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

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "node-test",
        "Description": "node-test",       
        "Status": "modifying",
        "PendingModifiedValues": {},
        "MemberClusters": [
            "node-test-001",
            "node-test-002",
            "node-test-003",
            "node-test-004",
            "node-test-005"
        ],
        "NodeGroups": [
            {
                "NodeGroupId": "0001",
                "Status": "modifying",
                "PrimaryEndpoint": {
                    "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                    "Port": 6379
                },
                "ReaderEndpoint": {
                    "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                    "Port": 6379
                },
                "NodeGroupMembers": [
                    {
                        "CacheClusterId": "node-test-001",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-001.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2a",
                        "CurrentRole": "primary"
                    },
                    {
                        "CacheClusterId": "node-test-002",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-002.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2c",
                        "CurrentRole": "replica"
                    },
                    {
                        "CacheClusterId": "node-test-003",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-003.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2b",
                        "CurrentRole": "replica"
                    }
                ]
            }
        ],
        "SnapshottingClusterId": "node-test-002",
        "AutomaticFailover": "enabled",
        "MultiAZ": "enabled",
        "SnapshotRetentionLimit": 1,
        "SnapshotWindow": "07:30-08:30",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r5.large",
         "DataTiering": "disabled",
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false,
        "ARN": "arn:aws:elasticache:us-west-2:123456789012:replicationgroup:node-test"
    }
}
```

有关更多信息，请参阅Amazon CLI主题[https://docs.amazonaws.cn/cli/latest/reference/elasticache/increase-replica-count.html](https://docs.amazonaws.cn/cli/latest/reference/elasticache/increase-replica-count.html)。

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

如果要向未启用复制的现有 Valkey 或 Redis OSS（已禁用集群模式）集群添加节点，则必须先创建将该现有集群指定为主集群的复制组。有关更多信息，请参阅 [向独立 Valkey 或 Redis OSS（已禁用集群模式）集群添加副本 (API) ElastiCache](Replication.CreatingReplGroup.ExistingCluster.md#Replication.CreatingReplGroup.ExistingCluster.API)。待该复制组为 *available*（可用）后，您可以继续下面的流程。

**向集群添加节点 (ElastiCache API)**
+ 按照以下参数调用 `IncreaseReplicaCount` API 操作：
  + `ReplicationGroupId` 要将节点添加到的集群的 ID。
  + `NewReplicaCount` `NewReplicaCount` 参数指定应用修改后此集群中应有的节点的数量。要向此集群添加节点，`NewReplicaCount` 必须大于此集群中的当前节点数。如果此值小于当前节点数，请使用 `DecreaseReplicaCount` API 以及要从集群中移除的节点数量。
  + `ApplyImmediately` 指定是立即添加这些节点还是在下一维护时段添加这些节点。
  + `Region`指定要向其添加节点的集群的Amazon区域。

  以下示例演示向集群添加节点的调用。  
**Example**  

  ```
  https://elasticache.us-west-2.amazonaws.com/
      ?Action=IncreaseReplicaCount
      &ApplyImmediately=true
      &NumCacheNodes=4
      &ReplicationGroupId=my-replication-group
      &Region=us-east-2
      &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 主题[https://docs.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_IncreaseReplicaCount.html](https://docs.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_IncreaseReplicaCount.html)。

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

**向集群添加节点 (ElastiCache API)**
+ 按照以下参数调用 `ModifyCacheCluster` API 操作：
  + `CacheClusterId` 要将节点添加到的集群的 ID。
  + `NumCacheNodes` `NumCachNodes` 参数指定应用修改后此集群中应有的节点的数量。要向此集群添加节点，`NumCacheNodes` 必须大于此集群中的当前节点数。如果此值小于当前节点数，则 ElastiCache 需要参数`CacheNodeIdsToRemove`以及要从集群中移除的节点列表（请参阅[在 Memcached 中使用 ElastiCache API](Clusters.DeleteNode.md#Clusters.DeleteNode.API)）。
  + `ApplyImmediately` 指定是立即添加这些节点还是在下一维护时段添加这些节点。
  + `Region`指定要向其添加节点的集群的Amazon区域。

  以下示例演示向集群添加节点的调用。  
**Example**  

  ```
  https://elasticache.us-west-2.amazonaws.com/
      ?Action=ModifyCacheCluster
      &ApplyImmediately=true
      &NumCacheNodes=5
  	&CacheClusterId=my-cluster
  	&Region=us-east-2
      &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 主题[https://docs.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html](https://docs.amazonaws.cn/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html)。