Amazon RDS
Introduction
Amazon RDS (Relational Database Service) est le service cloud de bases de données relationnelles. Elles sont devenues incontournables de nos jours et, par conséquent, on ne peut pas imaginer une infrastructure complète sans celles-ci. Ce service supporte actuellement cinq solutions de bases de données relationnelles : Oracle, MySQL, Microsoft SQL Server, PostgresSQL et MariaDB. En plus de ces marques leaders du marché, Amazon propose également Aurora, sa propre base de données propriétaire. Elle ne paye pas de mine malgré son équivalence, du point de vue fonctionnel, à une base de données MySQL ou MariaDB, et pourtant ses performances sont cinq fois supérieures car spécialement conçue pour le cloud et, en particulier, pour AWS.
Les instances RDS
Pour commencer notre voyage dans le monde relationnel proposé par AWS, voyons les différentes catégories d’instances RDS disponibles :
-
Instances micro (db.t1.micro) dimensionnées avec 1 CPU et 600 Mo de mémoire RAM. Ce type d’instance RDS est exactement ce qu’il nous faut pour investiguer les fonctionnalités et se faire la main. Il existe une variante améliorée appelée db.m1.small qui est dimensionnée toujours avec un seul CPU mais avec 1,7 Go côté mémoire RAM.
-
Instances standard (db.m3) dimensionnées avec 8 CPU et 32 Go de mémoire RAM. Ce type d’instance est plus adapté à être utilisé au quotidien en tant qu’infrastructure de production.
-
Instances optimisées (db.r3) dimensionnées avec 32 CPU et 240 Go de mémoire RAM. Ces instances sont ce qu’il vous faut si vous avez des besoins de traitement de hautes performances.
-
Instances à capacité extensible (db.t2) dimensionnées avec 2 CPU et 8 Go de mémoire RAM. La particularité de ce type d’instance est de fournir des performances de bas niveau, mais avec la possibilité d’élever, si nécessaire, le niveau d’utilisation des processeurs. Cette solution est intéressante pour les architectures de production avec des exigences relativement modestes...
Réplicas et déploiements multizones
Les données sont le nerf de la guerre, je ne vous apprends rien. Un des défis les plus exigeants lorsqu’il s’agit des bases de données est d’assurer leur haute disponibilité à tout moment, 7j sur 7 et 24h sur 24. Ceci est d’autant plus difficile que les bases de données sont des environnements de traitements très complexes où, pour que tout aille bien, on doit se confronter continuellement à toutes les subtilités de configuration et optimisation. Si c’est votre cas, alors j’ai une très bonne nouvelle à vous annoncer : avec Amazon RDS tout cela devient d’une simplicité ahurissante et toute la complexité évoquée se réduit à un clic sur un bouton.
Comment cela fonctionne-t-il ? Eh bien, c’est simple : RDS crée des bases de données primaires dont le contenu est basculé sur d’autres bases de données, appelées des réplicas de réserve, se trouvant dans d’autres zones de disponibilité dans la même région. Ce type de déploiement porte le nom de déploiement multizone et, aussi compliqué que cela puisse paraître, avec RDS c’est une simple formalité.
Déploiement multizone avec RDS
La figure ci-dessus montre schématiquement...
Démarrer avec Amazon RDS
Dans ce chapitre nous allons créer une base de données MySQL que l’on va déployer avec la console RDS. Nous avons choisi MySQL pour garder les choses simples et parce que c’est une des bases de données les plus utilisées, mais nous aurions pu tout aussi bien choisir Oracle, MariaDB, PostgreSQL ou Microsoft SQL Server.
Une base de données MySQL distribuée
Dans l’un des chapitres précédents, nous avions déjà configuré un groupe d’Auto Scaling avec les distributeurs de charges comme illustré dans le schéma ci-dessus. Nous aurons également besoin de créer un sous-réseau privé séparé dans chaque zone de disponibilité pour héberger nos bases de données. Ces deux sous-réseaux sont nommés EU-WEST-TEST-DB-01 et EU-WEST-TEST-DB-02.
Un autre point extrêmement important est la communication entre les sous-réseaux publics et les sous-réseaux privés utilisant une combinaison d’ACL ainsi que des groupes de sécurité, comme expliqué précédemment, dédiés aux cloud privés avec VPC. Mais si vous n’avez pas suivi dans l’ordre les chapitres, ce n’est pas grave, vous pouvez toujours faire l’exercice suivant en utilisant un sous-réseau VPC autonome.
Avec nos sous-réseaux en place, la première chose à faire est de définir les paramètres nécessaires pour les bases de données, à savoir leurs noms, la version du moteur SQL, les détails de sauvegarde et restauration, etc. Aussi, comme annoncé, nous allons mettre en place un déploiement multizone. Notez quand même que ce type de déploiement n’est pas inclus dans l’offre gratuite AWS et, par conséquent, vous serez facturé. Pour en connaître le montant, allez sur https://aws.amazon.com/rds/pricing.
Une fois ces détails bien réfléchis, nous passerons au déploiement.
1. Créer des bases de données
Dans un premier temps, nous utiliserons la console AWS pour créer nos bases de données primaires et réplicas. Plus tard nous verrons comment le faire également avec des scripts Terraform ou AWS CLI....
Sauvegarder une base de données
Amazon RDS propose deux méthodes de sauvegarde de vos instances de base de données. La première est automatique et l’exécution peut être planifiée. La deuxième est manuelle et peut être exécutée ponctuellement, à tout moment.
La méthode automatique consiste à définir une fenêtre de sauvegarde au moment de la création de l’instance de base de données. Il s’agit d’une plage temporaire quotidienne durant laquelle notre instance sera sauvegardée pendant toute la durée de son fonctionnement. Les sauvegardes effectuées seront gardées durant toute la période de rétention. Pendant cette période, vous pouvez restaurer à tout moment votre base de données, à la seconde près. La seule chose dont vous devez être au courant c’est que, pendant la sauvegarde, la base de données peut être relativement peu réactive et les temps de réponse peuvent augmenter.
La sauvegarde manuelle est également appelée instantané, tout comme l’opération homologue S3. Pour l’effectuer, il faut simplement sélectionner la base de données en question dans le tableau de bord RDS et cliquer sur le bouton Prendre un instantané.
Sauvegarde de base de données...
Création et promotion des réplicas
Nous venons d’aborder rapidement le concept de réplica et nous avions vu de quelle manière ce concept peut nous aider à décharger les instances primaires de nos bases de données en y déléguant les opérations de lecture seule. Dans cette section, nous allons regarder de plus près quelques opérations simples de création et configuration de réplicas, en utilisant la console AWS.
Pour commencer, sélectionnez votre nouvelle base de données dans le tableau de bord RDS, comme le montre la figure ci-dessous. Ensuite, dans la liste déroulante libellée Actions, cliquez sur Créer un réplica en lecture.
Création de réplica en lecture
Ceci va créer un réplica en lecture de la base de données sélectionnée.
Création de réplica en lecture-étape 1
Ici, les diverses options sont suffisamment explicites.
Création de réplica en lecture-étape 2
On peut opter pour le chiffrement des données afin d’assurer une confidentialité maximum. Dans notre exemple, pour des raisons de simplicité, le chiffrement n’est pas activé. On définit ensuite la classe de l’instance replica, le type de déploiement (mono ou multizones) et le type de stockage souhaités.
Création réplica...
Surveillance d’instances Amazon RDS
AWS propose une large variété d’outils et services pour la surveillance des performances de vos instances RDS. La plus incontournable est, bien sûr, CloudWatch, suivie d’un ensemble de petits utilitaires très efficaces lorsqu’il s’agit de garder à l’œil nos bases de données. Par exemple, on peut visualiser la liste des alarmes ou des évènements RDS en sélectionnant l’instance associée dans le tableau de bord RDS.
En plus, on peut également visualiser les évènements concernant les groupes de sécurité et les sauvegardes de type instantané associés à une instance RDS. Ces évènements seront stockés pendant quatorze jours, période au-delà de laquelle ils seront automatiquement supprimés. Il existe aussi une vue rapide d’instances RDS qui affiche le degré d’utilisation de la mémoire RAM et externepresque en temps réel. Ces métriques sont caractérisées par un seuil fixé automatiquement par RDS. S’il est franchi, RDS déclenche automatiquement notifications et alarmes.
Pour ceux qui préfèrent les graphiques aux rapports, RDS propose une page de visualisation sous forme de graphes des performances de vos instances de base de données. Pour...
Suppression d’instances RDS
Notre exercice est maintenant terminé, n’oubliez pas de tout effacer : les réplicas en lecture, les instances primaires ainsi que les instances EC2 utilisées pour les besoins de ce chapitre. La suppression d’une instance RDS peut se faire très facilement avec AWS CLI, comme suit :
# aws rds-delete-db-instance <DATABASE_IDENTIFIER> \
--final-db-snapshot-identifier MyFinalDBSnapshot
Ici l’instance primaire identifiée sous le nom de <DATABASE_IDENTIFIER> est supprimée. Il est fortement conseillé de créer une sauvegarde instantanée avant la suppression.