Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aufbau einer hochverfügbaren Datenbank für Moodle mit MySQL-Replikation

Moodle ist ein Open-Source-Lernmanagementsystem, das von Schulen und Universitäten auf der ganzen Welt weit verbreitet ist. Das Projekt wurde 2002 von Martin Dougiamas mit dem Ziel gestartet, Lernenden, Lehrern und Pädagogen eine sichere, robuste, offene und kostenlose Plattform für Lernumgebungen bereitzustellen.

Die Software selbst ist in PHP geschrieben und unterstützt verschiedene RDBMS, wie z. B.:Oracle, MySQL, PostgreSQL, MariaDB usw.

In diesem Blog werden wir erörtern, wie die Moodle-Datenbank mit der MySQL-Replikation belastbar gemacht werden kann, was zur Unterstützung einer Moodle-Bereitstellung mit hoher Verfügbarkeit erforderlich ist. Wir werden über ClusterControl ein Datenbank-Setup bereitstellen, das aus einer Master/Slave-MySQL-Replikation besteht, die von redundanten Datenbank-Load-Balancern flankiert wird.

Architektur

MySQL-Replikation ist eine beliebte Methode, um Redundanz für die Datenbank zu erreichen. Es ist wichtig sicherzustellen, dass alle Schreibvorgänge an den Master gesendet werden, während Lesevorgänge zwischen den Slaves ausgeglichen werden können. Dazu verwenden wir ProxySQL, einen datenbankfähigen Load Balancer, der den Schreibverkehr aufteilt und an den Master sendet. Da die Master-Rolle beispielsweise bei einem Datenbankabsturz auf einen anderen Server verschoben werden kann, kann ProxySQL den neuen Master verfolgen und sicherstellen, dass der Schreibverkehr entsprechend weitergeleitet wird. Eine VirtualIP wird von Keepalived verwaltet, um einen stabilen Datenbankendpunkt für alle Moodle-Anwendungsserver sicherzustellen.

Überwachung und Failover-Verwaltung

Im obigen Diagramm schlagen wir zwei Replikate vor, die von der Master-Datenbank abhängig sind. Im Falle eines Master-Absturzes wird eine der Repliken zum neuen Master befördert. Es wird immer noch ein Replikat übrig bleiben, um Dinge wie Lesevorgänge, Sicherungen, Berichterstellung usw. zu handhaben. 

Die Anwendungsverbindung verwendet eine VIP (virtuelle IP-Adresse) in der Datenbank-Verbindungszeichenfolge. Wenn also etwas auf der Datenbankseite passiert, werden die Auswirkungen Ihrer Anwendung minimiert und Sie müssen nicht neu konfigurieren irgendetwas. ClusterControl ist die Komponente, die die Datenbanken im Auge behält und Failover automatisiert, zum Beispiel die Heraufstufung einer der Repliken auf einen neuen Master und die Wiederherstellung des ausgefallenen Datenbankservers.

Datenbankeinrichtung

Wir werden ClusterControl verwenden, um unser Datenbank-Setup bereitzustellen.

Zunächst benötigen Sie einen dedizierten Server für die Einrichtung von ClusterControl. Die Installation ist sehr einfach, Sie müssen nur install-cc aus dem Repository von multiplenines herunterladen, die Ausführungsberechtigung für die Datei erteilen und sie ausführen. Wie unten gezeigt:  

$ wget http://www.severalnines.com/downloads/cmon/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Sie können obiges Skript in jeder Art von Linux-Variante ausführen. Es wird alles bereitstellen, was von ClusterControl benötigt wird.

Sobald Sie ClusterControl eingerichtet und ausgeführt haben, wählen Sie im ClusterControl-Dashboard die Schaltfläche Bereitstellen.

 

Es wird eine neue Seite mit einigen Optionen angezeigt. Wir wählen die erste Bereitstellungsoption für unser MySQL-Replikations-Setup.

Sie müssen über SSH Zugriff auf den Zieldatenbankserver haben. Vergessen Sie nicht, passwortloses SSH zu aktivieren und dem Benutzer sudo-Zugriff zu gewähren. Definieren Sie den Clusternamen und klicken Sie wie unten gezeigt auf Weiter:

Auf der nächsten Seite müssen Sie den Anbieter der Datenbank auswählen, Version der Datenbank, die Sie installieren möchten, das Root-Passwort, den Server-Port, wenn Sie benutzerdefinierte oder spezifische Ports haben möchten, und das MySQL-Datenverzeichnis.

Nachdem alle Informationen ausgefüllt wurden, können Sie mit dem nächsten Schritt fortfahren, Dies ist die Seite Topologie definieren. Bitte geben Sie die IP-Adresse des Datenbankservers ein, in diesem Fall, da wir die MyQL-Replikation mit 1 Master und 2 Replicas eingerichtet haben.

