MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment déployer la base de données Chamilo MariaDB pour une haute disponibilité

Les plates-formes de système de gestion de l'apprentissage (LMS) vous permettent d'apprendre/d'enseigner à distance, ce qui est vraiment important en raison de la situation actuelle dans le monde.

Cela étant dit, nous pouvons également dire que la haute disponibilité est un must dans ce type de plate-forme, sinon elle ne pourrait pas être accessible en cas de besoin.

Dans ce blog, nous verrons comment déployer une base de données MariaDB pour la haute disponibilité à utiliser pour l'une des options de plate-forme LMS les plus populaires, Chamilo LMS.

Qu'est-ce que Chamilo ?

Chamilo LMS est un système de gestion de l'apprentissage (LMS) gratuit conçu pour l'éducation en ligne et développé grâce à la collaboration de nombreuses entreprises et développeurs individuels.

En tant qu'enseignant, en utilisant Chamilo, vous pouvez accéder à une série d'outils utiles pour créer un environnement d'apprentissage efficace. Certains de ces outils sont :

  • Importer ou créer des documents (audio, vidéo, images) et les publier
  • Créer des tests et des examens avec des scores et des commentaires automatisés selon les besoins
  • Définir et recevoir des devoirs virtuels
  • Décrire les composants du cours à travers les sections de description
  • Communiquer via les forums ou le chat
  • Publier des annonces
  • Ajouter des liens
  • Créer des groupes de travail ou des groupes de laboratoire
  • Configurer une classe virtuelle
  • Créer des sondages
  • Ajouter un wiki pour créer des documents en collaboration
  • Utiliser un glossaire et un agenda
  • Activer le suivi des apprenants dans vos cours
  • Enregistrer les présences
  • Élaborer un journal de classe, et plus encore

La plateforme Chamilo est extrêmement flexible. Tous ses outils peuvent être personnalisés en fonction des besoins de chaque cours. Il fournit une interface utilisateur conviviale et intuitive qui ne nécessite aucune connaissance ou compétence technique préalable particulière.

Alors, la question est, comment pouvez-vous déployer une base de données MariaDB pour la haute disponibilité à utiliser pour ce système ?

Base de données MariaDB pour une haute disponibilité

Il existe différentes approches pour déployer une base de données MariaDB pour la haute disponibilité. Voyons les deux options principales.

Réplication maître-esclave MariaDB

Vous pouvez exécuter une configuration maître-esclave à l'aide d'une réplication asynchrone ou semi-synchrone. L'avantage de cette option simple est que, lorsque le maître est indisponible, vous pouvez promouvoir l'un des esclaves et continuer à travailler normalement. Le principal problème avec cette configuration est que le basculement doit être effectué manuellement, ou même à l'aide d'un outil externe comme ClusterControl. Cela signifie que vous aurez un (court) temps d'arrêt, qui pourrait être acceptable ou non pour votre entreprise.

Cluster MariaDB

Une autre approche consisterait à utiliser un cluster Galera pour stocker les données de Chamilo LMS. Vous pouvez commencer à l'utiliser avec trois nœuds et il peut gérer automatiquement la défaillance de l'un de ces nœuds. Les deux nœuds restants continueront de fonctionner en recevant des connexions de l'application Chamilo. Cela signifie que vous n'aurez pas de temps d'arrêt dans ce cas, mais comme il s'agit d'une topologie plus complexe, vous aurez besoin de plus de connaissances sur cette technologie, et selon la charge de travail, cela pourrait ne pas être la meilleure option.

Équilibreurs de charge

Pour améliorer la haute disponibilité, les deux options nécessiteront un équilibreur de charge devant elles, qui gérera le trafic et le redirigera vers un nœud disponible/sain.

ProxySQL est un équilibreur de charge dédié pour MySQL qui comprend une variété de fonctionnalités, notamment la redirection des requêtes, la mise en cache des requêtes et la mise en forme du trafic. Il peut être utilisé pour configurer facilement une séparation en lecture-écriture et rediriger les requêtes vers des nœuds principaux distincts.

HAProxy est un équilibreur de charge qui répartit le trafic d'une origine vers une ou plusieurs destinations et peut définir des règles et/ou des protocoles spécifiques pour cette tâche. Si l'une des destinations cesse de répondre, elle est marquée comme étant hors ligne et le trafic est envoyé vers le reste des destinations disponibles.

Keepalived est un service qui vous permet de configurer une adresse IP virtuelle au sein d'un groupe de serveurs actif/passif. Cette adresse IP virtuelle est attribuée à un serveur actif. Si ce serveur tombe en panne, l'adresse IP est automatiquement migrée vers le serveur passif "secondaire", lui permettant de continuer à fonctionner avec la même adresse IP de manière transparente pour les systèmes.

L'utilisation d'un seul nœud Load Balancer ajoutera un seul point de défaillance dans votre topologie, vous pouvez donc utiliser la combinaison ProxySQL+Keepalived ou HAProxy+Keepalived en utilisant deux nœuds Load Balancer (au moins) et Keepalive entre eux.

Voyons maintenant comment ClusterControl peut vous aider à déployer une base de données MariaDB en ajoutant Des équilibreurs de charge et une adresse IP virtuelle à utiliser dans votre application Chamilo.

Déploiement de la base de données Chamilo MariaDB

A titre d'exemple, nous allons déployer une réplication maître-esclave MariaDB, qui sera utilisée par l'application Chamilo. Pour cela, nous utiliserons ClusterControl pour déployer 2 nœuds de base de données MariaDB (maître-esclave) et 2 équilibreurs de charge HAProxy avec Keepalived configuré entre eux.

Déploiement de la base de données MariaDB

