Aller au contenu
Joomla

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.

Du blog

WordPress

WordPress 7.0 e l’AI

Cosa cambia per le web agency

Sicurezza

Patch a caldo, sito acceso

CVE kernel senza riavvii a raffica

Des archives

Joomla

Pourquoi Host.it a choisi Joomla 4 comme interface

Joomla

Journée de la protection des données - L'importance de la confidentialité et de la sécurité