Définition d'une politique de mise à l'échelle - Amazon ElastiCache for Redis

Définition d'une politique de mise à l'échelle

Une configuration de politique de dimensionnement Suivi de la cible est représentée par un bloc JSON dans lequel sont définies les métriques et valeurs cibles. Vous pouvez enregistrer une configuration de politique de dimensionnement sous forme de bloc JSON dans un fichier texte. Vous utilisez ce fichier texte lors de l'appel de l'AWS CLI ou de l'API Application Auto Scaling. Pour plus d'informations sur la syntaxe de la configuration d'une politique, veuillez consulter TargetTrackingScalingPolicyConfiguration dans la Référence d'API Application Auto Scaling.

Les options suivantes sont disponibles pour définir une configuration de politique de suivi de cible et d'échelonnement :

Utilisation d'une métrique prédéfinie

L'utilisation de métriques prédéfinies vous permet de définir rapidement une politique de suivi de cible et d'échelonnement pour un cluster ElastiCache for Redis qui fonctionne avec le suivi de cible dans ElastiCache for Redis Auto Scaling.

Actuellement, ElastiCache for Redis prend en charge les métriques prédéfinies suivantes dans ElastiCache for Redis NodeGroup Auto Scaling :

  • ElastiCachePrimaryEnginecpuUtilization – Valeur moyenne de la métrique EngineCPUUtilization dans CloudWatch parmis tous les nœuds principaux du cluster ElastiCache for Redis.

  • ElastiCacheDatabaseMemoryUsageCountedForvictPourcentage – Valeur moyenne de la métrique DatabaseMemory dans CloudWatch parmis tous les nœuds principaux du cluster ElastiCache for Redis.

Pour plus d'informations sur les métriques EngineCPUUtilization et DatabaseMemory, consultez Surveillance de l'utilisation à l'aide de métriques CloudWatch. Pour utiliser une métrique prédéfinie dans votre politique de dimensionnement, créez une configuration de suivi de la cible pour votre politique de dimensionnement. Cette configuration doit inclure PredefinedMetricSpecification pour la métrique prédéfinie et TargetValue pour la valeur cible de cette métrique.

L'exemple suivant décrit une configuration de politique classique pour le suivi de cible et d'échelonnement d'un cluster ElastiCache fo Redis. Dans cette configuration, la métrique prédéfinie ElastiCachePrimaryEngineCPUUtilization est utilisée pour ajuster un cluster ElastiCache for Redis en fonction d'une utilisation moyenne du CPU de 40 % parmis tous les nœuds primaires de ce cluster.

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

Utilisation d'une métrique personnalisée

L'utilisation de métriques personnalisées vous permet de définir une politique de dimensionnement Suivi de la cible répondant à vos exigences personnelles. Vous pouvez définir une métrique personnalisée en fonction d'une métrique Elasticache qui évolue proportionnellement à la mise à l'échelle. Toutes les métriques Elasticache ne fonctionnent pas pour le suivi de cible. La métrique doit être une métrique d'utilisation valide et décrire le degré d'occupation d'une instance. La valeur de la métrique doit augmenter ou diminuer proportionnellement au nombre de partitions dans le cluster. Cette augmentation ou diminution proportionnelle est nécessaire pour que les données de la métrique puissent être utilisées afin d'augmenter ou de réduire proportionnellement le nombre de partitions.

L'exemple suivant décrit une configuration de suivi de la cible pour une politique de dimensionnement. Dans cette configuration, une métrique personnalisée ajuste un cluster ElastiCache for Redis en fonction d'une utilisation moyenne du CPU de 50 % sur toutes les partitions d'un cluster nommé 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" } }

Utilisation des temps de stabilisation

Vous pouvez spécifier une valeur, en secondes, pour que ScaleOutCooldown ajoute un temps de stabilisation à la montée en puissance de votre cluster. De la même manière, vous pouvez ajouter une valeur, en secondes, pour que ScaleInCooldown ajoute un temps de stabilisation pour la diminution de charge de votre cluster. Pour plus d'informations, veuillez consulter TargetTrackingScalingPolicyConfiguration dans la Référence d'API Application Auto Scaling.

