

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

# 从 ElastiCache 集群中移除节点
<a name="Clusters.DeleteNode"></a>

你可以使用、或 API 从 Valkey、Memcached 或 Redis OSS 集群中AWS CLI删除节点。AWS 管理控制台 ElastiCache 

**注意**  
每次更改您的 Memcached 集群中的节点数时，您必须至少重新映射部分键空间，以便它映射到正确的节点。有关对 Memcached 集群进行负载均衡的更多详细信息，请参阅[配置您的 ElastiCache 客户端以实现高效的负载平衡 (Memcached)](BestPractices.LoadBalancing.md)。

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

**从集群中移除节点（控制台）**

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

1. 从右上角的列表中，选择要从中移除节点的集群的AWS区域。

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

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

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

   此时会显示集群节点的列表。

1. 选择要删除的节点的节点 ID 左侧的复选框。使用 ElastiCache 控制台时，一次只能删除一个节点，因此选择多个节点表明您无法使用**删除节点**按钮。

   此时将显示*删除节点*页面。

1. 要删除节点，请完成**删除节点**页面，然后选择**删除节点**。要保留节点，请选择**取消**。
**重要**  
使用 Valkey 或 Redis OSS 时，如果要删除集群中不再符合多可用区标准的节点结果，请确保先清除**多可用区**复选框，然后再删除节点。如果清除**多可用区**复选框，则可以选择启用**自动故障转移**。


**新添加和删除请求对待处理请求的影响**  

| 场景 | 待处理的操作 | 新建请求 | 结果 | 
| --- | --- | --- | --- | 
|  方案 1 |  删除 | 删除 |  新的删除请求（待处理或立即）将替换待处理的删除请求。 例如，如果节点 0001、0003 和 0007 处于等待删除状态，同时发出了删除节点 0002 和 0004 的新请求，则只删除节点 0002 和 0004。节点 0001、0003 和 0007 不会被删除。 | 
|  方案 2 |  删除 |  Create |  新的创建请求（待处理或立即）将替换待处理的删除请求。 例如，如果节点 0001、0003 和 0007 处于等待删除状态，同时发出了创建节点的新请求，则会创建一个新节点，节点 0001、0003 和 0007 不会被删除。 | 
|  方案三 |  Create |  删除 |  新的删除请求（待处理或立即）将替换待处理的创建请求。 例如，如果存在创建两个节点的待处理请求，同时发出了删除节点 0003 的新请求，则不会创建新节点，节点 0003 会被删除。 | 
|  方案 4 |  Create |  Create |  新创建请求将添加到待处理创建请求中。 例如，如果存在创建两个节点的待处理请求，同时发出了创建三个节点的新请求，则新请求将添加到待处理请求中，并将创建五个节点。 如果新创建请求设置为 **Apply Immediately - Yes（立即应用 – 是）**，则立即执行所有创建请求。如果新创建请求设置为 **Apply Immediately - No（立即应用 – 否）**，则所有创建请求为待处理。 | 

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

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

1. 确定要 IDs 移除的节点。有关更多信息，请参阅 [查看 ElastiCache 集群的详细信息](Clusters.ViewDetails.md)。

1. 将 `decrease-replica-count` CLI 操作与要删除的节点列表一起使用，如下例所示。

   要使用命令行界面从集群中移除节点，请结合以下参数使用命令 `decrease-replica-count`：
   + `--replication-group-id` 要从其中删除节点的复制组的 ID。
   + `--new-replica-count` `--new-replica-count` 参数指定应用修改后此集群中应有的节点的数量。
   + `--replicas-to-remove`要从 IDs 该集群中移除的节点的列表。
   + `--apply-immediately` 或 `--no-apply-immediately` 指定是立即移除这些节点还是在下一维护时段移除这些节点。
   + `--region`指定要从中移除节点的集群AWS区域。
**注意**  
您只能在调用此操作时传递 `--replicas-to-remove` 或者 `--new-replica-count` 参数。

   对于 Linux、macOS 或 Unix：

   ```
   aws elasticache decrease-replica-count \
       --replication-group-id my-replication-group \
       --new-replica-count 2 \   
       --region us-east-2 \
       --apply-immediately
   ```

   对于 Windows：

   ```
   aws elasticache decrease-replica-count ^
       --replication-group-id my-replication-group ^
       --new-replica-count 3 ^   
       --region us-east-2 ^
       --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",
               "node-test-006"
           ],
           "NodeGroups": [
               {
                   "NodeGroupId": "0001",
                   "Status": "modifying",
                   "PrimaryEndpoint": {
                       "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                       "Port": 6379
                   },
                   "ReaderEndpoint": {
                       "Address": "node-test-ro.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"
                       },
                       {
                           "CacheClusterId": "node-test-004",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-004.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2c",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-005",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-005.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2b",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-006",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-006.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"
       }
   }
   ```

或者，您也可以调用 `decrease-replica-count`，而不必传递 `--new-replica-count` 参数，您可以传递 `--replicas-to-remove` 参数，如下所示：

对于 Linux、macOS 或 Unix：

```
aws elasticache decrease-replica-count \
    --replication-group-id my-replication-group \
    --replicas-to-remove node-test-003 \   
    --region us-east-2 \
    --apply-immediately
```

对于 Windows：

```
aws elasticache decrease-replica-count ^
    --replication-group-id my-replication-group ^
    --replicas-to-remove node-test-003 ^   
    --region us-east-2 ^
    --apply-immediately
```

有关更多信息，请参阅AWS CLI主题[https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html)。

## 在 Valkey 或 Redis OSS 上使用 ElastiCache API
<a name="Clusters.DeleteNode.API2"></a>

要使用 ElastiCache API 移除节点，请使用复制组 ID 和要移除的节点列表调用 `DecreaseReplicaCount` API 操作，如下所示：
+ `ReplicationGroupId` 要从其中删除节点的复制组的 ID。
+ `ReplicasToRemove` `ReplicasToRemove` 参数指定应用修改后此集群中应有的节点的数量。
+ `ApplyImmediately` 指定是立即移除这些节点还是在下一维护时段移除这些节点。
+ `Region`指定要从中移除节点的集群AWS区域。

以下示例从集群 my-cluster 中立即删除节点 0004 和 0005。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DecreaseReplicaCount
    &ReplicationGroupId=my-replication-group
    &ApplyImmediately=true
    &ReplicasToRemove=node-test-003    
    &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.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html)。

## 在 Memcached 中使用 ElastiCache API
<a name="Clusters.DeleteNode.API"></a>

要使用 ElastiCache API 移除节点，请使用缓存集群 ID 和要移除的节点列表调用 `ModifyCacheCluster` API 操作，如下所示：
+ `CacheClusterId` 要从其中删除节点的集群的 ID。
+ `NumCacheNodes` `NumCacheNodes` 参数指定应用修改后此集群中应有的节点的数量。
+ `CacheNodeIdsToRemove.member.n`要从集群中 IDs 移除的节点列表。
  + `CacheNodeIdsToRemove.member.1=0004`
  + `CacheNodeIdsToRemove.member.1=0005`
+ `ApplyImmediately` 指定是立即移除这些节点还是在下一维护时段移除这些节点。
+ `Region`指定要从中移除节点的集群AWS区域。

以下示例从集群 my-cluster 中立即删除节点 0004 和 0005。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=ModifyCacheCluster
    &CacheClusterId=my-cluster
    &ApplyImmediately=true
    &CacheNodeIdsToRemove.member.1=0004
    &CacheNodeIdsToRemove.member.2=0005
    &NumCacheNodes=3   
    &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.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html)。