Pour effectuer un déploiement depuis ClusterControl, sélectionnez simplement l'option "Déployer" et suivez les instructions qui s'affichent.

Lorsque vous sélectionnez la réplication MySQL, vous devez spécifier l'utilisateur, la clé ou le mot de passe, et Port pour se connecter en SSH à vos serveurs. Vous pouvez également ajouter un nom pour votre nouveau cluster et si vous souhaitez que ClusterControl installe le logiciel et les configurations correspondants pour vous.

Après avoir configuré les informations d'accès SSH, vous devez sélectionner le fournisseur de la base de données /version et définissez les informations d'identification, le port et le répertoire de données de la base de données. Vous pouvez également spécifier le référentiel à utiliser.

À l'étape suivante, vous devez ajouter vos serveurs au cluster que vous allez créer à l'aide de l'adresse IP ou du nom d'hôte.

Une fois la tâche terminée, vous pouvez voir votre nouveau cluster MariaDB dans le l'écran principal de ClusterControl.

Maintenant que votre cluster est créé, vous pouvez effectuer plusieurs tâches dessus, comme l'ajout d'un équilibreur de charge ou d'un nouveau réplica.

Déploiement de l'équilibreur de charge

Pour effectuer un déploiement de Load Balancer, sélectionnez l'option "Add Load Balancer" dans les actions du cluster, et complétez les informations demandées.

Vous n'avez qu'à ajouter l'IP ou le nom d'hôte, le port, la stratégie et le nœuds que vous allez utiliser pour l'équilibrage de charge. Vous pouvez le déployer en utilisant deux ports différents (lecture/écriture et lecture seule), ou vous pouvez utiliser un seul port en lecture/écriture pour y envoyer tout le trafic.

Déploiement Keepalive

Pour effectuer un déploiement Keepalived, sélectionnez l'option "Ajouter un équilibreur de charge" dans les actions du cluster, puis accédez à l'onglet Keepalived.

Ici, sélectionnez les nœuds HAProxy et spécifiez l'adresse IP virtuelle qui être utilisé pour accéder à la base de données.

Maintenant, connectons cet environnement à l'application Chamilo.

Configuration de la base de données Chamilo

Lors du déploiement de Chamilo, à l'étape 4, vous devrez ajouter la configuration de la base de données.

Ici, vous devez utiliser l'adresse IP virtuelle pour accéder à votre base de données MariaDB, et les informations d'identification de la base de données.

Pour plus de détails sur la configuration de Chamilo, vous pouvez vous référer à la documentation officielle.

C'est tout ! Votre application Chamilo utilise une base de données MariaDB à haute disponibilité.

Fonctionnalité de récupération automatique de ClusterControl

En cas d'échec, ClusterControl promouvra le nœud esclave le plus avancé en maître et vous informera du problème. Il bascule également sur le reste des nœuds esclaves pour répliquer à partir du nouveau serveur maître.

Par défaut, HAProxy est configuré avec deux ports différents :lecture-écriture et lecture seule. Dans le port en lecture-écriture, vous avez votre nœud maître en ligne et le reste des nœuds hors ligne, et dans le port en lecture seule, vous avez à la fois le nœud maître et les nœuds esclaves en ligne.

Lorsque HAProxy détecte qu'un de vos nœuds n'est pas accessible, il le marque automatiquement comme étant hors ligne et ne le prend pas en compte pour lui envoyer du trafic. La détection est effectuée par des scripts de vérification de l'état configurés par ClusterControl au moment du déploiement. Ceux-ci vérifient si les instances sont actives, si elles sont en cours de récupération ou sont en lecture seule.

Lorsque ClusterControl promeut un nœud esclave, HAProxy marque l'ancien maître comme étant hors ligne pour les deux ports et met le nœud promu en ligne dans le port en lecture-écriture.

Si votre HAProxy actif, auquel est attribuée une adresse IP virtuelle à laquelle vos systèmes se connectent, échoue, Keepalived migre automatiquement cette adresse IP vers votre HAProxy passif. Cela signifie que vos systèmes peuvent alors continuer à fonctionner normalement.

Déploiement de la base de données MariaDB à l'aide de la CLI ClusterControl

Si vous préférez déployer le cluster MariaDB à l'aide de la ligne de commande, vous pouvez utiliser l'outil client de ligne de commande ClusterControl appelé "s9s". Cet outil enverra une tâche de déploiement au serveur ClusterControl et effectuera toutes les étapes nécessaires pour déployer le cluster.

Par exemple, vous pouvez exécuter la commande suivante sur le serveur ClusterControl pour créer une réplication maître-esclave MariaDB :

$ s9s cluster --create \

--cluster-type=mysqlreplication \

--nodes='10.10.10.136;10.10.10.137' \

--vendor=mariadb \

--provider-version='10.5' \

--db-admin-passwd='root123' \

--os-user=root \

--os-key-file=/root/.ssh/id_rsa \

--cluster-name='MariaDB1' \

--log

Vous verrez le journal des tâches dans la console afin que vous puissiez y surveiller la progression du déploiement, ou vous pouvez également surveiller la progression des tâches à partir de l'interface utilisateur ClusterControl > Activité > Travaux. Une fois terminé, vous pouvez le voir répertorié dans l'interface utilisateur de ClusterControl.

Conclusion

Dans ce blog, nous avons mentionné quelques options pour déployer une base de données MariaDB pour la haute disponibilité à l'aide de ClusterControl et comment l'utiliser sur une application Chamilo LMS.

Nous avons utilisé un simple déploiement maître-esclave en ajoutant des équilibreurs de charge pour améliorer la haute disponibilité sur cette topologie, mais vous pouvez encore améliorer cet environnement en utilisant une approche différente comme Galera+ProxySQL ou une combinaison différente de celles-ci .