定义扩展策略 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

定义扩展策略

目标跟踪扩展策略配置是由 JSON 块表示的,其中定义了指标和目标值。您可以在文本文件中将扩展策略配置保存为 JSON 块。在调用 Amazon CLI 或 Application Auto Scaling API 时,您可以使用该文本文件。有关策略配置语法的更多信息,请参阅 Application Auto Scaling API 参考中的 TargetTrackingScalingPolicyConfiguration

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

使用预定义的指标

通过使用预定义的指标,您可以快速为 ElastiCache for Redis 集群定义与 ElastiCache for Redis 弹性伸缩中的目标跟踪搭配使用的目标跟踪扩缩策略。目前,ElastiCache for Redis 支持 Elasticache 副本弹性伸缩中的以下预定义指标:

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

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

使用自定义指标

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

以下示例说明了扩展策略的目标跟踪配置。在该配置中,一个自定义指标根据名为 my-db-cluster 的集群中所有副本的平均 CPU 使用率 50% 调整该 ElastiCache for Redis 集群。

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

使用冷却时间

您可以为 ScaleOutCooldown 指定一个值(秒)以添加横向扩展集群的冷却时间。同样,您可以为 ScaleInCooldown 添加一个值(秒)以添加横向缩减集群的冷却时间。有关 ScaleInCooldownScaleOutCooldown 的更多信息,请参阅 Application Auto Scaling API 参考中的 TargetTrackingScalingPolicyConfiguration。以下示例说明了扩展策略的目标跟踪配置。在该配置中,ElastiCacheReplicaEngineCPUUtilization 预定义指标用于根据集群中所有副本的平均 CPU 使用率 40% 调整该 ElastiCache for Redis 集群。该配置将缩减冷却时间指定为 10 分钟,并将扩展冷却时间指定为 5 分钟。

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

禁用缩减活动

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

您可以为 DisableScaleIn 指定一个布尔值,以便为集群启用或禁用横向缩减活动。有关 DisableScaleIn 的更多信息,请参阅 Application Auto Scaling API 参考中的 TargetTrackingScalingPolicyConfiguration

以下示例说明了扩展策略的目标跟踪配置。在该配置中,ElastiCacheReplicaEngineCPUUtilization 预定义指标根据集群中所有副本的平均 CPU 使用率 40% 调整该 ElastiCache for Redis 集群。该配置禁用扩展策略的缩减活动。

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

对 ElastiCache for Redis 集群应用扩展策略

在对集群注册 ElastiCache for Redis 弹性伸缩并定义扩展策略后,您可以将扩展策略应用于已注册的集群。要将扩展策略应用于 ElastiCache for Redis 集群,您可以使用 Amazon CLI 或 Application Auto Scaling API。

使用 Amazon CLI

要将扩展策略应用于 ElastiCache for Redis 集群,请使用具有以下参数的 put-scaling-policy 命令:

  • --policy-name – 扩展策略的名称。

  • --policy-type – 将此值设置为 TargetTrackingScaling

  • --resource-id – 该 ElastiCache for Redis 集群的资源标识符。对于此参数,资源类型为复制组,唯一标识符为 ElastiCache for Redis 集群的名称,例如 replication-group/myscalablecluster

  • --service-namespace – 将此值设置为 elasticache。

  • --scalable-dimension – 将此值设置为 elasticache:replication-group:Replicas

  • --target-tracking-scaling-policy-configuration – 用于 ElastiCache for Redis 集群的目标跟踪扩缩策略配置。

在以下示例中,您使用 ElastiCache for Redis 弹性伸缩对名为 myscalablecluster 的 ElastiCache for Redis 集群应用名为 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 for Redis 集群,请使用具有以下参数的 PutScalingPolicy Application Auto Scaling API 操作:

  • PolicyName – 扩展策略的名称。

  • PolicyType – 将此值设置为 TargetTrackingScaling

  • ResourceID – 该 ElastiCache for Redis 集群的资源标识符。对于此参数,资源类型为复制组,唯一标识符为 ElastiCache for Redis 集群的名称,例如 replication-group/myscalablecluster

  • ServiceNamespace – 将此值设置为 elasticache。

  • ScalableDimension – 将此值设置为 elasticache:replication-group:Replicas

  • TargetTrackingScalingPolicyConfiguration – 用于 ElastiCache for Redis 集群的目标跟踪扩缩策略配置。

在以下示例中,您使用 ElastiCache for Redis 弹性伸缩对名为 myscalablecluster 的 ElastiCache for Redis 集群应用名为 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" } } }