Utilisation d'Amazon Neptune sans serveur - 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.

Utilisation d'Amazon Neptune sans serveur

Vous pouvez créer un cluster de bases de données Neptune en tant que cluster sans serveur ou, dans certains cas, vous pouvez convertir un cluster de bases de données existant en cluster sans serveur. Vous pouvez également convertir les instances de base de données d'un cluster de bases de données sans serveur en instances sans serveur, et inversement. Vous ne pouvez utiliser Neptune Serverless que dans les pays Régions AWS où il est pris en charge, avec quelques autres limitations (voir). Contraintes d'Amazon Neptune sans serveur

Vous pouvez également utiliser la pile Neptune AWS CloudFormation pour créer un cluster de bases de données Neptune sans serveur.

Création d'un cluster de bases de données utilisant le mode sans serveur

Pour créer un cluster de bases de données Neptune utilisant le mode sans serveur, vous pouvez le faire en utilisant la AWS Management Console de la même manière que pour créer un cluster provisionné. La différence est que sous Taille de l'instance de base de données, vous devez définir la classe d'instances de base de données en mode sans serveur. Lorsque vous effectuez cette opération, vous devez définir la plage de capacité sans serveur du cluster.

Vous pouvez également créer un cluster de base de données sans serveur à l'aide des commandes AWS CLI with comme celle-ci (sous Windows, remplacez « \ » par « ^ ») :

aws neptune create-db-cluster \ --region (an Région AWS region that supports serverless) \ --db-cluster-identifier (ID for the new serverless DB cluster) \ --engine neptune \ --engine-version (optional: 1.2.0.1 or above) \ --serverless-v2-scaling-configuration "MinCapacity=1.0, MaxCapacity=128.0"

Vous pouvez également spécifier le paramètre serverless-v2-scaling-configuration comme suit :

--serverless-v2-scaling-configuration '{"MinCapacity":1.0, "MaxCapacity":128.0}'

Vous pouvez ensuite exécuter la commande describe-db-clusters pour l'attribut ServerlessV2ScalingConfiguration, qui devrait renvoyer les paramètres de plage de capacité que vous avez spécifiés :

"ServerlessV2ScalingConfiguration": { "MinCapacity": (the specified minimum number of NCUs), "MaxCapacity": (the specified maximum number of NCUs) }

Conversion d'un cluster de bases de données ou d'une instance de base de données existant en mode sans serveur

Si vous avez un cluster de bases de données Neptune qui utilise la version 1.2.0.1 ou supérieure du moteur, vous pouvez le convertir en cluster sans serveur. Ce processus entraîne des temps d'arrêt.

La première étape consiste à ajouter une plage de capacité au cluster existant. Vous pouvez le faire en utilisant AWS Management Console le ou en utilisant une AWS CLI commande comme celle-ci (sous Windows, remplacez « \ » par « ^ ») :

aws neptune modify-db-cluster \ --db-cluster-identifier (your DB cluster ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 2.0), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

L'étape suivante consiste à créer une instance de base de données sans serveur pour remplacer l'instance principale existante (enregistreur) dans le cluster. Encore une fois, vous pouvez effectuer cette opération et toutes les étapes suivantes en utilisant le AWS Management Console ou le AWS CLI. Dans les deux cas, spécifiez la classe d'instances de base de données comme étant sans serveur. La AWS CLI commande ressemblerait à ceci (sous Windows, remplacez « \ » par « ^ ») :

aws neptune create-db-instance \ --db-instance-identifier (an instance ID for the new writer instance) \ --db-cluster-identifier (ID of the DB cluster) \ --db-instance-class db.serverless --engine neptune

Lorsque la nouvelle instance d'enregistreur est disponible, effectuez un basculement pour en faire l'instance d'enregistreur du cluster :

aws neptune failover-db-cluster \ --db-cluster-identifier (ID of the DB cluster) \ --target-db-instance-identifier (instance ID of the new serverless instance)

Supprimez ensuite l'ancienne instance d'enregistreur :

