Un environnement de développement pour MaxScale avec Docker et Vagrant
Team Host.it 3 min de lecture
Contenu
Pourquoi utiliser Docker ? C'est très rapide pour le développement/test local
Il est facile de partager des images Docker au sein de l'équipe
Les conteneurs peuvent également être partagés en dehors de l'équipe via le Dockerfile
Il garantit une isolation maximale des processus sans avoir à créer une machine virtuelle pour chaque service
C'est la solution idéale pour tester localement des architectures avec plusieurs hôtes interagissant via le réseau.
Docker : une plateforme de gestion des conteneurs
Avec Docker, vous pouvez créer, lancer et détruire des conteneurs d'applications à la vitesse de la lumière. Il existe de nombreuses images prêtes à l’emploi publiées par la communauté, dont celle de MaxScale.
Pour notre test nous avons choisi d'utiliser ces trois conteneurs :
MaxScale : en version bêta (Dockerfile)
MariaDB : version 10.0 (Dockerfile)
MySQL : version 5.1 (Dockerfile)
Docker est un choix gagnant pour ce type d'expérimentation : nous pouvons créer un conteneur d'applications et lancer nos applications à l'aide d'un simple fichier appelé Dockerfile. En quelques secondes il est possible de disposer de toutes les bases de données MySQL/MariaDB nécessaires pour réaliser les tests. Depuis la ligne de commande ou à l'aide des API Docker, vous pouvez créer et détruire des conteneurs avec MaxScale, MariaDB et MySQL.
Pour automatiser la création de l'infrastructure nous avons choisi d'utiliser Vagrant : un système agile qui permet de créer et de configurer des infrastructures de développement reproductibles et portables.
Vagrant : créez rapidement des environnements de développement
Vagrant est un outil open source permettant de gérer les environnements de développement grâce à l'utilisation de différents fournisseurs, dont VirtualBox et Docker. Grâce au Vagrantfile, il est possible de définir l'infrastructure du système et, comme cela se produit déjà dans Docker, de la créer et de la détruire via des commandes de ligne de commande très simples. Dans notre test nous avons choisi le Docker Provider pour définir les conteneurs utilisés et les connexions entre eux.
Il est possible de définir deux types de connexions :
volumes-from : pour connecter le volume à un conteneur dédié au stockage
lien : pour permettre à un conteneur d'en voir un autre
À ce stade, nous avons créé une configuration très similaire à celle de production composée de :
Un conteneur MySQL 5.1 qui correspond à la base de données utilisée pour Joomla! installations 1.5.x
Un conteneur MariaDB 10.0 défini comme MASTER
Un conteneur MariaDB 10.0 défini comme SLAVE, connecté au MASTER
Un conteneur MaxScale pouvant atteindre toutes les bases de données.
La prochaine étape consiste à configurer MaxScale sur cette infrastructure.
MaxScale : un proxy pour les bases de données MySQL et MariaDB
Une partie de notre test consistait à utiliser MaxScale comme proxy pour envoyer du trafic vers la base de données avec MySQL 5.1 et copier toutes les requêtes vers les bases de données MariaDB pour analyser le trafic et vérifier le comportement correct du routeur Read/Write Split.
Le conteneur avec MySQL 5.1 a été utilisé pour tester le fonctionnement du filtre MaxScale et vérifier le TYPE de réécriture dans CREATE TABLE :
Exemple de requête acceptée dans MySQL 5.1 :
CREATE TABLE Personne (id int, nom varchar(255)) TYPE=MyISAM ;
Par ex. requête à partir de MySQL/MariaDB version 5.5 :
CREATE TABLE Personne (id int, nom varchar(255)) ENGINE=MyISAM ;
Nous avons donc configuré MaxScale de cette manière :
Un Listener écoutant /var/lib/mysql/mysql.sock et sur le port 3306
Routeur : le trafic arrivant de l'écouteur est dirigé vers le routeur principal. Trafic envoyé vers le serveur MySQL 5.1 sans aucune modification.
Le trafic est copié sur le routeur partagé lecture/écriture
Le routeur fractionné Lecture/Écriture se charge de séparer les requêtes en lecture seule des requêtes en écriture seule. Avant de les envoyer aux serveurs MariaDB Master/Slave, les requêtes sont transmises via le CreateTableFilter
Le CreateTableFilter qui modifie les requêtes CREATE TABLE qui contiennent le paramètre TYPE au lieu de ENGINE
Un moniteur pour chaque serveur backend pour permettre à MaxScale de connaître en permanence la situation et l'état de la réplication.
Partage entre plusieurs équipes de développement
Grâce à Docker et Vagrant, il a été possible de partager une infrastructure complexe non seulement au sein de notre équipe de développement, mais aussi en externe avec l'équipe MariaDB MaxScale.
Dans le prochain article, j'expliquerai comment il a été possible de mettre en production cette configuration, en minimisant le temps d'arrêt des machines à quelques minutes.
Hébergement Joomla
Hébergement Joomla en Italie
Offres avec sauvegardes, certificats SSL et outils pour développeurs et agences.
Articles connexes
Du blog
Des archives