Migrer un cluster Amazon Neptune vers Amazon Neptune Serverless avec CloudFormation
On ne présente plus Amazon Neptune, le service de base de données orientée graphe proposé par AWS. Nous sommes nombreux à l’utiliser depuis plusieurs années maintenant. Depuis maintenant un an, une nouveauté très intéressante a fait son apparition il y a maintenant tout juste un an : Amazon Neptune Serverless.
Amazon Neptune Serverless permet une gestion automatique de la puissance allouée à notre cluster grâce à une mise à l’échelle rapide en fonction des évolutions de la charge. Cette solution est tout indiquée lorsque le trafic est condensé sur une courte période avec de fortes montées en charges.
La version serverless est désormais largement éprouvée et ce document a été rédigé afin d’aider les personnes disposant d’une configuration basée sur des instances provisionnées utilisant CloudFormation à migrer vers la version serverless d’Amazon Neptune.
Vue d’ensemble des opérations de migration
La migration doit être réalisée en trois étapes :
-
Mise à niveau du moteur d’Amazon Neptune
-
Conversion d’un cluster existant en serverless
-
Modification des instances de base de données provisionnée en instances serverless
Note à propos de la mise à jour de Neptune : Lorsqu’une nouvelle version majeure ou mineure du moteur Amazon Neptune est publiée, testez toujours d’abord vos applications Neptune sur cette version avant de procéder à la mise à niveau. Même une mise à niveau mineure peut introduire de nouvelles fonctionnalités ou de nouveaux comportements susceptibles d’affecter votre code. Vous trouverez des informations complémentaires sur cette étape dans la
Mise à niveau du moteur d’Amazon Neptune
Pour pouvoir utiliser Amazon Neptune Serverless, votre cluster doit être au minimum dans une version 1.2.0.1 du moteur de base de données.
Vous pouvez effectuer une mise à niveau de version mineure d’un cluster de base de données Amazon Neptune en utilisant AWS Management Console comme suit :
-
Connectez-vous à la console AWS de gestion et ouvrez la console Amazon Neptune à l’adresse
Title https://console.aws.amazon.com/neptune/home . -
Dans le volet de navigation, choisissez Bases de données, puis sélectionnez le cluster de base de données que vous souhaitez modifier.
-
Choisissez Modifier. La page Modify DB cluster (Modifier le cluster de base de données) s’affiche.
-
Dans le champ Version du moteur de base de données, sélectionnez la nouvelle version.
-
Choisissez Continuer et vérifiez le récapitulatif des modifications.
-
Pour appliquer les modifications immédiatement, choisissez Appliquer immédiatement.
-
Sur la page de confirmation, examinez vos modifications. Si elles sont correctes, choisissez Modifier le cluster pour enregistrer vos modifications.
Pour mettre à niveau votre cluster avec AWS CloudFormation, plusieurs valeurs doivent être modifiées :
-
Le DBClusterParameterGroupName du cluster
-
Le DBInstanceParameterGroupName du cluster
-
Le DBParameterGroupName de chaque instance
Pour ces trois modifications, il faut utiliser la valeur “default.neptune1.2” ou associer un objet dont la “family” est “neptune1.2”.
Pour le cluster :
Pour les instances :
Note : La modification de la propriété “family” de ces objets, entraine un remplacement de l’objet. Si vous avez des objets personnalisés il faudra également modifier leur nom.
Conversion d’un cluster existant en serverless
Pour convertir le cluster en mode serverless et qu’il puisse contenir des instances serverless, il faut configurer les capacités minimum et maximum de NCU. Ces capacités seront appliquées à l’ensemble des instances serverless du cluster et doivent être entre 1 et 128 NCU.
Note : 1 NCU correspond à 2 GB de mémoire. Même si d’un point de vue CPU vous avez un nombre de NCU suffisant, soyez attentif à ce que la mémoire ne soit pas à un niveau trop faible par rapport à vos besoins. Vous trouverez des informations complémentaires sur la configuration et des recommandations détaillées dans la
-
Connectez-vous à la console AWS de gestion et ouvrez la console Amazon Neptune à l’adresse
Title https://console.aws.amazon.com/neptune/home . -
Dans le volet de navigation, choisissez Bases de données, puis sélectionnez le cluster de base de données que vous souhaitez modifier.
-
Choisissez Modifier. La page Modify DB cluster (Modifier le cluster de base de données) s’affiche.
-
Dans le champ Paramètres de capacité changez les capacités minimums et maximum
-
Choisissez Continuer et vérifiez le récapitulatif des modifications.
-
Pour appliquer les modifications immédiatement, choisissez Appliquer immédiatement.
-
Sur la page de confirmation, examinez vos modifications. Si elles sont correctes, choisissez Modifier le cluster pour enregistrer vos modifications.
Avec CloudFormation, il faut ajouter une propriété au cluster en suivant les mêmes règles :
NeptuneDBCluster:
DeletionPolicy: "Retain"
UpdateReplacePolicy: "Retain"
Type: AWS::Neptune::DBCluster
Properties:
DeletionProtection: true
ServerlessScalingConfiguration:
MinCapacity: 1.0
MaxCapacity: 128.0
Modification des instances de base de données provisionnées en instances serverless
Une fois la configuration du cluster terminée, il est possible de modifier les différentes instances que l’on souhaite transformer en serverless.
Note : L’ensemble de ces déploiements entraine une modification des instances ou du cluster et peuvent occasionner des coupures d’accès à l’une ou à l’ensemble des instances du cluster. Procédez par étape si vous avez des contraintes de disponibilité.
Pour modifier une instance de base de données provisionnée en instance sans serveur à l’aide de la console :
-
Connectez-vous à la console AWS de gestion et ouvrez la console Amazon Neptune à l’adresse
Title https://console.aws.amazon.com/neptune/home . -
Accédez à l’instance de bases de données existante que vous souhaitez modifier.
-
Sélectionnez le bouton Modify (Modifier).
-
Sous Type de moteur, choisissez Serverless.
-
Vous avez désormais la possibilité de spécifier une plage de capacité. Notez que si vous définissez une nouvelle plage de capacité ici, elle est ensuite appliquée à chaque instance Serverless de votre cluster de bases de données.
-
Apportez les autres modifications souhaitées et sélectionnez Continuer au bas de la page.
-
Passez en revue les modifications et choisissez si elles doivent être effectuées au cours de la prochaine fenêtre de maintenance planifiée ou immédiatement.
-
Sélectionnez Modifier l’instance de base de données.
Avec CloudFormation, il est possible de modifier les différents types d’instance en “db.serverless”.
Conclusion
Le passage à Amazon Neptune Serverless est une opération aisée qui se limite à des modifications de configuration de la base de données. Bien maitrisée, cette intervention ne présente pas de risque particulier.
Cette opération est réversible et il est possible de rebasculer sur des instances provisionnées si vous en avez le besoin. Pour ce faire, il vous suffit de modifier le type d’instance “DBInstanceClass” dans votre fichier CloudFormation par le type d’instance souhaitée.