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 Neptune si vous devez créer un cluster.

À l'aide du AWS CLI, vous définissez et appliquez une politique de dimensionnement au cluster de bases de données. Vous pouvez également utiliser le AWS CLI pour modifier ou supprimer votre politique d'auto-scaling. Cette politique spécifie les paramètres d'autoscaling suivants :

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

  • ScaleOutCooldownIntervalle entre l'activité de dimensionnement par ajout de répliques et ScaleInCooldown intervalle entre l'activité de dimensionnement par suppression de répliques.

  • La CloudWatch métrique et la 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 CloudWatch métrique que vous utilisez atteint le seuil élevé que vous avez spécifié dans votre politique, si l'ScaleOutCooldownintervalle 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épliques que vous avez défini, Neptune auto-scaling crée un nouveau réplica en utilisant le même type d'instance que l'instance principale du cluster de base 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. veuillez consulter Tolérance aux pannes pour un cluster de bases de données Neptune.

L'auto-scaling de Neptune est implémenté à l'aide d'Application Auto Scaling avec une politique de dimensionnement du suivi des cibles qui utilise une métrique Neptune comme métrique prédéfinie CPUUtilization CloudWatch .

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 (US-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 à dimensionner automatiquement avec une à huit répliques supplémentaires, vous pouvez utiliser la AWS CLI register-scalable-targetcommande 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 AWS CLI register-scalable-target 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 max-capacity AWS CLI paramètre est équivalent au MaxCapacity paramètre 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 Neptune qu'en tant que CPUUtilization CloudWatch 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é. Pour ce faire, vous pouvez utiliser la AWS CLI put-scaling-policycommande, avec des paramètres tels que les 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 AWS CLI put-scaling-policycommande pour mettre à jour une politique d'auto-scaling existante.

Consultez également la section PutScalingPolitique dans le Guide de 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'auto-scaling d'un cluster de base de données Neptune, utilisez les commandes AWS CLIdelete-scaling-policy et deregister-scalable-target.