Bereitstellen löst jetzt einen Job aus, der „Cluster erstellen“ wird, Sie gerade müssen warten, bis der Auftrag abgeschlossen ist.

ProxySQL-Setup

Nachdem die Datenbank bereitgestellt wurde, können Sie den Load Balancer von Ihrem Cluster-Menü aus durchlaufen. Bitte gehen Sie zu Verwalten -> Load Balancer. Es wird wie folgt angezeigt:

Für die Bereitstellung von ProxySQL müssen Sie einige Informationen eingeben, z. B. die IP-Adresse, wo Sie möchten ProxySQL installieren, ein Passwort für die Verwaltung und Überwachung von Benutzern und die Instanz für den Lastausgleich aktivieren. Klicken Sie danach einfach auf Bereitstellen. Für Hochverfügbarkeit benötigen Sie mindestens 2 Load Balancer, die vor der Datenbank installiert sind.

Keepalived-Setup

Der Keepalived-Dienst wird verwendet, um Ihren Load Balancer hochverfügbar zu machen. Die Einrichtung ist wirklich einfach, immer noch auf der Load Balancer-Seite gibt es eine Registerkarte für Keepalived, wie unten gezeigt:

Wählen Sie die Art der Load-Balancer-Bereitstellung, in diesem Fall verwenden wir ProxySQL, Wählen Sie den ProxySQL-Dienst für Keepalived aus. Geben Sie die virtuelle IP-Adresse und die Netzwerkschnittstelle ein. Klicken Sie danach einfach auf Keepalived bereitstellen, es wird automatisch ein neuer Job zum Einrichten des Dienstes ausgelöst.

Anwendungs-Setup

Bevor Sie die Moodle-Anwendung einrichten, müssen Sie die Benutzeranmeldeinformationen und die Datenbank selbst vorbereiten. Für die Anmeldeinformationen gehen Sie zu:Manage -> Schemas and Users.

Sie müssen einige Informationen eingeben, z. B.:Benutzername, Passwort, Hostname und Privileg. Klicken Sie danach einfach auf Benutzer erstellen. Damit können Sie einen Benutzer für die Moodle-Anwendung erstellen:

Zum Erstellen der Datenbank können Sie die Registerkarte „Datenbank erstellen“ auswählen Seite als Benutzer.

Der nächste Schritt ist die Konfiguration der Anmeldeinformationen auf der ProxySQL-Seite, die Sie importieren können Anmeldeinformationen, die Sie in ProxySQL erstellt haben. Sie können zum ProxySQL-Knoten gehen, die Registerkarte Benutzer auswählen, auf der rechten Seite befindet sich die Schaltfläche Benutzer importieren.

Suchen Sie den Benutzer moodle_application und wählen Sie dann den Benutzer aus. Auf der nächsten Seite müssen Sie die Standard-Hostgruppe für den Benutzer definieren und dann Benutzer importieren.

Bitte wiederholen Sie die Schritte, um die Benutzer auf dem anderen ProxySQL-Knoten zu importieren, oder Sie können das Sync-Instanzen im ProxySQL-Menü verwenden.

Sie müssen die Moodle-Anwendung von der offiziellen Moodle-Website herunterladen (siehe https ://download.moodle.org/), die neueste Version zum Zeitpunkt der Erstellung dieses Blogs ist 3.9.1. Sie bieten zwei Arten von komprimierten Dateien, die zip-komprimierte und die tar-zip-Datei. Laden Sie die ZIP-Datei herunter und legen Sie die Datei auf Ihren Anwendungsservern ab. Überprüfen Sie die Anforderungen für Moodle-Software, dh:Webserver, PHP-Bibliothek.

Extrahieren Sie die ZIP-Dateien in das Temp-Verzeichnis, erstellen Sie das Verzeichnis /var/www/html/moodle, kopieren Sie das extrahierte Verzeichnis in den Ordner. Vergessen Sie nicht, die Berechtigung 0755 für das Verzeichnis zu erteilen. Danach können Sie für die nächste Einrichtung auf den Webbrowser zugreifen. Wählen Sie die Sprache wie unten gezeigt aus:

Wählen Sie den Datenbanktreiber für Ihr MySQL-Setup wie folgt aus:

Sie müssen einige Datenbankanmeldeinformationen eingeben, die Sie zuvor erstellt haben, z Beispiel:Benutzername, Passwort, Host, Datenbank, Port. Der Hostname sollte Ihre virtuelle IP-Adresse sein und der Port ist ProxySQL-Port, also 6032.

Der Datenbankhost wäre Ihre virtuelle IP-Adresse. Nachdem Sie die Felder ausgefüllt haben, klicken Sie auf Weiter und dann sind Sie fertig.

Das Erstellen einer hochverfügbaren Datenbank für Moodle mit ClusterControl ist sehr einfach und unkompliziert. Sie können Ihre eigene Datenbank erstellen, die Ihre 99,99-prozentige Betriebszeit unterstützt.