Moodle est un système de gestion de l'apprentissage open source, largement utilisé par les écoles et les universités du monde entier. Le projet a débuté en 2002 par Martin Dougiamas, dans le but de fournir aux apprenants, enseignants, éducateurs une plateforme sécurisée, robuste, ouverte et gratuite pour les environnements d'apprentissage.
Le logiciel lui-même est écrit en PHP et prend en charge divers SGBDR, tels que :Oracle, MySQL, PostgreSQL, MariaDB, etc.
Dans ce blog, nous expliquerons comment rendre la base de données Moodle résiliente à l'aide de la réplication MySQL, qui est nécessaire pour prendre en charge un déploiement Moodle haute disponibilité. Nous déploierons via ClusterControl une configuration de base de données composée d'une réplication MySQL maître/esclave accompagnée d'équilibreurs de charge de base de données redondants.
Architecture
La réplication MySQL est un moyen populaire d'obtenir une redondance pour la base de données. Il est important de s'assurer que toutes les écritures sont envoyées au maître, tandis que les lectures peuvent être équilibrées en charge entre les esclaves. Pour ce faire, nous utiliserons ProxySQL qui est un équilibreur de charge prenant en charge la base de données qui se charge de diviser le trafic d'écriture et de l'envoyer au maître. Étant donné que le rôle de maître peut être déplacé vers un autre serveur, par exemple en cas de panne de la base de données, ProxySQL peut suivre le nouveau maître et s'assurer que le trafic d'écriture est acheminé en conséquence. Une adresse IP virtuelle est gérée par Keepalived pour garantir un point de terminaison de base de données résilient pour tous les serveurs d'applications Moodle.
Surveillance et gestion du basculement
Dans le schéma ci-dessus, nous suggérons deux instances dupliquées asservissant la base de données maître. En cas de plantage du maître, l'une des répliques sera promue au nouveau maître. Il restera une instance dupliquée pour gérer des éléments tels que les lectures, les sauvegardes, la création de rapports, etc.
La connexion de l'application utilise un VIP (adresse IP virtuelle) dans la chaîne de connexion de la base de données, donc si quelque chose se passe du côté de la base de données, cela minimisera l'impact de votre application et vous n'aurez pas besoin de reconfigurer quoi que ce soit. ClusterControl est le composant qui surveille les bases de données et automatise le basculement, par exemple en promouvant l'une des répliques vers un nouveau maître et en récupérant le serveur de base de données défaillant.
Configuration de la base de données
Nous utiliserons ClusterControl pour déployer notre configuration de base de données.
Tout d'abord, vous devez disposer d'un serveur dédié pour la configuration de ClusterControl. L'installation est très simple, il vous suffit de télécharger install-cc à partir du référentiel de plusieursnines, de donner l'autorisation d'exécution sur le fichier et de l'exécuter. Comme indiqué ci-dessous :
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Vous pouvez exécuter le script ci-dessus dans n'importe quel type de variante Linux. Il déploiera tout ce qui est requis par ClusterControl.
Une fois que ClusterControl est opérationnel, choisissez le bouton Déployer dans le tableau de bord de ClusterControl.
Il affichera une nouvelle page qui montre quelques options. Nous choisirons la première option de déploiement pour notre configuration de réplication MySQL.
Vous devez avoir accès au serveur de base de données cible via SSH. N'oubliez pas d'activer SSH sans mot de passe et de donner un accès sudo à l'utilisateur. Définissez le nom du cluster et cliquez sur Continuer comme indiqué ci-dessous :
Sur la page suivante, vous devez choisir le fournisseur de la base de données, version de la base de données que vous souhaitez installer, le mot de passe root, le port du serveur si vous souhaitez avoir des ports personnalisés ou spécifiques et le répertoire de données MySQL.
Une fois toutes les informations renseignées, vous pouvez passer à l'étape suivante, qui est la page Définir la topologie. Veuillez remplir l'adresse IP du serveur de base de données, dans ce cas, car nous avons configuré la réplication MyQL avec 1 maître et 2 répliques.
Le déploiement va maintenant déclencher une tâche qui va "Créer un cluster", il vous suffit besoin d'attendre que le travail soit terminé.
Configuration de ProxySQL
Une fois la base de données déployée, vous pouvez parcourir l'équilibreur de charge à partir du menu de votre cluster. Veuillez accéder à Gérer -> Équilibreur de charge. Il s'affichera comme ci-dessous :
Le déploiement de ProxySQL nécessite que vous remplissiez certaines informations telles que l'adresse IP où vous souhaitez installer ProxySQL, mot de passe pour les utilisateurs d'administration et de surveillance, et permettre à l'instance d'équilibrer la charge. Après cela, cliquez simplement sur Déployer. Pour une haute disponibilité, vous avez besoin d'au moins 2 équilibreurs de charge installés devant la base de données.
Configuration Keepalive
Le service Keepalived est utilisé pour rendre votre équilibreur de charge hautement disponible. La configuration est vraiment simple, toujours sur la page Load Balancer, il y a un onglet pour Keepalived comme indiqué ci-dessous :
Choisissez le type de déploiement de l'équilibreur de charge, dans ce cas nous utilisons ProxySQL, sélectionnez le service ProxySQL pour keepalived. Remplissez l'adresse IP virtuelle et l'interface réseau. Après cela, cliquez simplement sur Déployer Keepalived, il déclenchera automatiquement une nouvelle tâche pour configurer le service.
Configuration de l'application
Avant de configurer l'application moodle, vous devez préparer les informations d'identification de l'utilisateur et la base de données elle-même. Pour les identifiants, vous pouvez aller dans :Gérer -> Schémas et Utilisateurs.
Vous devez remplir certaines informations, par exemple :nom d'utilisateur, mot de passe, nom d'hôte et privilège. Après cela, cliquez simplement sur Créer un utilisateur. Cela vous permet de créer un utilisateur pour l'application moodle :
Pour créer la base de données, vous pouvez choisir l'onglet Créer une base de données sur le même page en tant qu'utilisateurs.
L'étape suivante consiste à configurer les informations d'identification du côté ProxySQL, vous pouvez importer le informations d'identification que vous avez créées dans ProxySQL. Vous pouvez aller au nœud ProxySQL, choisir l'onglet Utilisateurs, il y a un bouton Importer un utilisateur sur le côté droit.
Recherchez l'utilisateur moodle_application, puis sélectionnez l'utilisateur. Sur la page suivante, vous devez définir le groupe d'hôtes par défaut pour l'utilisateur, puis importer des utilisateurs.
Veuillez répéter les étapes pour importer les utilisateurs sur l'autre nœud ProxySQL, ou vous pouvez utiliser les instances de synchronisation dans le menu ProxySQL.
Vous devez télécharger l'application moodle depuis le site officiel de moodle (re. https ://download.moodle.org/), la dernière version au moment de la rédaction de ce blog est la 3.9.1. Ils fournissent deux types de fichiers compressés, le zip compressé et le tar zip. Téléchargez le fichier zip et placez le fichier dans vos serveurs d'application. Consultez la configuration requise pour le logiciel moodle, c'est-à-dire :serveur Web, bibliothèque PHP.
Extraire les fichiers zip dans le répertoire temp, créer le répertoire /var/www/html/moodle, copier le répertoire extrait dans le dossier. N'oubliez pas de donner la permission 0755 pour le répertoire. Après cela, vous pouvez accéder au navigateur Web pour la configuration suivante. Choisissez la langue comme indiqué ci-dessous :
Sélectionnez le pilote de base de données pour votre configuration MySQL comme ci-dessous :
Vous devez remplir certaines informations d'identification de la base de données que vous aviez précédemment créées, pour exemple :nom d'utilisateur, mot de passe, hôte, base de données, port. Le nom d'hôte doit être votre adresse IP virtuelle et le port est le port ProxySQL, qui est 6032.
L'hôte de la base de données serait votre adresse IP virtuelle. Une fois que vous avez rempli les champs, cliquez sur Suivant et vous avez terminé.
Construire une base de données hautement disponible pour Moodle à l'aide de ClusterControl est très simple et direct, vous pouvez créer votre propre base de données qui prendra en charge votre disponibilité de service à 99,99 %.