

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

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

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

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

**Topics**
+ [使用预定义的指标](#AutoScaling-Scaling-Predefined-Metric)
+ [使用自定义指标](#AutoScaling-Scaling-Custom-Metric)
+ [使用冷却时间](#AutoScaling-Scaling-Cooldown-periods)

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

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

目前，ElastiCache 在 NodeGroup 自动扩缩中支持以下预定义指标：
+ **ElastiCachePrimaryEngineCPUUtilization** – 集群中所有主节点在 CloudWatch 中 `EngineCPUUtilization` 指标的平均值。
+ **ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage** – 集群中所有主节点在 CloudWatch 中 `DatabaseMemoryUsageCountedForEvictPercentage` 指标的平均值。
+ **ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage** – 集群中所有主节点在 CloudWatch 中 `ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage` 指标的平均值。

有关 `EngineCPUUtilization`、`DatabaseMemoryUsageCountedForEvictPercentage` 和 `DatabaseCapacityUsageCountedForEvictPercentage` 指标的更多信息，请参阅[使用 CloudWatch 指标监控使用情况](CacheMetrics.md)。要在扩展策略中使用预定义的指标，您需要为扩展策略创建一个目标跟踪配置。该配置必须包含 `PredefinedMetricSpecification` 以表示预定义的指标，并包含 TargetValue 以表示该指标的目标值。

**Example**  
以下示例说明了 ElastiCache for Valkey and Redis OSS 集群的典型目标跟踪扩缩策略配置。在该配置中，`ElastiCachePrimaryEngineCPUUtilization` 预定义指标用于根据集群中所有主节点的平均 CPU 使用率（40%）来调整该集群。  

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    }
}
```

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

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

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

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

## 使用冷却时间
<a name="AutoScaling-Scaling-Cooldown-periods"></a>

您可以为 `ScaleOutCooldown` 指定一个值（秒）以添加横向扩展集群的冷却时间。同样，您可以为 `ScaleInCooldown` 添加一个值（秒）以添加横向缩减集群的冷却时间。有关更多信息，请参阅 Application Auto Scaling API 参考中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

 以下示例说明了扩缩策略的目标跟踪配置。在该配置中，`ElastiCachePrimaryEngineCPUUtilization` 预定义指标用于根据该集群中所有主节点的平均 CPU 使用率（40%）调整 ElastiCache for Redis OSS 集群。该配置将缩减冷却时间指定为 10 分钟，并将扩展冷却时间指定为 5 分钟。

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