

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

# 将弹性伸缩与副本结合使用
<a name="AutoScaling-Using-Replicas"></a>

ElastiCache 复制组可以将一个或多个缓存设置为单个逻辑节点。

下面提供了有关目标跟踪和计划策略以及如何使用 AWS 管理控制台 AWS CLI 和 API 应用它们的详细信息。

# 目标跟踪扩缩策略
<a name="AutoScaling-Scaling-Policies-Replicas-Replicas"></a>

在使用目标跟踪扩展策略时，您可以选择一个指标并设置一个目标值。ElastiCache for Valkey and Redis OSS 自动扩缩可创建和管理触发扩缩策略的 CloudWatch 警报，并根据指标和目标值计算扩缩调整。扩展策略根据需要均匀地添加或删除所有分区的副本，以便将指标保持在指定的目标值或接近该值。除了将指标保持在目标值附近以外，目标跟踪扩展策略还会根据由于负载模式波动而造成的指标波动进行调节，并最大限度减少队列容量发生快速波动的情况。

## 副本的弹性伸缩条件
<a name="AutoScaling-Scaling-Criteria-Replicas"></a>

弹性伸缩策略为您的集群定义以下预定义指标：

`ElastiCacheReplicaEngineCPUUtilization`：ElastiCache 用来触发自动扩缩操作的所有副本的引擎 CPU 平均使用率阈值。您可以将此使用率目标设置为 35% 到 70% 之间。

当服务检测到 `ElastiCacheReplicaEngineCPUUtilization` 指标等于或大于“目标”设置时，其会自动提高所有分区的副本。ElastiCache 按等于以下两个数字之间较大者的计数来横向扩展集群副本：与目标之间差异的百分比和 1 个副本。对于横向缩减，ElastiCache 不会自动横向缩减，除非整体指标值低于所定义的目标的 75%。

关于横向扩展示例，如果您有 5 个分区，每个分区中有 1 个副本：

如果目标超出 30%，ElastiCache for Valkey 和 ElastiCache for Redis OSS 将在所有分片上横向扩展 1 个副本（max(0.3, default 1)），最后的结果是有 5 个分片，每个分片包含 2 个副本。

对于横向缩减示例，如果您选择的目标值是 60%，那么 ElastiCache for Valkey and Redis OSS 将在指标小于或等于 45%（比目标值 60% 低 25%）时开始自动横向缩减。

### 弹性伸缩注意事项
<a name="AutoScaling-Scaling-Considerations-Replicas"></a>

请注意以下事项：
+ 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行向外扩展。因此，不能使用目标跟踪扩展策略在指定指标低于目标值时向外扩展。ElastiCache for Valkey and Redis OSS 会根据集群中所有分片上现有副本的最大值（偏离目标的偏差经四舍五入的百分比，默认为 1）来横向扩展副本。
+ 当指定指标数据不足时，目标跟踪扩展策略不会执行扩展。它不会执行向内扩展，因为它不会将数据不足解读为使用率低。
+ 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 ElastiCache 自动扩缩在确定要添加或移除多少容量时将始终通过向上或向下舍入保守地进行操作，以免添加的容量不足或删除的容量过多。
+ 为了确保应用程序可用性，服务会针对指标尽快按比例横向扩展，但渐进式横向缩减，集群中所有分区的最大横向缩减副本数为 1。
+ 您可以为 ElastiCache for Valkey and Redis OSS 集群提供多个目标跟踪扩缩策略，前提是每个策略使用不同的指标。自动扩缩的目的是始终优先考虑可用性，因此其行为会有所不同，具体取决于目标跟踪策略是否已准备好横向扩展或横向缩减。如果任何目标跟踪策略已准备好进行扩展，它将扩展服务，但仅在所有目标跟踪策略（启用了缩减部分）准备好缩减时才执行缩减。
+ 请勿编辑或删除 ElastiCache 自动扩缩为目标跟踪扩缩策略管理的 CloudWatch 警报。在您删除扩缩策略或删除集群时，自动扩缩会自动删除警报。
+ ElastiCache 自动扩缩不会阻止您手动修改分片中的副本。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 告警，但可能会影响可触发这些 CloudWatch 告警的指标。
+ 这些由弹性伸缩管理的 CloudWatch 告警是通过集群中所有分区的 AVG 指标来定义的。因此，拥有热分区可能会导致以下任一情况：
  + 因若干热分区上负载触发 CloudWatch 告警而导致在不需要扩展时执行扩展
  + 因所有分区的影响告警的聚合 AVG 指标不违例而在需要扩展时不执行扩展。
