MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So stellen Sie MongoDB für Hochverfügbarkeit bereit

Einführung

MongoDB bietet hervorragende Unterstützung für Hochverfügbarkeit durch ReplicaSets. Die Bereitstellung eines ReplicaSets reicht jedoch für ein produktionsbereites System nicht aus. Letzteres erfordert ein wenig Planung. Die Bereitstellung ist nur der erste Schritt. Anschließend müssen wir die Betriebsteams mit Überwachungs-, Warn-, Sicherheits-, Anomalie- oder Fehlererkennung, automatischer Wiederherstellung/Failover, Sicherungsverwaltung und anderen Tools ausstatten, um die Umgebung am Laufen zu halten.

Voraussetzungen

Bevor Sie mit Ihrer MongoDB-Bereitstellung mit ClusterControl beginnen können, sind einige Vorbereitungen erforderlich. Die unterstützten Plattformen sind RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS und Debian 7.x/8.x. Die minimalen Anforderungen an die Betriebssystemressourcen sind 2 GB RAM, 2 CPU und 20 GB Speicherplatz auf x86 die Architektur. ClusterControl selbst kann auf regulären VMs oder Barebone-Hosts ausgeführt werden, die vor Ort, hinter einer Firewall oder auf Cloud-VMs ausgeführt werden.

Darüber hinaus erfordert ClusterControl das Öffnen/Aktivieren von Ports, die von den folgenden Diensten verwendet werden:
ICMP (Echo Reply/Request)
SSH (Standard ist 22)
HTTP (Standard ist 80)
HTTPS (Standard ist 443)
MySQL (Standard ist 3306) (interne Datenbank)
CMON RPC (Standard ist 9500)
CMON RPC TLS (Standard ist 9501)
CMON Events (Standard ist 9510)
CMON SSH (Standard ist 9511)
CMON Cloud (Standard ist 9518)

Streaming-Port für Backups über netcat (Standard ist 9999)

Der einfachste und bequemste Weg, ClusterControl zu installieren, ist die Verwendung des von Multiplenines bereitgestellten Installationsskripts. Laden Sie einfach das Skript herunter und führen Sie es als Root-Benutzer oder Benutzer mit sudo-Root-Berechtigung aus. Wenn Sie einen manuelleren Ansatz benötigen, zum Beispiel wenn Ihre Server völlig ohne Internetzugang sind, können Sie den Anweisungen in der ClusterControl-Dokumentation folgen.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Folgen Sie dem Installationsassistenten, der Sie durch die Einrichtung eines internen ClusterControl-Datenbankservers und seiner Anmeldeinformationen, des cmon-Passworts für die Verwendung von ClusterControl usw. führt. Nach Abschluss der Installation sollten Sie die folgende Zeile erhalten:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Der nächste Schritt besteht darin, einen SSH-Schlüssel zu generieren, mit dem wir später das passwortlose SSH einrichten. Wenn Sie ein Schlüsselpaar haben, das Sie verwenden möchten, können Sie die Erstellung eines neuen überspringen.

Sie können jeden Benutzer im System verwenden, aber er muss Superuser-Operationen (sudoer) ausführen können. In diesem Beispiel haben wir den Root-Benutzer ausgewählt:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Richten Sie passwortloses SSH zu allen Knoten ein, die Sie über ClusterControl überwachen/verwalten möchten. In diesem Fall richten wir dies auf allen Knoten im Stapel ein (einschließlich des ClusterControl-Knotens selbst). Führen Sie auf dem ClusterControl-Knoten die folgenden Befehle aus, um SSH-Schlüssel zu kopieren, und geben Sie das Root-Passwort an, wenn Sie dazu aufgefordert werden:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Sie können dann überprüfen, ob es funktioniert, indem Sie den folgenden Befehl auf dem ClusterControl-Knoten ausführen:

$ ssh [email protected] "ls /root"

Stellen Sie sicher, dass Sie das Ergebnis des obigen Befehls sehen können, ohne ein Passwort eingeben zu müssen.
Wenn die Installation abgeschlossen ist, sollten Sie sich über

bei der Weboberfläche anmelden können
https://<your_vm_name>/clustercontrol/#

Nach der ersten Anmeldung sehen Sie ein Fenster mit Optionen, um mit Ihrer ersten Bereitstellung zu beginnen oder einen vorhandenen Cluster zu importieren.

ClusterControl Vorhandenen Cluster bereitstellen und importieren

Repositories konfigurieren

