

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

# 定义扩缩策略
<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 于 Valkey 和 Redis 的 OSS 集群应用扩展策略](#AutoScaling-Applying-Policy)

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

通过使用预定义的指标，您可以快速为适用于 Valkey 和 Redis OSS 集群定义目标跟踪扩展策略，该策略可在 Auto Scaling 中进行目标跟踪。 ElastiCache ElastiCache 目前，在 ElastiCache Replicas Auto Scaling 中 ElastiCache 支持以下预定义指标：

`ElastiCacheReplicaEngineCPUUtilization`— 集群中所有副本的 enginecpuUctions 指标 CloudWatch 的平均值。您可以在 “必填项” ReplicationGroupId 和 “角色副本 CloudWatch ” 下 ElastiCache `ReplicationGroupId, Role`找到汇总指标值。

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

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

通过使用自定义指标，您可以定义满足您的自定义要求的目标跟踪扩展策略。您可以根据任何 ElastiCache Valkey 和 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 的 Valkey 和 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 于 Valkey 和 Redis 的 OSS 集群应用扩展策略
<a name="AutoScaling-Applying-Policy"></a>

在 Valkey 和 Redis OSS auto Scaling 中注册集群并定义扩展策略后，您可以将扩展策略应用于已注册的集群。 ElastiCache 要将扩展策略应用于 Valkey 和 Redis OSS 集群，你可以使用 AWS CLI 或 Application Auto Scaling API。 ElastiCache 

**使用 AWS CLI**

要将扩展策略应用于 Valkey 和 Redis OSS 集群，请使用带有以下参数的 [put-scaling-p](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) olicy 命令： ElastiCache 
+ --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**  
在以下示例中，您将名为的目标跟踪扩展策略应用于名为 `myscalablepolicy` a `myscalablecluster` ElastiCache uto scaling 的集群。为此，请使用在名为 `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)应用程序 Auto Scaling API 操作：
+ PolicyName — 扩展策略的名称。
+ PolicyType — 将此值设置为`TargetTrackingScaling`。
+ ResourceID – 集群的资源标识符。例如`replication-group/myscalablecluster`，对于此参数，资源类型为 ReplicationGroup ，唯一标识符是 Redi ElastiCache s OSS 集群的名称。
+ ServiceNamespace — 将此值设置为 elasticache。
+ ScalableDimension — 将此值设置为`elasticache:replication-group:Replicas`。
+ TargetTrackingScalingPolicyConfiguration — 用于集群的目标跟踪扩展策略配置。

**Example**  
在以下示例中，您将名为的目标跟踪扩展策略应用于名为 `scalablepolicy` a `myscalablecluster` ElastiCache uto scaling 的集群。您使用的策略配置基于 `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"
        }
    }
}
```