+ ElastiCache 对每个集群的节点的默认限制仍然适用。因此，当选择弹性伸缩时，如果您希望最大节点数超过默认限制，请在 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 请求提高限制，并选择限制类型 **Nodes per cluster per instance type**（每个实例类型的集群的节点数）。
+ 请确保您的 VPC 中有足够的 ENI（弹性网络接口）可用，横向扩展过程中需要弹性网络接口。有关更多信息，请参阅[弹性网络接口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。
+ 如果 EC2 没有足够的可用容量，则 ElastiCache 自动扩缩会直到容量可用或您手动将集群修改为具有足够容量的实例类型才会横向扩展。
+ ElastiCache 自动扩缩不支持扩缩集群 `ReservedMemoryPercent` 低于 25% 的副本。有关更多信息，请参阅 [管理 Valkey 和 Redis OSS 的预留内存](redis-memory-management.md)。

# 添加扩展策略
<a name="AutoScaling-Adding-Policy-Replicas"></a>

您可以使用 AWS 管理控制台 添加扩展策略。

**使用 AWS 管理控制台添加扩展策略**

向 ElastiCache for Valkey and Redis OSS 添加自动扩缩策略

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

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

1. 选择您要向其中添加策略的集群（选择集群名称，而不是其左侧的按钮）。

1. 选择 **Auto Scaling policies**（弹性伸缩策略）选项卡。

1. 选择 **add dynamic scaling**（添加动态扩展）。

1. 在 **Scaling policies**（扩展策略）下，选择 **Add dynamic scaling**（添加动态扩展）。

1. 对于 **Policy name（策略名称）**，请输入策略的名称。

1. 对于 **Scalable Dimension（可扩展维度）**，从对话框中选择 **Replicas（副本）**。

1. 对于目标值，请键入要在 ElastiCache 副本上保持的 CPU 使用率的平均百分比。此值必须介于 35 到 70 之间。将添加或删除集群副本以使指标接近于指定的值。

1. （可选）控制台不支持横向缩减或横向扩展冷却时间。请使用 AWS CLI 修改冷却时间值。

1. 对于**最小容量**，请键入 ElastiCache 自动扩缩策略需要保持的最小副本数。

1. 对于**最大容量**，请键入 ElastiCache 自动扩缩策略需要保持的最大副本数。此值必须大于或等于 5。

1. 选择**创建**。

# 注册可扩展目标
<a name="AutoScaling-Register-Policy"></a>

您可以应用基于预定义或自定义指标的扩展策略。为此，您可以使用 AWS CLI 或 Application Auto Scaling API。第一步是为 ElastiCache for Valkey and Redis OSS 复制组注册自动扩缩。

在集群上使用 ElastiCache 自动扩缩之前，您必须先为集群注册 ElastiCache 自动扩缩。这样做是为了定义应用于该集群的扩展维度和限制。ElastiCache 自动扩缩会连同 `elasticache:replication-group:Replicas` 可扩缩维度一起动态扩缩集群，该维度表示每个分片的集群副本数量。

**使用 CLI**：

要注册您的 ElastiCache 集群，请使用包含下列参数的 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令：
+ --service-namespace – 将此值设置为 elasticache。
+ --resource-id – ElastiCache 集群的资源标识符。对于该参数，资源类型为 ReplicationGroup，唯一标识符为集群的名称，例如 `replication-group/myscalablecluster`。
+ --scalable-dimension – 将此值设置为 `elasticache:replication-group:Replicas`。
+ --min-capacity – 由 ElastiCache 自动扩缩管理的最小副本数。有关 --min-capacity、--max-capacity 和集群中副本数之间关系的信息，请参阅 [最小和最大容量](AutoScaling-Policies.md#AutoScaling-MinMax)。
+ --max-capacity – 由 ElastiCache 自动扩缩管理的最大副本数。有关 --min-capacity、--max-capacity 和集群中副本数之间关系的信息，请参阅 [最小和最大容量](AutoScaling-Policies.md#AutoScaling-MinMax)。

**Example**  
在以下示例中，您注册一个名为 `myscalablecluster` 的 ElastiCache 集群。该注册表示应将集群动态扩展为具有 1 到 5 个副本。  
对于 Linux、macOS 或 Unix：  

```
aws application-autoscaling register-scalable-target \
    --service-namespace elasticache \
    --resource-id replication-group/myscalablecluster \
    --scalable-dimension elasticache:replication-group:Replicas \
    --min-capacity 1 \
    --max-capacity 5 \
```
对于 Windows：  

```
aws application-autoscaling register-scalable-target ^
    --service-namespace elasticache ^
    --resource-id replication-group/myscalablecluster ^
    --scalable-dimension elasticache:replication-group:Replicas ^
    --min-capacity 1 ^
    --max-capacity 5 ^
```

**使用 API**

要注册您的 ElastiCache 集群，请使用包含下列参数的 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令：
+ ServiceNamespace – 将此值设置为 elasticache。
+ ResourceID – ElastiCache 集群的资源标识符。对于该参数，资源类型为 ReplicationGroup，唯一标识符为集群的名称，例如 `replication-group/myscalablecluster`。
+ ScalableDimension – 将此值设置为 `elasticache:replication-group:Replicas`。
+ MinCapacity – 由 ElastiCache 自动扩缩管理的最小副本数。有关 --min-capacity、--max-capacity 和集群中副本数之间关系的信息，请参阅 [最小和最大容量](AutoScaling-Policies.md#AutoScaling-MinMax)。
+ MaxCapacity – 由 ElastiCache 自动扩缩管理的最大副本数。有关 --min-capacity、--max-capacity 和集群中副本数之间关系的信息，请参阅 [最小和最大容量](AutoScaling-Policies.md#AutoScaling-MinMax)。

**Example**  
在以下示例中，您使用 Application Auto Scaling API 注册了一个名为 `myscalablecluster` 的集群。该注册表示应将集群动态扩展为具有 1 到 5 个副本。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas",
    "MinCapacity": 1,
    "MaxCapacity": 5
}
```

# 定义扩缩策略
<a name="AutoScaling-Defining-Policy"></a>

目标跟踪扩展策略配置是由 JSON 块表示的，其中定义了指标和目标值。您可以在文本文件中将扩展策略配置保存为 JSON 块。在调用 AWS CLI 或 Application Auto Scaling API 时，您可以使用该文本文件。有关策略配置语法的更多信息，请参阅 *Application Auto Scaling API 参考*中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

您可以使用以下选项定义目标跟踪扩缩策略配置：

**Topics**
+ [使用预定义的指标](#AutoScaling-Predefined-Metric)
+ [编辑扩展策略](AutoScaling-Editing-Policy.md)
+ [删除扩展策略](AutoScaling-Deleting-Policy.md)
+ [将 CloudFormation 用于 Auto Scaling 策略](AutoScaling-with-Cloudformation.md)
+ [计划扩展](AutoScaling-with-Scheduled-Scaling-Replicas.md)

## 使用预定义的指标
<a name="AutoScaling-Predefined-Metric"></a>

目标跟踪扩展策略配置是由 JSON 块表示的，其中定义了指标和目标值。您可以在文本文件中将扩展策略配置保存为 JSON 块。在调用 AWS CLI 或 Application Auto Scaling API 时，您可以使用该文本文件。有关策略配置语法的更多信息，请参阅 *Application Auto Scaling API 参考*中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

您可以使用以下选项定义目标跟踪扩缩策略配置：

**Topics**
+ [使用预定义的指标](#AutoScaling-Predefined-Metric)
+ [使用自定义指标](#AutoScaling-Custom-Metric)
+ [使用冷却时间](#AutoScaling-Using-Cooldowns)
+ [禁用横向缩减活动](#AutoScaling-Disabling-Scalein)
+ [向 ElastiCache for Valkey and Redis OSS 集群应用扩缩策略](#AutoScaling-Applying-Policy)

### 使用预定义的指标
<a name="AutoScaling-Predefined-Metric"></a>

通过使用预定义的指标，您可以快速为 ElastiCache for Valkey and Redis OSS 集群定义与 ElastiCache 自动扩缩中的目标跟踪搭配使用的目标跟踪扩缩策略。目前，ElastiCache 支持 ElastiCache 副本自动扩缩中的以下预定义指标：

`ElastiCacheReplicaEngineCPUUtilization` – 集群中所有副本在 CloudWatch 中的 EngineCPUUtilization 指标的平均值。您可以在 CloudWatch 中在 ElastiCache `ReplicationGroupId, Role` 下找到聚合指标值，获得所需的 ReplicationGroupId 和角色副本。

要在扩展策略中使用预定义的指标，您需要为扩展策略创建一个目标跟踪配置。该配置必须包含 `PredefinedMetricSpecification` 以表示预定义的指标，并包含 `TargetValue` 以表示该指标的目标值。

### 使用自定义指标
<a name="AutoScaling-Custom-Metric"></a>

通过使用自定义指标，您可以定义满足您的自定义要求的目标跟踪扩展策略。您可以根据随扩缩按比例变化的任何 ElastiCache for Valkey and Redis OSS 指标来定义自定义指标。并非所有 Elasticache 指标都适用于目标跟踪。指标必须是有效的使用率指标，它用于描述实例的繁忙程度。指标值必须随集群中的副本数按比例增加或减少。要使用指标数据按比例增加或减少副本数，必须按比例进行这种增加或减少。

**Example**  
以下示例说明了扩缩策略的目标跟踪配置。在该配置中，自定义指标根据名为 `my-db-cluster` 的集群中所有副本的平均 CPU 使用率（50%）来调整该集群。  

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "EngineCPUUtilization",
        "Namespace": "AWS/ElastiCache",
        "Dimensions": [
            {"Name": "ReplicationGroup","Value": "my-db-cluster"},
            {"Name": "Role","Value": "REPLICA"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

### 使用冷却时间
<a name="AutoScaling-Using-Cooldowns"></a>

您可以为 `ScaleOutCooldown` 指定一个值（秒）以添加横向扩展集群的冷却时间。同样，您可以为 `ScaleInCooldown` 添加一个值（秒）以添加横向缩减集群的冷却时间。有关 `ScaleInCooldown` 和 `ScaleOutCooldown` 的更多信息，请参阅 *Application Auto Scaling API 参考*中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。以下示例说明了扩缩策略的目标跟踪配置。在该配置中，`ElastiCacheReplicaEngineCPUUtilization` 预定义指标用于根据集群中所有副本的平均 CPU 使用率（40%）来调整该集群。该配置将缩减冷却时间指定为 10 分钟，并将扩展冷却时间指定为 5 分钟。

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

### 禁用横向缩减活动
<a name="AutoScaling-Disabling-Scalein"></a>

您可以禁用横向缩减活动，以禁止目标跟踪扩缩策略配置横向缩减 ElastiCache for Valkey and Redis OSS 集群。禁用横向缩减活动将禁止扩展策略删除副本，同时仍允许扩展策略根据需要添加副本。

您可以为 `DisableScaleIn` 指定一个布尔值，以便为集群启用或禁用横向缩减活动。有关 `DisableScaleIn` 的更多信息，请参阅 *Application Auto Scaling API 参考*中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

**Example**  
以下示例说明了扩缩策略的目标跟踪配置。在该配置中，`ElastiCacheReplicaEngineCPUUtilization` 预定义指标根据集群中所有副本的平均 CPU 使用率（40%）调整该集群。该配置禁用扩缩策略的横向缩减活动。

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

### 向 ElastiCache for Valkey and Redis OSS 集群应用扩缩策略
<a name="AutoScaling-Applying-Policy"></a>

在为集群注册 ElastiCache for Valkey and Redis OSS 自动扩缩并定义扩缩策略后，您可以将扩缩策略应用于已注册的集群。要将扩缩策略应用于 ElastiCache for Valkey and Redis OSS 集群，您可以使用 AWS CLI 或 Application Auto Scaling API。

**使用 AWS CLI**

要将扩缩策略应用于 ElastiCache for Valkey and Redis OSS 集群，请使用具有以下参数的 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) 命令：
+ --policy-name – 扩缩策略的名称。
+ --policy-type – 将此值设置为 `TargetTrackingScaling`。
+ --resource-id – 集群的资源标识符。对于该参数，资源类型为 ReplicationGroup，唯一标识符为集群的名称，例如 `replication-group/myscalablecluster`。
+ --service-namespace – 将此值设置为 elasticache。
+ --scalable-dimension – 将此值设置为 `elasticache:replication-group:Replicas`。
+ --target-tracking-scaling-policy-configuration – 用于集群的目标跟踪扩缩策略配置。

**Example**  
在以下示例中，您将使用 ElastiCache 自动扩缩对名为 `myscalablecluster` 的集群应用名为 `myscalablepolicy` 的目标跟踪扩缩策略。为此，请使用在名为 `config.json` 的文件中保存的策略配置。

对于 Linux、macOS 或 Unix：

```
aws application-autoscaling put-scaling-policy \
    --policy-name myscalablepolicy \
    --policy-type TargetTrackingScaling \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:Replicas \
    --target-tracking-scaling-policy-configuration file://config.json
```

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

对于 Windows：

```
aws application-autoscaling put-scaling-policy ^
    --policy-name myscalablepolicy ^
    --policy-type TargetTrackingScaling ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:Replicas ^
    --target-tracking-scaling-policy-configuration file://config.json
```

**使用 API**

要使用 Application Auto Scaling API 将扩缩策略应用于 ElastiCache 集群，请使用具有以下参数的 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) Application Auto Scaling API 操作：
+ PolicyName – 扩展策略的名称。
+ PolicyType – 将此值设置为 `TargetTrackingScaling`。
+ ResourceID – 集群的资源标识符。对于此参数，资源类型为 ReplicationGroup，唯一标识符为 ElastiCache for Redis OSS 集群的名称，例如 `replication-group/myscalablecluster`。
+ ServiceNamespace – 将此值设置为 elasticache。
+ ScalableDimension – 将此值设置为 `elasticache:replication-group:Replicas`。
+ TargetTrackingScalingPolicyConfiguration – 用于集群的目标跟踪扩缩策略配置。

**Example**  
在以下示例中，您将使用 ElastiCache 自动扩缩对名为 `myscalablecluster` 的集群应用名为 `scalablepolicy` 的目标跟踪扩缩策略。您使用的策略配置基于 `ElastiCacheReplicaEngineCPUUtilization` 预定义指标。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 40.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
        }
    }
}
```

# 编辑扩展策略
<a name="AutoScaling-Editing-Policy"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 Application Auto Scaling API 编辑扩缩策略。

**使用 AWS 管理控制台编辑扩展策略**

您只能通过 AWS 管理控制台 使用预定义类型指标编辑策略

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

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

1. 选择您要向其中添加策略的集群（选择集群名称，而不是其左侧的按钮）。

1. 选择 **Auto Scaling policies**（弹性伸缩策略）选项卡。

1. 在 **Scaling policies**（扩展策略）下，选择要更改的 Auto Scaling 策略左侧的按钮，然后选择 **Modify**（修改）。

1. 对该策略做出必要更改。

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

1. 对该策略进行更改。

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

**使用 AWS CLI 或 Application Auto Scaling API 编辑扩缩策略**

您可以使用 AWS CLI 或 Application Auto Scaling API 按照与应用扩缩策略相同的方式编辑扩缩策略：
+ 在使用 Application Auto Scaling API 时，请在 `PolicyName` 参数中指定要编辑的策略名称。为要更改的参数指定新的值。

有关更多信息，请参阅 [向 ElastiCache for Valkey and Redis OSS 集群应用扩缩策略](AutoScaling-Defining-Policy.md#AutoScaling-Applying-Policy)。

# 删除扩展策略
<a name="AutoScaling-Deleting-Policy"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 Application Auto Scaling API 删除扩缩策略

**使用 AWS 管理控制台删除扩展策略**

您只能通过 AWS 管理控制台 使用预定义类型指标编辑策略

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

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

1. 选择要删除其弹性伸缩策略的集群。

1. 选择 **Auto Scaling policies**（弹性伸缩策略）选项卡。

1. 在 **Scaling policies**（扩展策略）下，选择 Auto Scaling 策略，然后选择 **Delete**（删除）。

**使用 AWS CLI 或 Application Auto Scaling API 删除扩缩策略**

您可以使用 AWS CLI 或 Application Auto Scaling API 从 ElastiCache 集群中删除扩缩策略。

** CLI**

要删除 ElastiCache for Valkey and Redis OSS 集群的扩缩策略，请使用具有以下参数的 [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) 命令：
+ --policy-name – 扩缩策略的名称。
+ --resource-id – 集群的资源标识符。对于该参数，资源类型为 ReplicationGroup，唯一标识符为集群的名称，例如 `replication-group/myscalablecluster`。
+ --service-namespace – 将此值设置为 elasticache。
+ --scalable-dimension – 将此值设置为 `elasticache:replication-group:Replicas`。

**Example**  
在以下示例中，您从名为 `myscalablecluster` 的 ELC 集群中删除名为 `myscalablepolicy` 的目标跟踪扩缩策略。

对于 Linux、macOS 或 Unix：

```
aws application-autoscaling delete-scaling-policy \
    --policy-name myscalablepolicy \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:Replicas \
```

对于 Windows：

```
aws application-autoscaling delete-scaling-policy ^
    --policy-name myscalablepolicy ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:Replicas ^
```

**API**

要删除 ElastiCache for Valkey and Redis OSS 集群的扩缩策略，请使用具有以下参数的 [DeleteScalingPolicy](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_DeleteScalingPolicy.html) Application Auto Scaling API 操作：
+ PolicyName – 扩展策略的名称。
+ ResourceID – 集群的资源标识符。对于该参数，资源类型为 ReplicationGroup，唯一标识符为集群的名称，例如 `replication-group/myscalablecluster`。
+ ServiceNamespace – 将此值设置为 elasticache。
+ ScalableDimension – 将此值设置为 `elasticache:replication-group:Replicas`。

在以下示例中，您将使用 Application Auto Scaling API 从名为 `myscalablecluster` 的集群中删除名为 `myscalablepolicy` 的目标跟踪扩缩策略。

```
POST / HTTP/1.1
>>>>>>> mainline
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas"
}
```

# 将 CloudFormation 用于 Auto Scaling 策略
<a name="AutoScaling-with-Cloudformation"></a>

此代码段演示如何使用 [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) 资源创建计划操作并将其应用于 [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) 资源。此示例利用 [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) 和 [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) 内置函数，使用在同一模板中指定的 `AWS::ElastiCache::ReplicationGroup` 资源的逻辑名称来构建 `ResourceId` 属性。

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 0
     MinCapacity: 0
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:Replicas'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      ScalingTargetId: !Ref ScalingTarget
      ServiceNamespace: elasticache
      PolicyName: testpolicy
      PolicyType: TargetTrackingScaling
      ScalableDimension: 'elasticache:replication-group:Replicas'
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ElastiCacheReplicaEngineCPUUtilization
        TargetValue: 40
```

# 计划扩展
<a name="AutoScaling-with-Scheduled-Scaling-Replicas"></a>

按计划扩展使您可以按照可预测的需求变化来扩展应用程序。要使用计划扩缩，您需要创建计划操作，用于告知 ElastiCache for Valkey and Redis OSS 在特定时间执行扩缩活动。创建计划操作时，您需要指定现有的 ElastiCache 集群、执行扩缩活动的时间、最小容量和最大容量。您可以创建仅扩展一次或按重复计划扩展的计划操作。

 您只能为已存在的 ElastiCache 集群创建计划操作。您不能在创建集群的同时创建计划操作。

有关计划操作创建、管理和删除的相关术语的详细信息，请参阅[计划操作创建、管理和删除的常用命令](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html#scheduled-scaling-commonly-used-commands) 

**创建一次性计划操作：**

类似于分区维度。请参阅[计划扩展](AutoScaling-with-Scheduled-Scaling-Shards.md)。

**删除计划操作**

类似于分区维度。请参阅[计划扩展](AutoScaling-with-Scheduled-Scaling-Shards.md)。

**使用 AWS CLI 管理计划扩展**

使用以下 application-autoscaling API：
+ [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 
+ [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html) 
+ [delete-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html) 

## 使用 CloudFormation 创建弹性伸缩策略
<a name="AutoScaling-with-Cloudformation-Update-Action"></a>

此代码段演示如何使用 [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) 资源创建计划操作并将其应用于 [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) 资源。此示例利用 [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) 和 [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) 内置函数，使用在同一模板中指定的 `AWS::ElastiCache::ReplicationGroup` 资源的逻辑名称来构建 `ResourceId` 属性。

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 0
     MinCapacity: 0
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:Replicas'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"
     ScheduledActions:
       - EndTime: '2020-12-31T12:00:00.000Z'
         ScalableTargetAction:
           MaxCapacity: '5'
           MinCapacity: '2'
         ScheduledActionName: First
         Schedule: 'cron(0 18 * * ? *)'
```