Zurück zum Blog

So konfigurieren Sie MongoDB-Replikation und automatisches Failover

So konfigurieren Sie MongoDB-Replikation und automatisches Failover

Ein Replica-Set ist definiert als ein Datenbank-Cluster aus mehreren Knoten, zwischen denen Replikation und automatisches Failover konfiguriert sind. Um sicherzustellen, dass die PRIMARY-Datenbank korrekt gewählt wird, ist es wichtig, eine ungerade Anzahl von Mitgliedern im Set zu haben (einschließlich oder ausschließlich des Arbiter-Knotens). 

Die ausgewählte Datenbank ist für alle Hauptaufgaben verantwortlich. Sie verarbeitet eingehende Schreibvorgänge und speichert deren Informationen im Oplog. Auf diese Informationen können die SECONDARY-Replika-Mitglieder zugreifen und sie replizieren, um sie auf ihre eigenen Datensätze anzuwenden. Als Ergebnis repräsentieren alle Server im Set denselben Inhalt und gewährleisten dessen Verfügbarkeit:

How to Configure MongoDB Replication and Automated Failover 1-Replica set- graphic

Betrachten Sie nun eine Situation, in der ein unerwartetes Problem (wie ein Hardware- oder Verbindungsausfall) dazu führt, dass die primäre Datenbank eine Ausfallzeit erleidet. In einem solchen Fall startet das System automatisch einen neuen Wahlprozess, um die normale Funktion ohne manuelles Eingreifen wiederherzustellen. Der Vorteil eines solchen Systems besteht darin, dass Sie das Beste aus der Replikation erhalten, wie z. B. erhöhte Verfügbarkeit, Failover-Redundanz und Disaster Recovery, ohne sich um die separate Verwaltung mehrerer Datenbanken kümmern zu müssen.

Wenn Sie ein ähnliches System einsetzen möchten, zeigt Ihnen dieses Tutorial, wie Sie ein MongoDB-Replica-Set mit der CloudSigma PaaS konfigurieren. Wie Sie in dieser Anleitung sehen werden, verwenden wir drei Mitglieder, was in der Regel ausreicht, um ein gutes Maß an Informationssicherheit und Durchsatz zur Bewältigung von E/A-Operationen für die meisten gängigen Anwendungen zu bieten. Neben der eigentlichen Konfiguration der Replikation erfahren wir auch, wie wir die Umgebung vorbereiten, die Authentifizierung zwischen den DB-Knoten einrichten und wie wir sicherstellen, dass Ihre Arbeit erfolgreich war.

Schritt 1: Erstellen Sie eine neue Umgebung

Zu Beginn benötigen Sie mindestens 3 MongoDB-Knoten, um mit der Konfiguration eines Replica-Sets zu beginnen. Erstellen Sie also eine neue Umgebung wie folgt:

2-Create an Environment How to Configure MongoDB Replication and Automated Failover

In unserem Beispiel weisen wir alle MongoDB-Instanzen der Version 4.0.2 derselben Umgebung zu. Sie können den Umgebungsnamen bei Bedarf im dafür vorgesehenen Feld ändern und mit dem Installationsprozess fortfahren.

Der nächste Schritt im Prozess befasst sich mit der Sicherheit der Kommunikation zwischen diesen Knoten unter Verwendung der Authentifizierungsschlüsseldatei.

Schritt 2: Fügen Sie eine Authentifizierungsschlüsseldatei hinzu

Die Authentifizierung ist eine kritische Komponente jeder Replikation. Es handelt sich um einen Sicherheitsgewährleistungsprozess, der einem Replica-Set-Mitglied erst dann Zugriff gewährt, wenn es sich korrekt mit einer eindeutigen Authentifizierungsschlüsseldatei identifiziert. Dies schützt Ihre Daten vor unerwünschten Zuschauern und Dritten. So können Sie Ihre eigene Authentifizierungsschlüsseldatei generieren:

  1. Klicken Sie auf die Option Web SSH für einen der Datenbankknoten und melden Sie sich an:

