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

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

定义扩缩策略

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

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

使用预定义的指标

通过使用预定义的指标,您可以为适用于 Redis 的集群快速定义目标跟踪扩展策略,该策略与 Redis Auto Scaling 中的 ElastiCache 目标跟踪配合使用。 ElastiCache

目前, ElastiCache 适用于 Redis 的 Redis NodeGroup Auto Scalin ElastiCache g 支持以下预定义指标:

  • ElastiCachePrimaryEngineCPU利用率 — 适用于 Redis 集群中 CloudWatch所有主节点的EngineCPUUtilization指标 ElastiCache 的平均值。

  • ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage— for Redis 集群中 CloudWatch 所有主节点的DatabaseMemoryUsageCountedForEvictPercentage指标 ElastiCache 的平均值。

  • ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage— for Redis 集群中 CloudWatch 所有主节点的ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage指标 ElastiCache 的平均值。

有关 EngineCPUUtilizationDatabaseMemoryUsageCountedForEvictPercentageDatabaseCapacityUsageCountedForEvictPercentage 指标的更多信息,请参阅使用 CloudWatch 指标监控使用情况。要在扩展策略中使用预定义的指标,您需要为扩展策略创建一个目标跟踪配置。此配置必须包括PredefinedMetricSpecification用于预定义指标的,以及 TargetValue 用于该指标的目标值的。

以下示例介绍了 for Redis 集群的目标跟踪扩展 ElastiCache 的典型策略配置。在此配置中,ElastiCachePrimaryEngineCPUUtilization预定义的指标用于根据集群中所有主节点的平均 CPU 利用率为 40% 来调整 Redis 集群的。 ElastiCache

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

使用自定义指标

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

以下示例说明了扩缩策略的目标跟踪配置。在此配置中,自定义指标会根据名 ElastiCache 为的集群中所有分片的平均 CPU 利用率为 50% 来调整 Redis 集群。my-db-cluster

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

使用冷却时间

您可以为 ScaleOutCooldown 指定一个值(秒)以添加横向扩展集群的冷却时间。同样,您可以为 ScaleInCooldown 添加一个值(秒)以添加横向缩减集群的冷却时间。有关更多信息,请参阅《Applicati TargetTrackingScalingPolicyConfigurationon Auto Scaling API 参考》中的。

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

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

禁用横向缩减活动

您可以通过禁用缩容活动来阻止目标跟踪扩展策略配置在 for Redis 集群中扩展。 ElastiCache 禁用横向缩减活动将禁止扩展策略删除分区,同时仍允许扩展策略根据需要创建分区。

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

以下示例说明了扩缩策略的目标跟踪配置。在此配置中,ElastiCachePrimaryEngineCPUUtilization预定义的指标会根据该集群中所有主节点的平均 CPU 利用率为 40% 来调整 Redis 集群。 ElastiCache 该配置禁用扩展策略的缩减活动。

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

应用扩缩策略

在 Redis a ElastiCache uto Scaling 中注册集群并定义扩展策略后,您可以将扩展策略应用于已注册的集群。要将扩展策略应用于 Redis ElastiCache 的集群,您可以使用 Amazon CLI 或 Application Auto Scaling API。

使用应用扩展策略 Amazon CLI

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

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

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

  • --resource-id — Redis 的资源标识符。 ElastiCache 例如replication-group/myscalablecluster,对于此参数,资源类型为ReplicationGroup,唯一标识符是 Redi ElastiCache s 集群的名称。

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

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

  • --target-tracking-scaling-policy-配置 — 用于 Redis 集群的目标跟踪扩展策略配置 ElastiCache 。

在以下示例中,您将名 ElastiCache 为的目标跟踪扩展策略应用于名为 myscalablepolicy for Redis 自动缩放的 R ElastiCache ed myscalablecluster is 集群。为此,请使用在名为 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:NodeGroups \ --target-tracking-scaling-policy-configuration file://config.json

对于 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:NodeGroups ^ --target-tracking-scaling-policy-configuration file://config.json

使用 API 应用扩展策略

要将扩展策略应用于您的 f ElastiCache or Redis 集群,请使用带有以下参数的PutScalingPolicy Amazon CLI 命令:

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

  • --resource-id — Redis 的资源标识符。 ElastiCache 例如replication-group/myscalablecluster,对于此参数,资源类型为ReplicationGroup,唯一标识符是 Redi ElastiCache s 集群的名称。

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

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

  • --target-tracking-scaling-policy-配置 — 用于 Redis 集群的目标跟踪扩展策略配置 ElastiCache 。

在以下示例中,您将名 ElastiCache 为的目标跟踪扩展策略应用于名为 myscalablepolicy for Redis 自动缩放的 R ElastiCache ed myscalablecluster is 集群。您使用的策略配置基于 ElastiCachePrimaryEngineCPUUtilization 预定义指标。

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:NodeGroups", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization" } } }