Comment procéder pour découpler une instance Amazon RDS d’un environnement AWS Elastic Beanstalk sans occasionner d’interruption, de problèmes de synchronisation de base de données ou de perte de données ?

Date de la dernière mise à jour : 23/09/2020

Je dispose d’une instance de base de données Amazon Relational Database Service (Amazon RDS) attachée à mon environnement AWS Elastic Beanstalk. Je souhaite supprimer les dépendances entre l'instance et l'environnement. Comment éviter les interruptions, les problèmes de synchronisation de base de données et les pertes d'informations ?

Brève description

Suivez les étapes de la résolution pour :

  • Réaliser un déploiement Elastic Beanstalk bleu/vert (environnement A/environnement B) afin de découpler une instance de base de données RDS à partir de l'environnement A.
  • Créer un nouvel environnement Elastic Beanstalk (l'environnement B) à l'aide des informations nécessaires afin de vous connecter à l'instance de base de données RDS.

Important : l'association d'une instance de base de données RDS à un environnement Elastic Beanstalk constitue l'alternative idéale pour les environnements de développement et de test. Toutefois, ce n'est pas recommandé avec les environnements de production, car le cycle de vie de l'instance de base de données est lié à celui de l'environnement d'application. Si vous mettez hors service l'environnement, vous perdez vos données, car l'instance de base de données RDS est supprimée par celui-ci. Pour plus d’informations, consultez Utilisation d'Elastic Beanstalk avec Amazon RDS.

Solution

Créer un instantané de base de données RDS

  1. Ouvrez la console Elastic Beanstalk.
  2. Sélectionnez l'environnement Elastic Beanstalk à découpler à partir de l'instance de base de données RDS (environnement A).
  3. Dans le volet de navigation, sélectionnez Configuration.
  4. Pour Database (Base de données), choisissez Modify (Modifier).
  5. Sélectionnez Point de terminaison.
  6. Créez un instantané de bases de données RDS pour votre instance de base de données RDS.

Protection de l'instance de base de données RDS contre les suppressions

  1. Ouvrez la console Amazon RDS.
  2. Choisissez votre base de données, puis Modify (Modifier).
  3. Dans la section Deletion protection (Protection contre la suppression), sélectionnez l'option Enable deletion protection (Activer la protection contre suppression).
  4. Sélectionnez Continuer.
  5. Dans la section Scheduling Modifications (Planification des modifications), choisissez Apply immediately (Appliquer immédiatement)..
  6. Choisissez Modifier l’instance de base de données.
  7. Actualisez la console Amazon RDS, puis vérifiez que la protection contre la suppression a été correctement activée.

Créer un nouvel environnement Elastic Beanstalk

Votre nouvel environnement Elastic Beanstalk (l'environnement B) ne doit pas contenir d'instance de base de données RDS se trouvant dans la même application Elastic Beanstalk.

Remarque : afin de pouvoir réaliser un déploiement bleu/vert (ou une modification du CNAME) ultérieurement, vérifiez que l'environnement A et l'environnement B utilisent la même version de l'application.

  1. Créez l'environnement B.
  2. Connectez l'environnement B à l'instance de base de données RDS existante de l'environnement A.
    Remarque : pour plus d'informations, consultez Lancement et connexion à une instance Amazon RDS externe dans un VPC par défaut.
  3. Vérifiez que l'environnement B peut se connecter à l'instance de base de données RDS existante et que l'application fonctionne correctement.

Réalisation d'un déploiement bleu/vert pour éviter les interruptions

  1. Ouvrez la console Elastic Beanstalk de l’environnement B.
  2. Permutez les URL d’environnement de l’ancien environnement Elastic Beanstalk et du nouvel environnement Elastic Beanstalk.
    Remarque : pour plus d'informations, consultez Déploiements bleu/vert avec Elastic Beanstalk.
  3. Vérifiez que l'URL de l’environnement B répond et fonctionne correctement lorsque vous l’ouvrez.

Important : ne résiliez pas l’environnement A tant que les modifications DNS ne sont pas propagées et que les anciens enregistrements DNS n’ont pas expiré. Les enregistrements DNS peuvent prendre jusqu'à 48 heures pour expirer. Les serveurs DNS n’effacent pas nécessairement les anciens enregistrements dans leur cache en fonction de la durée de vie (TTL) que vous définissez pour les enregistrements DNS.

Supprimer la règle du groupe de sécurité de l'ancien environnement Elastic Beanstalk

  1. Ouvrez la console Amazon RDS.
  2. Choisissez votre base de données.
  3. Choisissez la vue Connectivity & security (Connectivité et sécurité).
  4. Dans Security (Sécurité), choisissez le groupe de sécurité à modifier.
  5. Dans la section Actions, sélectionnez Modifier les règles entrantes.
  6. Supprimez la règle qui contient le groupe de sécurité de l’environnement A en tant que source.
  7. Dans la console Elastic Beanstalk, vérifiez que l’environnement B et votre application fonctionnent correctement.

Mettre hors service l’ancien environnement Elastic Beanstalk

Mettez hors service l'ancien environnement Elastic Beanstalk (environnement A).

Lorsque vous résiliez un environnement, toutes les ressources Elastic Beanstalk sont supprimées, à l'exception de l'instance de base de données RDS et de l'ancien groupe de sécurité. La protection contre la suppression empêche la suppression de l'instance de base de données RDS et de l'ancien groupe de sécurité.

Lorsque vous mettez hors service un environnement, le message d'erreur suivant figure dans le journal des événements Elastic Beanstalk :

Deleting RDS database named: aaxxxxxxxxxx failed Reason: Cannot delete protected DB Instance aaxxxxxxxxxx, please disable deletion protection and try again
Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].

Supprimer la pile

  1. Ouvrez la console AWS CloudFormation.
  2. Choisissez la pile en fonction de l'ID d’environnement de l’environnement A.
    Remarque : le statut de la pile est DELETE_FAILED.
  3. Sélectionnez Delete (Supprimer).
  4. Dans la fenêtre contextuelle Supprimer la pile répertoriant les ressources à conserver, choisissez les ressources RDS bloquées dans le statut DELETE_FAILED, puis Supprimer la pile.
  5. (Facultatif) : mettez hors service l’environnement A et supprimez l’instantané RDS que vous avez précédemment créé.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?