3- Web SSH How to Configure MongoDB Replication and Automated Failover

    2. Als Nächstes können Sie Ihre eigene Schlüsseldatei eingeben oder eine neue mit openssl unter Verwendung des folgenden Befehls generieren:

In diesem Befehl repräsentiert 741 die Schlüsselgröße in Bytes und my.key ist der Name des Schlüssels.

    3. Zeit, die neue Schlüsseldatei auf all Ihren MongoDB-Instanzen zu verteilen. So geht's:

  • Öffnen Sie den Datei-Manager durch Klicken auf die Schaltfläche Konfiguration neben einem der Datenbankknoten:

4-Click on the Config

  • Suchen Sie die Datei my.key im Konfigurations-Tab unter dem Pfad: /home/jelastic/my.key. Öffnen Sie sie und kopieren Sie den Inhalt der Datei:

5- configuration tab How to Configure MongoDB Replication and Automated Failover

  • Unter dem Pfad /var/lib/jelastic/keys finden Sie das Verzeichnis keys. Erstellen Sie eine Neue Datei, die die MongoDB-Instanzen zur gegenseitigen Authentifizierung verwenden. In unserem Fall erstellen wir eine Datei namens mongo-set.key:

6-keys directory

  • Fügen Sie den zuvor kopierten Inhalt in diese Datei ein und übernehmen Sie die Änderungen, indem Sie für alle Instanzen auf Speichern klicken:

7-Paste the clipboard content

Als Ergebnis dieses Prozesses wurde die Datei mongo-set.key auf all unseren MongoDB-Knoten verteilt.

Schritt 3: Konfigurieren Sie die MongoDB-Replikation

Nachdem wir nun die Sicherheit der Instanzen gewährleistet haben, können wir mit der eigentlichen Konfiguration des Replica-Sets fortfahren. Beginnen wir:

  1. Gehen Sie zunächst zum Konfigurations-Tab für MongoDB-Knoten und öffnen Sie die Datei mongo.conf im Verzeichnis etc-Ordner. Scrollen Sie nach unten, bis Sie den Abschnitt „replication“ finden. Kommentieren Sie ihn aus und fügen Sie die folgende Zeichenfolge mit einem eindeutigen Namen für Ihr Replica-Set hinzu. Für unser Beispiel nennen wir es db-replication:
      2. Als Nächstes fügen wir einen neuen Parameter namens keyFile im Abschnitt „security“ hinzu. Dies dient dazu, einen Pfad zur Schlüsseldatei anzugeben, die sich derzeit unter folgendem Pfad befindet: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. Klicken Sie auf die entsprechende Schaltfläche für „Speichern“ , um die Änderungen für alle Instanzen im Editorfenster zu sichern. 

      4. Jetzt müssen Sie „Restart“ (Neu starten) für alle Ihre DB-Knoten ausführen, um die neuen Konfigurationsparameter anzuwenden:

9-Restart your DB nodes How to Configure MongoDB Replication and Automated Failover

Bitte beachten Sie: Sobald Sie die Konfiguration des Replica-Sets abgeschlossen haben und entweder alle Knoten oder den PRIMARY-Knoten neu starten, beginnt während des Neustarts der Wahlprozess für die neue PRIMARY-Datenbank.

     5. Wählen Sie den MongoDB-Server aus, den Sie als PRIMARY verwenden möchten, und greifen Sie über das SSH-Protokoll darauf zu:

10-access the MongoDB server How to Configure MongoDB Replication and Automated Failover

Denken Sie daran: Sobald die PRIMARY-Datenbank gewählt wurde, sind die anderen Mitglieder des Replica-Sets nicht mehr für direkte Schreibvorgänge zugänglich. Dies bedeutet, dass alle Änderungen und Konfigurationen nur auf dem aktuellen PRIMARY-Knoten durchgeführt und angewendet werden können. Sofern Sie also keine Prioritäten eingerichtet haben, müssen Sie die Verbindungszeichenfolge in Ihrer Anwendung auf den neuen PRIMARY-Knoten ändern.

     6. Greifen Sie als Nächstes mit Ihren entsprechenden Anmeldedaten auf die replizierte Datenbank zu:

