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

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

Chamilo est, tout comme Open edX ou Moodle, une plateforme qui permet aux établissements d'enseignement de transférer leurs activités éducatives sur Internet. Étant donné que la majorité de l'activité éducative s'est déplacée en ligne au cours de la dernière année, il n'est pas surprenant que de plus en plus de personnes aient du mal à faire évoluer leurs plateformes éducatives et à assurer une meilleure disponibilité.

Chamilo est une plate-forme construite sur la pile *AMP, qui se compose d'Apache, MySQL et PHP. Comme d'habitude, la base de données est l'élément le plus difficile à migrer dans un environnement hautement disponible. Dans ce court blog, nous aimerions discuter de la manière dont vous pouvez améliorer la haute disponibilité de la base de données Chamilo.

Comme vous pouvez l'imaginer, la base de données MySQL unique est un point de défaillance unique et, à ce titre, elle doit être évitée dans les déploiements de production. Heureusement, il existe plusieurs façons d'améliorer la disponibilité de la base de données MySQL.

L'une des façons d'aborder le problème serait d'utiliser un cluster Galera. Le déploiement minimal doit être composé de trois nœuds - de tels clusters peuvent gérer automatiquement la défaillance d'un seul nœud. Les deux nœuds restants continueront de fonctionner et répondront aux requêtes provenant de l'application.

Cette configuration nécessiterait une sorte d'équilibreur de charge devant le cluster Galera. Son travail consisterait à gérer le trafic et à le rediriger vers une destination appropriée.

Voyons comment ClusterControl peut vous aider à déployer un cluster Galera avec un ensemble d'équilibreurs de charge que vous pouvez utiliser pour votre plateforme Chamilo.

Déployer le cluster MariaDB

Cette fois, nous allons essayer d'utiliser MariaDB Cluster comme backend. Chamilo prend en charge MySQL 5.6 et plus récent ou MariaDB 5.5 et plus récent. Dans un premier temps, nous devons sélectionner "Déployer" dans l'assistant :

Une fois que nous avons fait cela, nous devons définir la connectivité SSH, sans mot de passe, clé L'accès SSH basé sur est une exigence pour ClusterControl, sinon il ne pourra pas gérer l'infrastructure de la base de données :il s'appuie sur la connectivité SSH pour exécuter des commandes pour démarrer ou arrêter des services, installer des logiciels, etc.

Ensuite, nous devons décider du fournisseur, de la version, du mot de passe, des hôtes et certains paramètres supplémentaires :

Avec tous ces détails renseignés, nous sommes prêts à procéder au déploiement.

Déployer ProxySQL

Comme nous l'avons mentionné précédemment, la base de données elle-même n'est pas le seul élément que nous souhaitons déployer. Nous pourrions utiliser un équilibreur de charge que nous utiliserons pour déplacer le trafic en cas de défaillance de l'un des nœuds. Nous l'utiliserons également pour fournir une division lecture/écriture, en dirigeant toutes les écritures vers un seul nœud MariaDB Galera et en divisant les lectures entre les nœuds MariaDB Galera restants. Cela nous aidera à éviter les conflits entre les écritures exécutées sur différents nœuds Galera.

Pour ProxySQL ClusterControl nécessite également de remplir certaines informations - vous devez choisir le hôte sur lequel l'installer, décidez de la version de ProxySQL, des informations d'identification pour les utilisateurs administratifs et de surveillance. Ces utilisateurs seront utilisés pour gérer ProxySQL et surveiller l'état de votre cluster Galera. Vous devez également importer des utilisateurs de base de données existants ou en créer un nouveau pour votre application. Enfin, c'est à vous de décider quels nœuds de base de données vous souhaitez utiliser avec ProxySQL et de décider si vous utilisez des transactions implicites.

Déployer Keepalived

Le ProxySQL fonctionnera très bien en distribuant notre trafic sur les nœuds du cluster. D'autre part, un seul nœud ProxySQL agira comme un point de défaillance unique. C'est pourquoi nous souhaitons en déployer au moins deux. Ensuite, la question est de savoir comment détecter la défaillance du nœud ProxySQL et comment déplacer le trafic vers un ProxySQL sain. Voici Keepalived. L'idée ici est d'avoir une adresse IP virtuelle qui pointera vers l'instance ProxySQL de travail. Ce VIP peut ensuite être utilisé dans l'application comme point de terminaison pour la connectivité de la base de données MySQL, garantissant que l'application atteindra toujours ProxySQL sain qui, à son tour, garantira que le trafic atteindra le nœud sain du cluster.

Après avoir transmis des détails tels que les instances ProxySQL qui doivent être surveillées, l'adresse IP virtuelle et le l'interface VIP doit être liée à nous sommes prêts à déployer. Après quelques minutes, tout devrait être prêt et la topologie devrait ressembler à celle ci-dessous :

C'est tout en ce qui concerne l'environnement que nous étions en train de créer. Vous pouvez pointer votre Chamilo vers le VIP et le port 6033, cela devrait suffire pour obtenir la connectivité à votre base de données backend. Si vous rencontrez des problèmes liés aux lectures obsolètes (lorsque l'écriture touche un nœud et que Chamilo tente de lire à partir d'un autre nœud, vous pouvez envisager d'activer les contrôles de causalité sur le cluster Galera. Il existe une variable wsrep_sync_wait qui peut activer les tests sur plusieurs accès. modèles :lectures, mises à jour, insertions, suppressions, remplacements et commandes SHOW. Si nous ne sommes intéressés que par les requêtes SELECT, nous définirons cette variable à '1' à l'aide de la gestion de la configuration de ClusterControl.

Cela effectuera cette modification sur tous les nœuds du cluster MariaDB.

C'est à peu près tout. Si vous souhaitez partager une partie de votre expérience avec Chamilo, n'hésitez pas à nous laisser un commentaire.