Bevor wir mit der Bereitstellung beginnen, werfen wir einen Blick auf das Paketverwaltungssystem. Der ClusterControl-Bereitstellungsprozess unterstützt den gesamten Prozess der Clusterinstallation. Dazu gehören Betriebssystemanpassungen sowie das Herunterladen und Installieren von Paketen. Wenn Ihre Datenbankknoten eingeschränkten Zugriff auf das Internet haben und Sie Pakete nicht direkt vom Knoten herunterladen können, können Sie direkt auf dem ClusterControl-Host ein Paket-Repository erstellen.

ClusterControl-Paket-Repository

Es gibt drei Möglichkeiten, MongoDB-Pakete in ClusterControl zu verwalten.

Verwenden Sie Anbieter-Repositorys

Installieren Sie die Software, indem Sie das bevorzugte Software-Repository des Datenbankanbieters einrichten und verwenden. ClusterControl installiert die neueste Version dessen, was im MongoDB-Repository gespeichert ist.

Keine Anbieter-Repositorys einrichten

Installieren Sie die Software, indem Sie das bereits vorhandene Software-Repository verwenden, das bereits auf dem Betriebssystem eingerichtet ist. Der Benutzer muss das Software-Repository manuell auf jedem Datenbankknoten einrichten, und ClusterControl verwendet dieses Repository für die Paketbereitstellung. Dies ist gut, wenn die Datenbankknoten ohne Internetverbindungen ausgeführt werden und Ihr Unternehmen über ein externes Paketsystem mit MongoDB-Paketen verfügt.

Gespiegelte Repositorys verwenden (Neues Repository erstellen)

Erstellen und spiegeln Sie das Repository des aktuellen Anbieters und stellen Sie es dann mit dem lokalen gespiegelten Repository bereit. Außerdem können Sie die neuesten Versionen der Softwarepakete, die zum Bereitstellen eines Datenbank-Clusters für einen bestimmten Anbieter verwendet werden, „einfrieren“ (d. h. nur Percona-Pakete verwenden).

ClusterControl automatisiert die Erstellung des internen Paket-Repositorys

ReplicaSet bereitstellen

ClusterControl unterstützt MongoDB/Percona Server für MongoDB 3.x ReplicaSet. Um mit der Bereitstellung des neuen Clusters zu beginnen, gehen Sie zur Bereitstellungsoption in der oberen rechten Ecke. Verwenden Sie bei der Installation Ihrer Datenbankknoten immer saubere und minimale VMs. Vorhandene Paketabhängigkeiten können bei Bedarf entfernt werden. Neue Pakete werden installiert und vorhandene Pakete können entfernt werden, wenn der Knoten mit der erforderlichen Software bereitgestellt wird.

Der allererste Schritt des Bereitstellungsprozesses besteht darin, ssh-Anmeldeinformationen bereitzustellen, die für die Hosts geeignet sind, auf denen Sie Ihren Cluster bereitstellen. Da ClusterControl passwortloses ssh verwendet, um sich mit Ihren Hosts zu verbinden und diese zu konfigurieren, ist ein ssh-Schlüssel erforderlich.

ClusterControl stellt den MongoDB-Cluster-Assistenten bereit

Es ist ratsam, ein nicht privilegiertes Benutzerkonto zu verwenden, um sich bei den Hosts anzumelden, damit ein sudo-Passwort bereitgestellt werden kann, um Verwaltungsaufgaben zu erleichtern. Wenn das Benutzerkonto nicht zur Eingabe eines sudo-Passworts auffordert, ist dies nicht erforderlich. Sie haben auch die Möglichkeit, iptables und AppArmor oder SELinux auf dem Host zu deaktivieren, um das Problem bei der anfänglichen Bereitstellung zu vermeiden.

Auf dem folgenden Bildschirm können Sie wählen, ob Sie MongoDB-Binärdateien entweder von MongoDB Inc oder von Percona installieren möchten. Auch hier müssen Sie Ihr administratives MongoDB-Benutzerkonto und -Kennwort angeben, da die Sicherheit auf Benutzerebene vorgeschrieben ist.

ClusterControl-Bereitstellungsassistent für MongoDB, ReplicaSet

Auf diesem Bildschirm können Sie auch sehen, welche Konfigurationsvorlage verwendet wird. ClusterControl verwendet Konfigurationsdateivorlagen, um wiederholbare Bereitstellungen sicherzustellen. Vorlagen werden auf dem ClusterControl-Host gespeichert und können direkt über die Befehlszeile oder über die ClusterControl-Benutzeroberfläche bearbeitet werden. Sie können auch die Anbieter-Repositorys verwenden, wenn Sie dies wünschen, oder Ihr eigenes Repository auswählen. Außerdem können Sie automatisch ein neues Repository auf dem ClusterControl-Host erstellen. Dadurch kann die Version von MongoDB, die ClusterControl für die aktuelle Version bereitstellt, eingefroren werden. Nachdem Sie hier die entsprechende Konfiguration vorgenommen haben, klicken Sie auf Bereitstellen, um fortzufahren.

