Autoscaling du nombre de réplicas dans un cluster de bases de données Amazon Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Autoscaling du nombre de réplicas dans un cluster de bases de données Amazon Neptune

Vous pouvez utiliser l'autoscaling Neptune pour ajuster automatiquement le nombre de réplicas Neptune dans un cluster de bases de données afin de répondre à vos exigences en matière de connectivité et de charge de travail. L'autoscaling permet au cluster de bases de données Neptune de gérer l'augmentation de la charge de travail, puis, lorsque la charge de travail diminue, il supprime les réplicas inutiles afin que vous ne payiez pas la capacité inutilisée.

Vous ne pouvez utiliser l'auto-scaling qu'avec un cluster de bases de données Neptune qui possède déjà une instance d'enregistreur principale et au moins une instance de réplica en lecture (voir Clusters de bases de données et instances de base de données Amazon Neptune). En outre, toutes les instances de réplica en lecture du cluster doivent être dans un état disponible. Si un réplica en lecture présente un état autre que disponible, l'autoscaling Neptune ne fait rien tant que tous les réplicas en lecture du cluster ne sont pas disponibles.

Consultez Créer un cluster de bases de données si vous devez créer un cluster.

Avec l'AWS CLI, vous définissez et appliquez une politique de mise à l'échelle à un cluster de bases de données. Vous pouvez également utiliser l'AWS CLI pour modifier ou supprimer votre politique d'autoscaling. Cette politique spécifie les paramètres d'autoscaling suivants :

  • Nombre minimal et maximal de réplicas dans le cluster.

  • Intervalle ScaleOutCooldown entre les ajouts de réplicas et intervalle ScaleInCooldown entre les suppressions de réplicas.

  • Métrique CloudWatch et valeur de déclenchement de la métrique pour la mise à l'échelle à la hausse ou à la baisse.

La fréquence des actions d'autoscaling Neptune est réduite de plusieurs manières :

  • Au départ, pour que l'autoscaling puisse ajouter ou supprimer un lecteur, le seuil élevé de l'alarme CPUUtilization doit être activé pendant au moins trois minutes ou le seuil bas de l'alarme doit être activé pendant au moins 15 minutes.

  • Après ce premier ajout ou cette première suppression, la fréquence des actions d'autoscaling Neptune suivantes est limitée par les paramètres ScaleOutCooldown et ScaleInCooldown de la politique d'autoscaling.

Si la métrique CloudWatch que vous utilisez atteint le seuil élevé que vous avez spécifié dans votre politique, si l'intervalle ScaleOutCooldown s'est écoulé depuis la dernière action d'auto-scaling et si votre cluster de bases de données ne possède pas encore le nombre maximum de réplicas que vous avez défini, l'auto-scaling Neptune crée un réplica en utilisant le même type d'instance que l'instance principale du cluster de bases de données.

De même, si la métrique atteint le seuil bas que vous avez spécifié, si l'intervalle ScaleInCooldown s'est écoulé depuis la dernière action d'auto-scaling et si votre cluster de bases de données possède un nombre de réplicas supérieur au nombre minimum que vous avez spécifié, l'auto-scaling Neptune supprime l'un des réplicas.

Note

L'autoscaling Neptune supprime uniquement les réplicas qu'il a créés. Les réplicas préexistants ne sont pas supprimés.

À l'aide du paramètre de cluster de bases de données neptune_autoscaling_config, vous pouvez également spécifier le type d'instance des réplicas en lecture créés par l'auto-scaling Neptune, les fenêtres de maintenance de ces réplicas et les balises à associer à chacun d'eux. Vous fournissez ces paramètres de configuration dans une chaîne JSON en tant que valeur du paramètre neptune_autoscaling_config, comme suit :

