Online-Lernen gewinnt heutzutage schnell an Bedeutung, seit die COVID-19-Pandemie aufgetreten ist. Die meisten Bildungseinrichtungen müssen Plattformen für das Online-Lernen einrichten, und so ziemlich alle Schüler müssen auf die Plattform zugreifen, um zu lernen und mit den Lehrern zu interagieren. Moodle ist eines der Open-Source-Lernmanagementsysteme für Online-Lernen
Eine hohe Verfügbarkeit der Moodle-Plattform ist ein Muss für Institutionen, da sie sonst den Online-Lernprozess unterbricht und stoppt. Da viele Studenten gleichzeitig auf die Plattform zugreifen, ist die Verfügbarkeit und Skalierbarkeit wichtig. An diesem Punkt müssen Bildungseinrichtungen über Kenntnisse und Architektur der Plattform für hohe Verfügbarkeit und Skalierbarkeit von Moodle verfügen. Wenn Sie mehr darüber erfahren möchten, wie Sie eigenständiges Moodle in eine skalierbare geclusterte Datenbank migrieren können, können Sie dieser Richtlinie folgen.
Moodle im „Single Point of Failure“-Modus
Die eigenständige Moodle-Plattform besteht aus einem Server und allem, was auf dem Server installiert ist (der Datenbank- und Anwendungsserver an einem Ort). Oder Sie haben 2 Server, die für den Anwendungsserver und den Datenbankserver sind, wie im folgenden Bild beschrieben:
Beiden Architekturen mangelt es an Verfügbarkeit und Skalierbarkeit des Dienstes. Aus Sicht der Verfügbarkeit können Sie sich vorstellen, dass bei einem Serverausfall keine Dienste auf dem Server laufen. Wenn der Anwendungsserver oder die Datenbank abstürzt, funktioniert der Dienst nicht mehr.
Andererseits ist auch die Skalierbarkeit wichtig, mehr Benutzer bedeuten mehr Verkehr und mehr Verbindungen zur Datenbank. Skalierbarkeit kann erreicht werden, indem mehr Ressourcen in den Servern hinzugefügt werden oder mehr Server hinzugefügt werden, damit der Datenverkehr auf die Knoten verteilt werden kann, da sonst die Leistung leidet.
Konvertieren von einer eigenständigen in eine geclusterte Datenbank
Die Migration Ihres Standalone-Knotens zu einer geclusterten Datenbank kann einige Zeit dauern und ist kein risikofreier Vorgang. Unten sind die Schritte, die wir unternehmen müssen:
- Sie müssen ein Backup erstellen (verwenden Sie mysqldump oder xtrabackup).
- Installieren Sie die Datenbank in allen replizierten Datenbankknoten.
- Stellen Sie die Sicherung in den Replikatknoten wieder her.
- Verbinden Sie den Replica-Knoten mit dem Master.
- ProxySQL einrichten und vor den Datenbankknoten halten
- Konfigurieren Sie die ProxySQL-Load-Balancer (zB erstellen Sie Hostgruppen, Server, Benutzer).
- Zeigen Sie die Moodle-Konfiguration auf die neue virtuelle IP-Adresse.
Wie ClusterControl helfen kann
ClusterControl ist eine Datenbankverwaltungssoftware, mit der Sie Ihre Open-Source-Datenbank bereitstellen, überwachen und verwalten können. Wir werden versuchen, wie unten gezeigt von der eigenständigen Moodle-Architektur zu migrieren:
Auf eine geclusterte Datenbankarchitektur basierend auf Replikation:
Sie benötigen mindestens zwei Server für die Datenbank und zwei für die Datenbank Proxy (wir verwenden ProxySQL als Load Balancer) und Keepalive-Dienst zum Bereitstellen einer virtuellen IP-Adresse.
Angenommen, wir haben eine eigenständige MySQL-Datenbank am Laufen:
Das Hinzufügen weiterer Datenbankknoten in ClusterControl ist wirklich einfach, Sie können zu gehen Cluster-Menü auf der rechten Seite Ihres Clusters und Replikations-Slave hinzufügen.
Es wird ein neuer Dialog zum Hinzufügen eines neuen Slaves angezeigt, den Sie nur ausfüllen müssen die IP-Adresse und klicken Sie dann einfach auf die Schaltfläche Neuen Slave hinzufügen, wie unten gezeigt:
Wie Sie dem Screenshot entnehmen können, ist es möglich, den Slave zu „seeden“. mit Daten aus einem bestehenden Backup. Dadurch soll vermieden werden, dass alle Daten aus der laufenden Master-Datenbank gestreamt werden. Sobald die Slave-Datenbank bereitgestellt ist, wird sie mit Master-Daten gefüllt und ClusterControl stellt sicher, dass sich der Slave mit dem Master synchronisiert.
Sie können den Schritt wiederholen, um einen weiteren Replikatknoten hinzuzufügen.
Die neue Architektur sieht wie folgt aus:
Der nächste Schritt besteht darin, einen Load Balancer vor der Datenbank hinzuzufügen. Ein Load Balancer wie ProxySQL ist nützlich, da er Schreibanfragen an den Master und Leseanfragen an die Slaves umleiten kann. Auf diese Weise verteilen Sie den Moodle-Verkehr. Beachten Sie, dass es auch möglich ist, ein Master-Master-Setup basierend auf Galera Cluster for MySQL oder MariaDB durchzuführen.
Wir werden zwei Load Balancer für Hochverfügbarkeit verwenden. Sie können im Cluster zu Verwalten -> Load Balancer gehen.
Sie müssen einige Informationen wie Serveradresse, Administrator- und Überwachungskennwort eingeben, Fügen Sie den Moodle-Benutzer zu ProxySQL hinzu und klicken Sie dann einfach auf ProxySQL bereitstellen. Es wird einen neuen Job auslösen. Wiederholen Sie die Bereitstellung auf dem anderen Load Balancer-Knoten.
Als letztes müssen Sie Keepalived für die Load Balancer konfigurieren. Gehen Sie zu Manage -> Load Balancers, dort gibt es eine Registerkarte für Keepalived
Sie müssen nur den Load Balancer-Typ auswählen und ihn zu Keepalive hinzufügen . Füllen Sie die virtuelle IP-Adresse und die Netzwerkschnittstelle aus. Klicken Sie auf die Schaltfläche Keepalived bereitstellen.
Die endgültige Architektur unserer geclusterten hochverfügbaren Moodle-Datenbank wird wie unten gezeigt aussehen:
Sie müssen nur die Verbindungskonfiguration in config.php ändern, die auf den dbhost verweist an die von uns konfigurierte virtuelle IP-Adresse.
Nachdem Sie zu Clustered Database migriert sind, möchten Sie vielleicht etwas Überwachung in Ihre Moodle-Datenbank einfügen, die Sie dieser Richtlinie folgen können.