L'exemple suivant décrit une configuration de suivi de la cible pour une politique de dimensionnement. Dans cette configuration, la métrique prédéfinie ElastiCachePrimaryEngineCPUUtilization est utilisée pour ajuster un cluster ElastiCache for Redis en fonction d'une utilisation moyenne du CPU de 40 % sur tous les nœuds primaires de ce cluster. La configuration indique un temps de stabilisation de diminution en charge de 10 minutes et un temps de stabilisation de montée en charge de 5 minutes.

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

Désactivation de l'activité de diminution en charge

Vous pouvez empêcher la configuration de politique de suivi de cible et d'échelonnement de diminuer la taille de votre cluster ElastiCache for Redis en désactivant l'activité de diminution en charge. La désactivation de l'activité de diminution en charge empêche la politique de mise à l'échelle de supprimer des partitions, tout en l'autorisant encore à les créer si nécessaire.

Vous pouvez spécifier une valeur booléenne pour que DisableScaleIn active ou désactive l'activité de diminution en charge de votre cluster. Pour plus d'informations, veuillez consulter TargetTrackingScalingPolicyConfiguration dans la Référence d'API Application Auto Scaling.

L'exemple suivant décrit une configuration de suivi de la cible pour une politique de dimensionnement. Dans cette configuration, la métrique prédéfinie ElastiCachePrimaryEngineCPUUtilization ajuste un cluster ElastiCache for Redis en fonction d'une utilisation moyenne du CPU de 40 % sur tous les nœuds primaires de ce cluster. La configuration désactive l'activité de diminution en charge pour la politique de dimensionnement.

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

Application d'une politique de mise à l'échelle

Après avoir enregistré votre cluster pour la scalabilité automatique ElastiCache for Redis et défini une politique de mise à l'échelle, appliquez cette dernière au cluster enregistré. Pour appliquer une politique de mise à l'échelle à un cluster ElastiCache for Redis, vous pouvez utiliser la AWS CLI ou l'API Application Auto Scaling.

Application d'une politique de mise à l'échelle à l'aide de la AWS CLI

Pour appliquer une politique de mise à l'échelle à votre cluster ElastiCache for Redis, utilisez la commande put-scaling-policy avec les paramètres suivants :

  • --policy-name – Nom de la politique de mise à l'échelle.

  • --policy-type – Définissez cette valeur à TargetTrackingScaling.

  • --resource-id – Identificateur de ressource pour ElastiCache for Redis. Pour ce paramètre, le type de ressource est ReplicationGroup et l'identifiant unique est le nom du cluster ElastiCache for Redis, par exemple replication-group/myscalablecluster.

  • --service-namespace – Définissez cette valeur à elasticache.

  • --scalable-dimension – Définissez cette valeur à elasticache:replication-group:NodeGroups.

  • --target-tracking-scaling-policy-configuration – Configuration de politique de suivi de cible et d'échelonnement à utiliser pour le cluster ElastiCache for Redis.

Dans l'exemple suivant, vous appliquez une politique de suivi de cible et d'échelonnement nommée myscalablepolicy à un cluster ElastiCache for Redis nommé myscalablecluster avec scalabilité automatique ElastiCache for Redis. Pour ce faire, vous utilisez une configuration de politique enregistrée dans un fichier nommé config.json.

Pour Linux, macOS ou 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

Pour 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

Application d'une politique de mise à l'échelle à l'aide de l'API

Pour appliquer une politique de mise à l'échelle à votre cluster ElastiCache for Redis, utilisez la commande PutScalingPolicy de la AWS CLI avec les paramètres suivants :

  • --policy-name – Nom de la politique de mise à l'échelle.

  • --resource-id – Identificateur de ressource pour ElastiCache for Redis. Pour ce paramètre, le type de ressource est ReplicationGroup et l'identifiant unique est le nom du cluster ElastiCache for Redis, par exemple replication-group/myscalablecluster.

  • --service-namespace – Définissez cette valeur à elasticache.

  • --scalable-dimension – Définissez cette valeur à elasticache:replication-group:NodeGroups.

  • --target-tracking-scaling-policy-configuration – Configuration de politique de suivi de cible et d'échelonnement à utiliser pour le cluster ElastiCache for Redis.

Dans l'exemple suivant, vous appliquez une politique de suivi de cible et d'échelonnement nommée myscalablepolicy à un cluster ElastiCache for Redis nommé myscalablecluster avec scalabilité automatique ElastiCache for Redis. Vous utilisez une configuration de politique basée sur la métrique prédéfinie 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" } } }