Learning Management System (LMS)-Plattformen ermöglichen es Ihnen, aus der Ferne zu lernen/lehren, was aufgrund der aktuellen Situation auf der ganzen Welt sehr wichtig ist.
Abgesehen davon können wir auch sagen, dass Hochverfügbarkeit bei dieser Art von Plattform ein Muss ist, da sie sonst nicht verfügbar wäre, wenn sie benötigt wird.
In diesem Blog werden wir sehen, wie eine MariaDB-Datenbank für Hochverfügbarkeit bereitgestellt wird, die für eine der beliebtesten LMS-Plattformoptionen, Chamilo LMS, verwendet werden kann.
Was ist Chamilo?
Chamilo LMS ist ein kostenloses Learning Management System (LMS), das für Online-Bildung konzipiert und durch die Zusammenarbeit vieler Entwickler von Unternehmen und Einzelpersonen entwickelt wurde.
Als Lehrer können Sie mit Chamilo auf eine Reihe nützlicher Tools zugreifen, um eine effektive Lernumgebung zu schaffen. Einige dieser Tools sind:
- Importieren oder erstellen Sie Dokumente (Audio, Video, Bilder) und veröffentlichen Sie sie
- Erstellen Sie Tests und Prüfungen mit automatisierten Ergebnissen und Feedback nach Bedarf
- Virtuelle Aufgaben festlegen und erhalten
- Beschreiben Sie die Komponenten des Kurses durch Beschreibungsabschnitte
- Kommunizieren Sie über Foren oder Chats
- Veröffentlichen Sie Ankündigungen
- Links hinzufügen
- Erstellen Sie Arbeitsgruppen oder Laborgruppen
- Richten Sie ein virtuelles Klassenzimmer ein
- Umfragen erstellen
- Fügen Sie ein Wiki hinzu, um gemeinsam Dokumente zu erstellen
- Verwenden Sie ein Glossar und eine Agenda
- Ermöglichen Sie die Nachverfolgung von Lernenden in Ihren Kursen
- Anwesenheiten registrieren
- Erstellen Sie ein Klassentagebuch und mehr
Die Chamilo-Plattform ist extrem flexibel. Alle seine Tools können an die Bedürfnisse jedes Kurses angepasst werden. Es bietet eine benutzerfreundliche und intuitive Benutzeroberfläche, die keine besonderen technischen Vorkenntnisse oder Fähigkeiten erfordert.
Die Frage ist also, wie können Sie eine MariaDB-Datenbank für Hochverfügbarkeit bereitstellen, die für dieses System verwendet werden soll?
MariaDB-Datenbank für Hochverfügbarkeit
Es gibt verschiedene Ansätze zur Bereitstellung einer MariaDB-Datenbank für Hochverfügbarkeit. Sehen wir uns die beiden Hauptoptionen an.
MariaDB-Master-Slave-Replikation
Sie können ein Master-Slave-Setup mit asynchroner oder halbsynchroner Replikation ausführen. Der Vorteil dieser einfachen Möglichkeit besteht darin, dass Sie bei Abwesenheit des Masters einen der Slaves befördern und wie gewohnt weiterarbeiten können. Das Hauptproblem bei diesem Setup besteht darin, dass das Failover manuell oder sogar mit einem externen Tool wie ClusterControl durchgeführt werden muss. Dies bedeutet, dass Sie eine (kurze) Ausfallzeit haben, die für Ihr Unternehmen akzeptabel oder nicht akzeptabel sein kann.
MariaDB-Cluster
Ein anderer Ansatz wäre, einen Galera-Cluster zu verwenden, um die Daten von Chamilo LMS zu speichern. Sie können es mit drei Knoten verwenden, und es kann automatisch den Ausfall eines dieser Knoten behandeln. Die verbleibenden zwei Knoten arbeiten weiter und empfangen Verbindungen von der Chamilo-Anwendung. Das bedeutet, dass Sie in diesem Fall keine Ausfallzeiten haben, aber da es sich um eine komplexere Topologie handelt, benötigen Sie mehr Wissen über diese Technologie, und je nach Arbeitslast ist dies möglicherweise nicht die beste Option.
Load Balancer
Um die Hochverfügbarkeit zu verbessern, benötigen beide Optionen einen Load Balancer vor ihnen, der den Datenverkehr handhabt und ihn an einen verfügbaren/fehlerfreien Knoten umleitet.
ProxySQL ist ein dedizierter Load-Balancer für MySQL, der mit einer Vielzahl von Funktionen ausgestattet ist, darunter Abfrageumleitung, Abfrage-Caching und Traffic-Shaping. Es kann verwendet werden, um auf einfache Weise eine Lese-Schreib-Aufteilung einzurichten und Abfragen an separate Backend-Knoten umzuleiten.
HAProxy ist ein Load Balancer, der den Datenverkehr von einem Ursprung zu einem oder mehreren Zielen verteilt und für diese Aufgabe spezifische Regeln und/oder Protokolle definieren kann. Wenn eines der Ziele nicht mehr reagiert, wird es als offline markiert und der Datenverkehr wird an die restlichen verfügbaren Ziele gesendet.
Keepalived ist ein Dienst, mit dem Sie eine virtuelle IP-Adresse innerhalb einer Aktiv/Passiv-Gruppe von Servern konfigurieren können. Diese virtuelle IP-Adresse wird einem aktiven Server zugewiesen. Wenn dieser Server ausfällt, wird die IP-Adresse automatisch auf den „sekundären“ passiven Server migriert, sodass dieser auf transparente Weise für die Systeme mit derselben IP-Adresse weiterarbeiten kann.
Die Verwendung von nur einem Load Balancer-Knoten fügt Ihrer Topologie einen einzelnen Fehlerpunkt hinzu, sodass Sie die Kombination aus ProxySQL+Keepalived oder HAProxy+Keepalived mit (mindestens) zwei Load Balancer-Knoten und verwenden können Keepalived zwischen ihnen.
Lassen Sie uns nun sehen, wie ClusterControl Ihnen helfen kann, eine MariaDB-Datenbank hinzuzufügen Load Balancer und eine virtuelle IP-Adresse, die in Ihrer Chamilo-Anwendung verwendet werden soll.
Bereitstellung der Chamilo MariaDB-Datenbank
Als Beispiel werden wir eine MariaDB-Master-Slave-Replikation bereitstellen, die von der Chamilo-Anwendung verwendet wird. Dazu verwenden wir ClusterControl, um 2 MariaDB-Datenbankknoten (Master-Slave) und 2 HAProxy-Load-Balancer bereitzustellen, zwischen denen Keepalived konfiguriert ist.
MariaDB-Datenbankbereitstellung
Um eine Bereitstellung über ClusterControl durchzuführen, wählen Sie einfach die Option „Bereitstellen“ und folgen Sie den angezeigten Anweisungen.
Wenn Sie die MySQL-Replikation auswählen, müssen Sie Benutzer, Schlüssel oder Passwort und angeben Port für die Verbindung per SSH mit Ihren Servern. Sie können auch einen Namen für Ihren neuen Cluster hinzufügen und wenn Sie möchten, dass ClusterControl die entsprechende Software und Konfigurationen für Sie installiert.
Nachdem Sie die SSH-Zugriffsinformationen eingerichtet haben, müssen Sie den Datenbankanbieter auswählen /version, und definieren Sie die Datenbankanmeldeinformationen, den Port und das Datenverzeichnis. Sie können auch angeben, welches Repository verwendet werden soll.
Im nächsten Schritt müssen Sie Ihre Server mithilfe der IP-Adresse oder des Hostnamens zu dem Cluster hinzufügen, den Sie erstellen werden.
Sobald die Aufgabe abgeschlossen ist, können Sie Ihren neuen MariaDB-Cluster im sehen Hauptbildschirm von ClusterControl.
Jetzt haben Sie Ihren Cluster erstellt, Sie können verschiedene Aufgaben darauf ausführen, wie das Hinzufügen eines Load Balancers oder eines neuen Replikats.
Load-Balancer-Bereitstellung
Um eine Load-Balancer-Bereitstellung durchzuführen, wählen Sie die Option „Load-Balancer hinzufügen“ in den Cluster-Aktionen aus und vervollständigen Sie die angeforderten Informationen.
Sie müssen nur IP oder Hostname, Port, Richtlinie und die hinzufügen Knoten, die Sie für den Lastenausgleich verwenden werden. Sie können es mit zwei verschiedenen Ports bereitstellen (Lesen/Schreiben und Nur-Lesen), oder Sie können nur einen Lese-/Schreibport verwenden, um den gesamten Datenverkehr dorthin zu senden.
Keepalived-Bereitstellung
Um eine Keepalived-Bereitstellung durchzuführen, wählen Sie die Option „Load Balancer hinzufügen“ in den Cluster-Aktionen und gehen Sie dann zum Keepalived-Tab.
Wählen Sie hier die HAProxy-Knoten aus und geben Sie die entsprechende virtuelle IP-Adresse an für den Zugriff auf die Datenbank verwendet werden.
Lassen Sie uns nun diese Umgebung mit der Chamilo-Anwendung verbinden.
Chamilo-Datenbankkonfiguration
Während der Chamilo-Bereitstellung müssen Sie in Schritt 4 die Datenbankkonfiguration hinzufügen.
Hier sollten Sie die virtuelle IP-Adresse verwenden, um auf Ihre MariaDB-Datenbank zuzugreifen, und die Datenbankanmeldeinformationen.
Weitere Details zur Chamilo-Konfiguration finden Sie in der offiziellen Dokumentation.
Das ist es! Ihre Chamilo-Anwendung verwendet eine MariaDB-Datenbank mit hoher Verfügbarkeit.
Autorecovery-Funktion von ClusterControl
Im Falle eines Fehlers befördert ClusterControl den fortschrittlichsten Slave-Knoten zum Master und benachrichtigt Sie über das Problem. Außerdem wird ein Failover für die restlichen Slave-Knoten durchgeführt, um vom neuen Master-Server zu replizieren.
Standardmäßig ist HAProxy mit zwei verschiedenen Ports konfiguriert:Read-Write und Read-Only. Im Lese-Schreib-Port haben Sie Ihren Master-Knoten online und die restlichen Knoten offline, und im Nur-Lese-Port haben Sie sowohl den Master- als auch die Slave-Knoten online.
Wenn HAProxy feststellt, dass einer Ihrer Knoten nicht erreichbar ist, markiert es ihn automatisch als offline und berücksichtigt ihn beim Senden von Datenverkehr nicht. Die Erkennung erfolgt durch Zustandsprüfungsskripte, die von ClusterControl zum Zeitpunkt der Bereitstellung konfiguriert werden. Diese prüfen, ob die Instanzen aktiv sind, ob sie gerade wiederhergestellt werden oder schreibgeschützt sind.
Wenn ClusterControl einen Slave-Knoten heraufstuft, markiert HAProxy den alten Master für beide Ports als offline und stellt den heraufgestuften Knoten im Lese-Schreib-Port online.
Wenn Ihr aktiver HAProxy, dem eine virtuelle IP-Adresse zugewiesen ist, mit der sich Ihre Systeme verbinden, ausfällt, migriert Keepalived diese IP-Adresse automatisch auf Ihren passiven HAProxy. Das bedeutet, dass Ihre Systeme dann normal weiter funktionieren können.
MariaDB-Datenbankbereitstellung mit der ClusterControl-CLI
Wenn Sie den MariaDB-Cluster lieber über die Befehlszeile bereitstellen möchten, können Sie das ClusterControl-Befehlszeilen-Client-Tool namens "s9s" verwenden. Dieses Tool sendet einen Deployment-Job an den ClusterControl-Server und führt alle notwendigen Schritte zum Deployment des Clusters durch.
Zum Beispiel können Sie den folgenden Befehl auf dem ClusterControl-Server ausführen, um eine MariaDB-Master-Slave-Replikation zu erstellen:
$ 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
Sie sehen das Jobprotokoll in der Konsole, sodass Sie den Bereitstellungsfortschritt dort überwachen können, oder Sie können den Jobfortschritt auch über die ClusterControl-Benutzeroberfläche -> Aktivität -> Jobs überwachen. Wenn es fertig ist, können Sie es in der ClusterControl-Benutzeroberfläche sehen.
Fazit
In diesem Blog haben wir einige Optionen zum Bereitstellen einer MariaDB-Datenbank für Hochverfügbarkeit mit ClusterControl und deren Verwendung in einer Chamilo LMS-Anwendung erwähnt.
Wir haben eine einfache Master-Slave-Bereitstellung verwendet und Load Balancer hinzugefügt, um die Hochverfügbarkeit in dieser Topologie zu verbessern, aber Sie können diese Umgebung noch weiter verbessern, indem Sie einen anderen Ansatz wie Galera+ProxySQL oder eine andere Kombination davon verwenden .