"{ \"tags\": [ { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" }, { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" }, ], \"maintenanceWindow\" : \"wed:12:03-wed:12:33\", \"dbInstanceClass\" : \"db.r5.xlarge\" }"

Notez que les guillemets de la chaîne JSON doivent tous être précédés d'une barre oblique inverse (\). Tous les espaces blancs dans la chaîne sont facultatifs, comme d'habitude.

Les trois paramètres de configuration non spécifiés dans le paramètre neptune_autoscaling_config sont copiés à partir de la configuration de l'instance d'enregistreur principale du cluster de bases de données.

Lorsque l'autoscaling ajoute une nouvelle instance de réplica en lecture, il insère le préfixe autoscaled-reader dans l'ID de l'instance de base de données (par exemple, autoscaled-reader-7r7t7z3lbd-20210828). Il ajoute également une balise à chaque réplica en lecture qu'il crée avec la clé autoscaled-reader et la valeur TRUE. Vous pouvez voir cette balise dans l'onglet Balises de la page de détails de l'instance de base de données dans la AWS Management Console.

"key" : "autoscaled-reader", "value" : "TRUE"

Le niveau de promotion de toutes les instances de réplica en lecture créées par l'auto-scaling est le niveau de priorité le plus bas, qui est 15 par défaut. Cela signifie que pendant un basculement, un réplica ayant une priorité supérieure (par exemple, un réplica créé manuellement) serait promu en premier. Consultez Tolérance aux pannes pour un cluster de bases de données Neptune.

L'autoscaling Neptune est implémenté à l'aide d'Application Auto Scaling avec une politique de mise à l'échelle du suivi de la cible qui utilise une métrique Neptune CloudWatch CPUUtilization comme métrique prédéfinie.

Utilisation de l'auto-scaling dans un cluster de bases de données Neptune sans serveur

Neptune sans serveur répond beaucoup plus rapidement que l'autoscaling Neptune lorsque la demande dépasse la capacité d'une instance, et augmente la capacité de l'instance au lieu d'en ajouter une autre. Là où l'autoscaling est conçu pour répondre à des augmentations ou à des baisses relativement stables de la charge de travail, le système sans serveur excelle dans la gestion des pics et des fluctuations rapides de la demande.

En comprenant leurs points forts, vous pouvez combiner l'autoscaling et le mode sans serveur pour créer une infrastructure flexible capable de gérer efficacement l'évolution de votre charge de travail et de répondre à la demande tout en minimisant les coûts.

Pour permettre à l'autoscaling de fonctionner efficacement avec le mode sans serveur, il est important de configurer le paramètre maxNCU de votre cluster sans serveur pour qu'il soit suffisamment élevé afin de faire face aux pics et aux brèves variations de la demande. Dans le cas contraire, les modifications transitoires ne déclencheront pas la mise à l'échelle sans serveur, ce qui pourra entraîner l'activation de nombreuses instances supplémentaires inutiles. Si la valeur maxNCU est suffisamment élevée, la mise à l'échelle sans serveur pourra gérer ces modifications plus rapidement et à moindre coût.

Comment activer l'autoscaling pour Amazon Neptune

Le dimensionnement automatique ne peut être activé que pour un cluster de bases de données Neptune à l'aide de l'AWS CLI. Vous ne pouvez pas activer l'autoscaling à l'aide de la AWS Management Console.

De plus, l'autoscaling n'est pas pris en charge dans les régions Amazon suivantes :

  • Afrique (Le Cap) : af-south-1

  • Moyen-Orient (EAU) : me-central-1

  • AWS GovCloud (USA-Est) : us-gov-east-1

  • AWS GovCloud (USA-Ouest) : us-gov-west-1

L'activation de l'autoscaling pour un cluster de bases de données Neptune implique trois étapes :

1. Enregistrement de votre cluster de bases de données avec Application Auto Scaling

La première étape pour activer l'autoscaling pour un cluster de bases de données Neptune consiste à enregistrer le cluster auprès d'Application Auto Scaling, à l'aide de l'AWS CLI ou de l'un des kits SDK Application Auto Scaling. Le cluster doit déjà avoir une instance principale et au moins une instance de réplica en lecture :

Par exemple, pour enregistrer un cluster à mettre à l'échelle automatiquement avec un à huit réplicas supplémentaires, vous pouvez utiliser la commande AWS CLI register-scalable-target suivante :

aws application-autoscaling register-scalable-target \ --service-namespace neptune \ --resource-id cluster:(your DB cluster name) \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --min-capacity 1 \ --max-capacity 8

Cela est équivalent à l'utilisation de l'opération RegisterScalableTarget de l'API Application Auto Scaling.

La commande register-scalable-target d'AWS CLI utilise les paramètres suivants :

  • service-namespace : défini sur neptune.

    Ce paramètre est équivalent au paramètre ServiceNamespace de l'API Application Auto Scaling.

  • resource-id : définissez ce paramètre sur l'identifiant de ressource de votre cluster de bases de données Neptune. Le type de ressource est cluster, suivi du signe deux-points (:), puis du nom de votre cluster de bases de données.

    Ce paramètre est équivalent au paramètre ResourceID de l'API Application Auto Scaling.

  • scalable-dimension : la dimension pouvant être mise à l'échelle dans ce cas est le nombre d'instances de réplica dans le cluster de bases de données. Vous devez donc définir ce paramètre sur neptune:cluster:ReadReplicaCount.

    Ce paramètre est équivalent au paramètre ScalableDimension de l'API Application Auto Scaling.

  • min-capacity : nombre minimal d'instances de réplica de base de données de lecteur devant être gérées par Application Auto Scaling. Cette valeur doit être comprise entre 0 et 15 et doit être inférieure ou égale à la valeur spécifiée pour le nombre maximal de réplicas Neptune indiqué dans max-capacity. Il doit y avoir au moins un lecteur dans le cluster de bases de données pour que l'autoscaling fonctionne.

    Ce paramètre est équivalent au paramètre MinCapacity de l'API Application Auto Scaling.

  • max-capacity : nombre maximal d'instances de réplica de base de données de lecteur dans le cluster de bases de données, y compris les instances préexistantes et les nouvelles instances gérées par Application Auto Scaling. Cette valeur doit être comprise entre 0 et 15 et doit être supérieure ou égale à la valeur spécifiée pour le nombre minimal de réplicas Neptune indiqué dans min-capacity.

    Le paramètre max-capacity d'AWS CLI est équivalent au paramètre MaxCapacity de l'API Application Auto Scaling.

Lorsque vous enregistrez votre cluster de bases de données, Application Auto Scaling crée un rôle AWSServiceRoleForApplicationAutoScaling_NeptuneCluster lié à un service. Pour plus d'informations, consultez Rôles liés aux services pour Application Auto Scaling dans le Guide de l'utilisateur Application Auto Scaling.

2. Définition d'une politique d'autoscaling à utiliser avec votre cluster de bases de données

Une politique de mise à l'échelle de suivi de la cible est définie comme un objet texte JSON qui peut également être enregistré dans un fichier texte. Pour Neptune, cette politique ne peut actuellement utiliser la métrique CloudWatch Neptune CPUUtilization qu'en tant que métrique prédéfinie nommée NeptuneReaderAverageCPUUtilization.

L'exemple suivant illustre une configuration avec suivi de cible d'une politique de mise à l'échelle pour Neptune :

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" }, "TargetValue": 60.0, "ScaleOutCooldown" : 600, "ScaleInCooldown" : 600 }

L'élément TargetValue contient le pourcentage d'utilisation de CPU au-dessus duquel l'autoscaling monte en puissance (en ajoutant des réplicas) et en dessous duquel il procède à une mise à l'échelle horizontale (en supprimant des réplicas). Dans ce cas, le pourcentage cible qui déclenche la mise à l'échelle est 60.0 %.

L'élément ScaleInCooldown spécifie la durée, en secondes, devant s'écouler entre la fin d'une activité de mise à l'échelle horizontale et le début d'une autre. La durée par défaut est 300 secondes. Ici, la valeur 600 indique qu'au moins dix minutes doivent s'écouler entre la fin de la suppression d'un réplica et le début d'un autre.

L'élément ScaleOutCooldown spécifie la durée, en secondes, devant s'écouler entre la fin d'une activité de mise à l'échelle verticale et le début d'une autre. La durée par défaut est 300 secondes. Ici, la valeur 600 indique qu'au moins dix minutes doivent s'écouler entre la fin de l'ajout d'un réplica et le début d'un autre.

L'élément DisableScaleIn est un booléen qui, s'il est présent et défini sur true, dèsactive complètement la mise à l'échelle horizontale, ce qui signifie que l'autoscaling peut ajouter des réplicas, mais n'en supprimera jamais aucun. Par défaut, la mise à l'échelle horizontale est activée, et DisableScaleIn est défini sur false.

Après avoir enregistré votre cluster de bases de données Neptune auprès d'Application Auto Scaling et après avoir défini une politique de mise à l'échelle, appliquez cette dernière au cluster de bases de données Neptune enregistré. Vous pouvez utiliser la commande AWS CLI de l'put-scaling-policy, avec les paramètres suivants :

aws application-autoscaling put-scaling-policy \ --policy-name (name of the scaling policy) \ --policy-type TargetTrackingScaling \ --resource-id cluster:(name of your Neptune DB cluster) \ --service-namespace neptune \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)

Lorsque vous avez appliqué la politique d'autoscaling, l'autoscaling est activé sur votre cluster de bases de données.

Vous pouvez également utiliser la commande put-scaling-policy d'AWS CLI pour mettre à jour une politique d'autoscaling existante.

Consultez également PutScalingPolicy dans la référence de l'API Application Auto Scaling.

Suppression de l'autoscaling d'un cluster de bases de données Neptune

Pour supprimer l'autoscaling d'un cluster de bases de données Neptune, utilisez les commandes delete-scaling-policy et deregister-scalable-target d'AWS CLI.