aws neptune delete-db-instance \ --db-instance-identifier (instance ID of the old writer instance) \ --skip-final-snapshot

Enfin, faites de même pour créer une instance sans serveur qui remplacera chaque instance de lecteur provisionnée que vous souhaitez convertir en instance sans serveur, et supprimez les instances provisionnées existantes (aucun basculement n'est nécessaire pour les instances de lecteur).

Modification de la plage de capacité d'un cluster de bases de données sans serveur

Vous pouvez modifier la plage de capacité d'un cluster de bases de données Neptune sans serveur en utilisant l' AWS CLI comme suit (sous Windows, remplacez « \ » par « ^ ») :

aws neptune modify-db-cluster \ --region (an AWS region that supports serverless) \ --db-cluster-identifier (ID of the serverless DB cluster) \ --apply-immediately \ --serverless-v2-scaling-configuration MinCapacity=4.0, MaxCapacity=32

La modification de la plage de capacité modifie les valeurs par défaut de certains paramètres de configuration. Neptune peut appliquer certaines de ces nouvelles valeurs par défaut immédiatement, mais certaines modifications de paramètre dynamiques ne prennent effet qu'après un redémarrage. Le statut pending-reboot indique qu'un redémarrage est nécessaire pour appliquer certaines modifications de paramètre.

Conversion d'une instance de base de données sans serveur en instance provisionnée

Pour convertir une instance Neptune sans serveur en instance provisionnée, il vous suffit de remplacer sa classe d'instances par l'une des classes d'instances provisionnées. veuillez consulter Modification d'une instance de base de données Neptune (et application immédiate).

Surveillance de la capacité sans serveur avec Amazon CloudWatch

Vous pouvez l'utiliser CloudWatch pour surveiller la capacité et l'utilisation des instances sans serveur Neptune dans votre cluster de base de données. Deux CloudWatch mesures vous permettent de suivre la capacité sans serveur actuelle à la fois au niveau du cluster et au niveau de l'instance :

  • ServerlessDatabaseCapacity : en tant que métrique au niveau de l'instance, ServerlessDatabaseCapacity indique la capacité actuelle de l'instance, en NCU. En tant que métrique au niveau du cluster, elle représente la moyenne de toutes valeurs ServerlessDatabaseCapacity de toutes les instances de base de données du cluster.

  • NCUUtilization : cette métrique indique le pourcentage de capacité possible utilisée. Elle est calculée en utilisant la valeur ServerlessDatabaseCapacity actuelle (au niveau de l'instance ou du cluster) divisée par le paramètre de capacité maximale du cluster de bases de données.

    Si cette métrique approche les 100 % au niveau d'un cluster, ce qui signifie que la capacité du cluster est aussi élevée qu'elle peut l'être, envisagez d'augmenter le paramètre de capacité maximale.

    Si elle approche les 100 % pour une instance de lecteur alors que l'instance d'enregistreur n'est pas proche de sa capacité maximale, envisagez d'ajouter d'autres instances de lecteur pour répartir la charge de travail de lecture.

Notez que les métriques CPUUtilization et FreeableMemory ont des significations légèrement différentes pour les instances sans serveur et pour les instances provisionnées. Dans un contexte sans serveur, CPUUtilization est un pourcentage calculé comme la quantité de CPU actuellement utilisée, divisée par la quantité de CPU disponible à la capacité maximale. De même, FreeableMemory indique la quantité de mémoire libérable qui serait disponible si une instance était à sa capacité maximale.

L'exemple suivant montre comment utiliser AWS CLI le sous Linux pour récupérer les valeurs de capacité minimale, maximale et moyenne pour une instance de base de données donnée, mesurées toutes les 10 minutes pendant une heure. La commande Linux date indique les heures de début et de fin par rapport à la date et à l'heure actuelles. La fonction sort_by du paramètre --query trie les résultats par ordre chronologique en fonction du champ Timestamp :

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/Neptune" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=(instance ID) \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table