11-Access the database How to Configure MongoDB Replication and Automated Failover

In diesem Befehl:

  • {user} –bezieht sich auf den Administrator-Benutzernamen, der an Ihre E-Mail-Adresse gesendet wird (standardmäßig ist dies normalerweise „admin“).
  • {password} –dies ist das Passwort, das zusammen mit dem entsprechenden Benutzernamen an Ihre E-Mail-Adresse gesendet wurde.
  • {DB_name}- stellt den Namen der Datenbank dar, die Sie in diesem Replica-Set replizieren möchten (in unserem Beispiel verwenden wir die Standarddatenbank „admin“).

Im Falle einer Neuwahl können Sie dieselben Anmeldedaten des Admin-Benutzers verwenden, um sich bei einer neuen PRIMARY-Datenbank anzumelden.

     7. Nachdem die Verbindung hergestellt wurde, müssen Sie die folgenden Zeilen ausführen, um die Parameter für den aktuellen MongoDB-Knoten zu definieren und das Replica-Set zu initiieren:

In den obigen Zeilen ersetzen Sie die Werte in den Klammern durch Ihre eigenen entsprechenden Daten:

  • {replica_set} – dies ist der Name Ihrer replizierenden Datenbankgruppe, den Sie am Anfang dieses Abschnitts angegeben haben. In unserem Fall war dies „db-replication“.
  • {current_db_ip} – gibt die IP-Adresse des von Ihnen ausgewählten Datenbank-Containers an:

12-initiate your replica set How to Configure MongoDB Replication and Automated Failover

In unserem Fall lauten die ausgeführten Zeilen:

13-config

14-rs.initiate()

        8. Führen Sie als Nächstes den folgenden Befehl für alle verbleibenden Datenbanken aus:

Hierbei steht {db_ip} für die IP-Adresse jeder Datenbank:

15-rs.add(

       9. Sobald Sie alle Replikationsmitglieder hinzugefügt haben, erhalten Sie ein voll funktionsfähiges Replica-Set. Wir empfehlen, am Ende des Prozesses sicherzustellen, dass alles ordnungsgemäß konfiguriert wurde. Führen Sie dazu folgenden Befehl aus: rs.status(). Dies zeigt Ihnen vollständige Informationen zu Ihrem Replica-Set wie folgt an:

16-execute the rs.status()

Step 4: Set Up the ReplicaSet Arbiter

Wir empfehlen die Verwendung eines Arbiter-Knotens in bestimmten Fällen. Was ist ein Arbiter-Knoten? Typischerweise ist die Replikation zuverlässiger, wenn das Replica-Set eine ungerade Anzahl von Knoten enthält. Wenn Sie also derzeit eine gerade Anzahl von Knoten in Ihrem Set haben, können Sie einen Arbiter-Knoten hinzufügen, um ein Quorum aufrechtzuerhalten, da er auf Heartbeat- und Wahlanfragen von anderen Mitgliedern im Set antwortet. Hier sind einige Details zu Arbiter-Knoten:

  • Der Arbiter speichert keine Daten; er stimmt lediglich bei Wahlen ab, falls ein anderer Knoten ausgefallen ist.
  • Er ist sehr leichtgewichtig und verbraucht nicht zu viele Ressourcen.
  • Er tauschte Benutzeranmeldedaten zwischen verschlüsselten Replikaten aus.
  • Um die höchste Verfügbarkeit aufrechtzuerhalten, versuchen Sie, den Arbiter auf einem separaten Knoten auszuführen.

So können Sie Ihrer Replikagruppe einen Arbiter-Knoten hinzufügen:

  1. Zuerst führen wir eine horizontale Skalierung durch und fügen dem Cluster einen zusätzlichen Knoten hinzu:

17-ReplicaSet Arbiter

18-Scale out database cluster

2. Nachdem der Knoten hinzugefügt wurde, benötigen wir eine neue Schlüsseldatei. Gehen Sie in das Verzeichnis keys und erstellen Sie eine Schlüsseldatei mongo-set.key. Kopieren Sie den Inhalt des Schlüssels von einem der zuvor konfigurierten Datenbankknoten und fügen Sie ihn hier ein, wie wir es zuvor getan haben.

3. Gehen Sie zur Konfigurationsdatei mongod.conf. Heben Sie die Auskommentierung des Abschnitts „replication“ auf und fügen Sie repISetName hinzu (in unserem Fall ist es db-replication). Gehen Sie außerdem zum Abschnitt security und fügen Sie den Parameter keyFile hinzu ( /var/lib/jelastic/keys/mongo-set.key in unserem Fall).

4. Starten Sie schließlich den neuen Knoten neu, um diese neuen Konfigurationsparameter anzuwenden:

19- Restart newly

Es ist wichtig zu bedenken, dass Sie an dieser Stelle NICHT alle Knoten im Cluster neu starten müssen. Starten Sie nur den neu hinzugefügten Arbiter-Knoten neu. Ein Neustart aller Knoten führt zu einer neuen PRIMARY-Wahl (es sei denn, Sie haben Prioritäten festgelegt, um einen bestimmten Datenbankknoten als PRIMARY auszuwählen).

 5. Schließlich kann der Arbiter zur Replikagruppe hinzugefügt werden. Führen Sie dazu den folgenden Befehl auf dem PRIMARY-Knoten aus:

Hier ist {db_ip} die IP-Adresse des neuen Knotens:

20-IP address of a newly added node

 6. Nun können Sie überprüfen, ob der neue Knoten zum Arbiter geworden ist oder nicht. Sie können dies tun, indem Sie sich über SSH auf dem neuen Knoten anmelden und eine Verbindung zur MongoDB-Instanz mit den Anmeldedaten herstellen, die Sie zum Zeitpunkt der Knotenerstellung per E-Mail erhalten haben:

21-connect MongoDB instance

Dies zeigt, dass der neue Knoten, den wir gerade dem Cluster hinzugefügt haben, als Arbiter von db-replication fungiert. Dies stellt in jeder Situation ein Quorum sicher und macht die Replikagruppe zuverlässiger.

Schritt 5: Verfügbarkeit des Datenbank-Clusters testen

Als Nächstes können wir unser MongoDB-Cluster so einrichten, dass Verbindungen und Operationen aus der Ferne durchgeführt werden können. Im folgenden Beispiel werden wir eine Verbindung herstellen und einige Überprüfungsbefehle mithilfe eines einfachen PHP-Applets ausführen.

Für diesen Zweck benötigen Sie einen Anwendungsserver, wie z. B. Apache. Sie können Ihrer Umgebung einen hinzufügen, wie wir es getan haben, oder einen neuen in einer separaten Umgebung erstellen.

  1. Klicken Sie zunächst auf Change Environment Topology und fügen Sie den Server hinzu:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. Öffnen Sie die Registerkarte Configuration Manager für den Apache -Server, indem Sie auf die Schaltfläche Config klicken, wie unten gezeigt:

3. Suchen und öffnen Sie die Datei index.php im Verzeichnis /var/www/webroot/ROOT und fügen Sie den folgenden Code anstelle des Standardinhalts ein:

Die folgenden Werte im obigen Code müssen durch Ihre jeweiligen Daten ersetzt werden:

  • {replica_set_name} – Geben Sie den Namen Ihres Replica-Sets ein.
  • {db_username} – Fügen Sie den Admin-Benutzer der ausgewählten primären Datenbank hinzu (standardmäßig ist dies admin).
  • {db_password} – geben Sie das Passwort des Admin-Benutzers ein.
  • {NodeID} – geben Sie die Identifikationsnummer des entsprechenden Knotens an. Sie finden diese auf dem CloudSigma PaaS dashboard.
  • {environment_domain} – fügen Sie die Umgebungs-Domain hinzu. Sie finden diese ebenfalls auf dem CloudSigma PaaS-Dashboard:

Stellen Sie sicher, dass Sie die IDs jedes Knotens in Ihrem Replica-Set im entsprechenden mongodbConnectionURI-Bereich angeben.

Wenn Sie die entsprechenden Werte eingeben und den Code ausführen, wird Ihnen eine Reihe von Zeichenfolgen wie diese angezeigt:

Stellen Sie sicher, dass Sie die Datei an dieser Stelle speichern!

4. Damit Apache mit dem MongoDB-Server interagieren kann, ist ein spezielles Modul erforderlich. Sie können dieses Modul hinzufügen in configs. Gehen Sie zum etc-Ordner und öffnen Sie die php.ini-Datei. Suchen Sie den Bereich [mongodb] . Hier müssen Sie nur das Semikolon vor der Zeile extension=mongodb.so entfernen, um diese Erweiterung zu aktivieren:

      5. Wenden Sie die neuen Konfigurationen an, indem Sie auf Save im Editorfenster klicken. Wie immer müssen wir die Knoten neu starten, um die Änderungen zu übernehmen. Klicken Sie auf die Schaltfläche Restart Nodes neben dem Application Server, um dies zu tun:

    6. Klicken Sie nun auf die Schaltfläche Open in Browser , um es zu testen:

Durch Klicken auf dieses Symbol wird ein neuer Browser-Tab geöffnet, der alle Informationen über Ihre Replica-Set-Mitglieder/-Knoten und deren Erreichbarkeit wie folgt anzeigt:

Da wir den Befehl ping (Zeile 6 der index.php-Datei) verwendet haben, zeigt die erste Zeile das Ergebnis der Überprüfung der Verfügbarkeit des Replica-Sets an:

Dies bedeutet, dass das Replica-Set erfolgreich getestet wurde. 

Der nächste Block in den Ergebnissen zeigt detaillierte Informationen über die Replica-Set-Hosts. Diese Daten werden dank der Funktion getServers (Zeile 11 der index.php-Datei) gewonnen. In ähnlicher Weise können Sie auch einige Werte überprüfen, die während des Erstellungsprozesses dieses Replica-Sets zugewiesen wurden:

  • host – die IP-Adresse einer bestimmten Datenbank.
  • port – dies ist der Port des aktuellen Replikationsmitglieds.
  • [“is_primary”] und [“is_secondary”] – Parameter, die den Serverstatus anzeigen. Die entsprechenden Werte für den ausgewählten primären MongoDB-Server sind true, false und für zwei andere MongoDB-Server – jeweils false, true.

Darüber hinaus können Sie Datenbankknoten jederzeit starten und stoppen, um Änderungen zu verfolgen. Sie können auch die Seite aktualisieren, um dasselbe zu tun. Auf diese Weise können Sie sicherstellen, dass Ihr MongoDB-Cluster immer verfügbar, betriebsbereit und so konfiguriert ist, wie Sie es eingerichtet haben.

CloudSigma PaaS ermöglicht es seinen Nutzern, die Vorteile von Replica-Sets zu nutzen, ohne sich zu viele Gedanken über die Konfiguration und das Backend machen zu müssen. Dieses Tutorial zeigt, wie unkompliziert die Einrichtung Ihres eigenen MongoDB-Clusters in nur wenigen einfachen Schritten sein kann. Sie können mehr erfahren über MongoDB, wie Sie es für Ubuntu einrichten oder öffentliche Cloud-Server, sowie welche weiteren erweiterten Funktionen das CloudSigma PaaS zu bieten hat. Wir laden Sie auch ein, einen Testlauf des PaaS kostenlos durchzuführen, um sich mit dem dashboard und dem marketplace und deren Angeboten vertraut zu machen. 

Testen Sie PaaS 7 Tage lang kostenlos

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.