Sharding bereitstellen

ClusterControl kann auch Sharded Cluster bereitstellen. Dabei werden zwei Methoden unterstützt. Zunächst können Sie ein vorhandenes MongoDB-ReplicaSet wie unten gezeigt in einen Sharded-Cluster konvertieren.

ClusterControl Stellen Sie MongoDB-Shards bereit

Wenn Sie auf „Convert to Shard“ klicken, werden Sie aufgefordert, mindestens einen Konfigurationsserver (für Produktionsumgebungen sollten Sie drei hinzufügen) und einen Router hinzuzufügen, der auch als „Mongos“-Prozess bekannt ist. Im letzten Schritt wählen Sie Ihre MongoDB-Konfigurationsvorlagen für Konfigurationsserver und Router sowie Ihr Datenverzeichnis aus. Klicken Sie abschließend auf Bereitstellen. Wenn Sie fertig sind, wird es in Ihrer Datenbank-Cluster-Ansicht angezeigt. Es zeigt Ihre Shard-Gesundheit anstelle einzelner Instanzen an. Es ist auch möglich, bei Bedarf zusätzliche Shards hinzuzufügen.

In Shard umwandeln

Wenn Sie auf Skalierungsprobleme stoßen, können Sie dieses ReplicaSet skalieren, indem Sie entweder weitere Secondaries hinzufügen oder durch Sharding aufskalieren. Sie können ein vorhandenes ReplicaSet in einen Sharding-Cluster konvertieren, aber dies ist ein langwieriger Prozess, bei dem Sie leicht Fehler machen können. In ClusterControl haben wir diesen Prozess automatisiert, wobei wir automatisch die Konfigurationsserver und Shard-Router hinzufügen und Sharding aktivieren.

Um ein ReplicaSet in einen Sharding-Cluster umzuwandeln, können Sie es einfach über das Drop-down-Menü Aktionen auslösen:

ClusterControl In Shard konvertieren

Sicherungsrichtlinie planen

Es ist wichtig, die Sicherung Ihrer Datenbank aufzubewahren und dass Ihre Datenbank über einen guten und einfachen Prozess für die Sicherung verfügt. ClusterControl bietet Unterstützung für vollständig konsistente Sicherungen und Wiederherstellungen Ihres MongoDB-Replikatsatzes oder Sharding-Clusters.

Backups können manuell erstellt oder geplant werden. Die Zentralisierung von Backups wird unterstützt, wobei Backups entweder auf dem Dateisystem des Controllers gespeichert werden, einschließlich im Netzwerk bereitgestellter Verzeichnisse, oder auf einen vorkonfigurierten Cloud-Anbieter hochgeladen werden – derzeit unterstützte Anbieter sind Google Cloud Platform, Amazon Web Services und Microsoft Azure. Auf diese Weise können Sie die erweiterten Lebenszyklusverwaltungsfunktionen, die von Amazon und Google bereitgestellt werden, voll ausschöpfen, unter anderem für Funktionen wie benutzerdefinierte Aufbewahrungszeitpläne, Langzeitarchivierung und Verschlüsselung im Ruhezustand.

Backup-Aufbewahrung ist konfigurierbar; Sie können wählen, ob Sie Ihre Sicherung für einen beliebigen Zeitraum aufbewahren oder Sicherungen nie löschen möchten. AES256-Verschlüsselung wird verwendet, um Ihre Backups vor bösartigen Elementen zu schützen.

Für eine schnelle Wiederherstellung können Backups direkt im Backup-Cluster wiederhergestellt werden – ClusterControl übernimmt den vollständigen Wiederherstellungsprozess vom Start bis zur Cluster-Wiederherstellung und entfernt fehleranfällige manuelle Schritte aus dem Prozess.

Betriebsberichte aktivieren

Mit ClusterControl können Sie umgebungsübergreifende Berichte wie „Daily System Report“, „Package Upgrade Report“, „Schema Change Report“ sowie „Backups“ und „Availability“ planen. Diese Berichte helfen Ihnen dabei, Ihre Umgebung sicher und betriebsbereit zu halten. Sie sehen auch Empfehlungen zum Beheben von Lücken. Berichte im HTML-Format können per E-Mail an SysOps, DevOps oder sogar Manager gesendet werden, die regelmäßige Statusaktualisierungen über den Zustand eines bestimmten Systems erhalten möchten.

Leistungsberater

Berater bieten spezifische Ratschläge zur Lösung von Problemen in Bereichen wie Leistung, Sicherheit, Protokollverwaltung, Konfiguration, Speicherplatz und anderen. ClusterControl wird mit einer Liste vordefinierter Berater geliefert, die den Status verschiedener Metriken und den Status Ihrer Datenbanken verfolgen sollen. Bei Bedarf wird ein Alarm erstellt. Sie können mit manuellen Skripten erweitert werden. Weitere Informationen finden Sie in unserem kürzlich erschienenen Blog zum Thema „Automatisieren der Datenbank-Workload-Analyse mit ClusterControl Performance Advisors“.

Unter den verschiedenen Leistungsratgebern für Betriebssysteme finden Sie die folgenden zu MongoDB.

MongoDB Sharding-Berater
verwendete Verbindungen
Replikationsprüfung
Replikationsfenster

In der Cloud bereitstellen

Ab Version 1.6 können Sie mit ClusterControl MongoDB 3.4 ReplicaSets in der Cloud erstellen. Die unterstützten Cloud-Plattformen sind Amazon AWS, Google Cloud und Microsoft Azure.

Der Assistent führt Sie an einem Ort durch die Erstellung der VM-Maschine und die MongoDB-Einstellungen.

ClusterControl stellt MongoDB ReplicaSet in der Cloud bereit

Bei diesem Vorgang können Sie die Betriebssystemparameter einschließlich der Netzwerkeinrichtung auswählen. SSH-Schlüssel müssen nicht kopiert werden, sie werden automatisch hinzugefügt. Nachdem die Arbeit erledigt ist, sehen Sie Ihren Cluster im Haupt-Dashboard. Ab sofort können Sie Ihren MongoDB-Cluster wie jeden anderen in ClusterControl verwalten.

ClusterControl stellt MongoDb RelicaSet in der Cloud bereit, VM-Netzwerkeinstellungen

Sicherheitstipps

An diesem Punkt sollte Ihr neuer Cluster betriebsbereit sein. Bevor Sie Benutzern und Anwendungsprozessen den Zugriff auf Daten erlauben, müssen Sie Cluster-Sicherheitseinstellungen definieren. In unseren vorherigen Blogs haben wir Bedenken hinsichtlich der Standardsicherheitskonfiguration geäußert. Hier sind einige der wichtigsten Dinge, die Sie beachten müssen, bevor Sie Ihren neuen Cluster an andere Teams weitergeben.

Standardports ändern - Standardmäßig bindet MongoDB an Standardports:27017 für MongoDB-ReplicaSets oder Shard-Router, 27018 für Shards und 27019 für Konfigurationsserver. Die Verwendung von Standardports wird nicht empfohlen, da dies die Möglichkeit eines Hackerangriffs vereinfacht.

Authentifizierung aktivieren - Ohne Authentifizierung können sich Benutzer ohne Passwort anmelden. Aktivieren Sie die Authentifizierung in all Ihren Umgebungen (Entwicklung, Zertifizierung und Produktion).

security:
    Authentication: on

Verwenden Sie sichere Passwörter - Verwenden Sie bei Bedarf einen Passwortgenerator, um komplexe Passwörter zu generieren.

Replikationsschlüsseldatei hinzufügen - Bei aktivierter Schlüsseldatei wird die Authentifizierung des Replikationsstroms verschlüsselt.

Verschlüsseln Sie Ihre Sicherungen - ClusterControl ermöglicht Ihnen, Ihre Backups zu verschlüsseln.

Zur weiteren Lektüre haben wir einen Blog zum Sichern von MongoDB.

Automatische Clusterwiederherstellung aktivieren

Das letzte, aber nicht zuletzt zu aktivierende Feature wäre die automatische Wiederherstellung von Knoten und Clustern.

ClusterControl kann für Sie als erweitertes 24/7-DBA-Teammitglied arbeiten. Hier gibt es zwei Hauptfunktionen. Automatische Knotenwiederherstellung und automatische Clusterwiederherstellung.

Wenn die automatische Knotenwiederherstellung aktiviert ist, reagiert ClusterControl auf Knotenprobleme und versucht im Fehlerfall, einzelne Knoten wiederherzustellen. Dies soll Dinge wie einen Prozess ansprechen, der über Speicher läuft, oder einen Dienst, der nach einem Stromausfall gestartet werden muss, was auch immer ein Problem mit dem Ausfall des Dienstes verursacht.

Die Cluster-Recovery-Option ist sogar noch ausgefeilter. Es führt bei Bedarf eine Umschaltung durch.

In diesem Fall wird das Zurücksetzen aller Änderungen, die nicht auf die Slaves repliziert wurden, in einem „Rollback“-Ordner abgelegt, sodass es Sache des Administrators ist, sie wiederherzustellen.

Um die automatische Wiederherstellung von Knoten und Clustern einzurichten, müssen Sie sie nur im Haupt-Dashboard aktivieren.