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

Monitoring &Operations Management von MongoDB 4.0 mit ClusterControl

Während MongoDB fast ein Jahrzehnt damit verbracht hat, seine Reife zu erreichen (Erstveröffentlichung im Februar 2009), ist die Technologie für diejenigen, die Erfahrung mit konventionellen relationalen Datenbankumgebungen (RDBMS) haben, ein wenig mysteriös. Die Integration von NoSQL in eine bestehende Umgebung ohne fundierte Kenntnisse kann eine Herausforderung darstellen. Es ist nicht ungewöhnlich, dass MongoDB zusammen mit MySQL oder einer anderen RDBMS-Datenbank ausgeführt wird.

Die Erfahrung mit RDBMS kann helfen, einige der Prozesse zu verstehen, aber Sie müssen wissen, wie Sie Ihr Fachwissen in die NoSQL-Welt übertragen können. Die Verwaltung von Produktionsumgebungen umfasst Schritte wie Bereitstellung, Überwachung der Verfügbarkeit und Leistung, Aufrechterhaltung der Systemsicherheit, Verwaltung von HA, Backups und so weiter. Sowohl RDBMS als auch NoSQL sind praktikable Optionen, aber es gibt bestimmte kritische Unterschiede zwischen den beiden, die Benutzer bei der Implementierung oder Verwaltung von MongoDB beachten müssen. Die Technologie ändert sich schnell und wir müssen uns schnell anpassen.

Wenn MongoDB plötzlich in Ihrer Verantwortung liegt, garantieren Verwaltungstools, dass die von Ihnen verwalteten MongoDB-Datenbanken stabil und sicher sind. Die Verwendung vordefinierter Prozesse und Automatisierung kann Ihnen nicht nur Zeit sparen, sondern auch vor häufigen Fehlern schützen. Eine Verwaltungsplattform, die alle verschiedenen Aspekte des Datenbanklebenszyklus systematisch angeht, ist robuster als das Zusammenfügen einer Reihe von Einzellösungen.

Das Herzstück von ClusterControl ist seine Automatisierungsfunktion, mit der Sie die Datenbankaufgaben automatisieren können, die Sie regelmäßig ausführen müssen, wie das Bereitstellen neuer Datenbanken, das Hinzufügen und Skalieren neuer Knoten, das Verwalten von Backups, Hochverfügbarkeit und Failover, Topologieänderungen, Upgrades und mehr. ClusterControl bietet programmierte Sicherheit und bewahrt die Integrität Ihrer Datenbankinfrastruktur. Darüber hinaus unterliegen MongoDB-Benutzer mit ClusterControl nicht mehr der Herstellerbindung; etwas, das in letzter Zeit von vielen in Frage gestellt wurde. Sie können eine Vielzahl von MongoDB-Versionen und -Anbietern kostenlos über eine einzige Konsole bereitstellen und importieren. Benutzer von MongoDB müssen oft eine Mischung aus Tools und selbst entwickelten Skripten verwenden, um ihre Anforderungen zu erfüllen, und es ist gut zu wissen, dass Sie sie in einem Produkt vereint finden können.

In diesem Artikel zeigen wir Ihnen, wie Sie MongoDB 4.0 automatisiert bereitstellen und verwalten. Wie das geht, erfahren Sie hier:

  • ClusterControl-Installation
  • MongoDB-Bereitstellungsprozess
    • Stellen Sie einen neuen Cluster bereit
    • Bestehenden Cluster importieren
  • Skalierung von MongoDB
    • Skalierung lesen (replicaSet)
    • Schreibskalierung (Sharding)
  • MongoDB sichern
  • Überwachung und Trendanalyse
  • Sicherung und Wiederherstellung

ClusterControl-Installation

Um mit ClusterControl zu starten, benötigen Sie eine dedizierte virtuelle Maschine oder einen Host. Die Anforderungen an VM und unterstützte Systeme werden hier beschrieben. Die Basis-VM kann ab 2 GB, 2 Kernen und Speicherplatz ab 20 GB Speicherplatz beginnen, entweder lokal oder in der Cloud.

Die Installation ist in der Dokumentation gut beschrieben, aber im Grunde geht es darum, das Installationsskript herunterzuladen, das Sie durch den Assistenten führt. Das Assistentenskript richtet die interne Datenbank ein, installiert die erforderlichen Pakete, Repositories und nimmt andere notwendige Optimierungen vor. Für die Umgebungen mit Internetsperre können Sie den Offline-Installationsprozess verwenden.

ClusterControl erfordert SSH-Zugriff auf die Datenbankhosts, und die Überwachung kann agentenbasiert oder ohne Agenten erfolgen. Die Verwaltung erfolgt ohne Agenten.

Das Einrichten von kennwortlosem SSH für alle Zielknoten (ClusterControl und alle Datenbankhosts) umfasst das Ausführen der folgenden Befehle auf dem ClusterControl-Server:

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

MongoDB-Bereitstellung und -Skalierung

Stellen Sie einen neuen MongoDB 4.0-Cluster bereit

Sobald wir die ClusterControl-Schnittstelle aufgerufen haben, müssen Sie zunächst einen neuen Cluster bereitstellen oder einen vorhandenen importieren. Die neue Version 1.7.1 führt die Unterstützung für Version 4.0 ein. Sie können jetzt MongoDB v4.0 mit Unterstützung für SSL-Verbindungen bereitstellen/importieren und verwalten.

Wählen Sie die Option „Datenbank-Cluster bereitstellen“ und befolgen Sie die angezeigten Anweisungen.

ClusterControl Datenbankcluster bereitstellen

Bei der Auswahl von MongoDB müssen wir Benutzer, Schlüssel oder Passwort und Port angeben, um eine Verbindung über SSH zu unseren Servern herzustellen. Wir brauchen auch den Namen für unseren neuen Cluster und wenn wir möchten, dass ClusterControl die entsprechende Software und Konfigurationen für uns installiert.

Nach Einrichtung der SSH-Zugangsdaten müssen wir die Daten für den Zugriff auf unsere Datenbank eingeben. Wir können auch angeben, welches Repository verwendet werden soll. Die Repository-Konfiguration ist ein wichtiger Aspekt für Datenbankserver und Cluster. Sie können drei Arten von Repositorys haben, wenn Sie Datenbankserver/Cluster mit ClusterControl bereitstellen:

  • Vendor Repository verwenden
    Stellen Sie Software bereit, indem Sie das bevorzugte Software-Repository des Datenbankanbieters einrichten und verwenden. ClusterControl installiert die neueste Version dessen, was vom Datenbankanbieter-Repository bereitgestellt wird.
  • Keine Anbieter-Repositories einrichten
    Stellen Sie Software bereit, indem Sie das bereits vorhandene Software-Repository verwenden, das bereits auf den Knoten eingerichtet ist. Der Benutzer muss das Software-Repository manuell auf jedem Datenbankknoten einrichten und ClusterControl verwendet dieses Repository für die Bereitstellung. Das ist gut, wenn die Datenbankknoten ohne Internetverbindung laufen.
  • Gespiegelte Repositorys verwenden (Neues Repository erstellen)
    Erstellen und spiegeln Sie das Repository des aktuellen Datenbankanbieters und stellen Sie es dann mithilfe des lokalen gespiegelten Repositorys bereit. Damit können Sie die aktuellen Versionen der Softwarepakete „einfrieren“.

Im nächsten Schritt müssen wir unsere Server dem Cluster hinzufügen, den wir erstellen werden. Beim Hinzufügen unserer Server können wir die IP oder den Hostnamen eingeben. Für letzteres müssen wir einen DNS-Server haben oder unsere MongoDB-Server zur lokalen Auflösungsdatei (/etc/hosts) unseres ClusterControl hinzugefügt haben, damit es den entsprechenden Namen auflösen kann, den Sie hinzufügen möchten. In unserem Beispiel stellen wir ein ReplicaSet mit drei Servern bereit, einem primären und zwei sekundären. Es ist möglich, nur 2 MongoDB-Knoten bereitzustellen (ohne Arbiter). Der Vorbehalt dieses Ansatzes ist kein automatisches Failover, da ein 2-Knoten-Setup anfällig für Split Brain ist. Wenn der primäre Knoten ausfällt, ist ein manuelles Failover erforderlich, um den anderen Server zum primären zu machen. Automatisches Failover funktioniert gut mit 3 Knoten und mehr. Es wird empfohlen, dass ein Replikatsatz eine ungerade Anzahl an stimmberechtigten Mitgliedern hat. Die Fehlertoleranz für eine Replikatgruppe ist die Anzahl der Mitglieder, die nicht mehr verfügbar sein können und immer noch genügend Mitglieder in der Gruppe verbleiben, um eine primäre Gruppe zu wählen. Die Fehlertoleranz für drei Mitglieder ist eins, für fünf zwei usw.

Auf derselben Seite können Sie aus verschiedenen MongoDB-Versionen wählen:

ClusteControl stellt MongoDB Version 4.0 bereit

Wenn alles eingestellt ist, drücken Sie die Bereitstellungstaste. Sie können den Status der Erstellung unseres neuen Clusters über den ClusterControl-Aktivitätsmonitor überwachen. Sobald die Aufgabe abgeschlossen ist, können wir unseren Cluster im Hauptbildschirm von ClusterControl und in der Topologieansicht sehen.

ClusterControl-Topologieansicht

Wie wir im Bild sehen können, können wir, sobald wir unseren Cluster erstellt haben, verschiedene Aufgaben darauf ausführen, wie z. B. das Konvertieren von Replikatsätzen in Shards oder das Hinzufügen von Knoten zum Cluster ClusterControl-Skalierung

Neuen Cluster importieren

Wir haben auch die Möglichkeit, einen bestehenden Cluster zu verwalten, indem wir ihn in ClusterControl importieren. Eine solche Umgebung kann durch ClusterControl oder andere Methoden wie Docker-Installation erstellt werden.

ClusterControl importiert MongoDB

Zuerst müssen wir die SSH-Zugangsdaten zu unseren Servern eingeben. Dann geben wir die Zugangsdaten zu unserer Datenbank, das Serverdatenverzeichnis und die Version ein. Wir fügen die Knoten nach IP oder Hostname hinzu, genauso wie bei der Bereitstellung, und drücken auf Importieren. Sobald die Aufgabe abgeschlossen ist, können wir unseren Cluster von ClusterControl aus verwalten.

MongoDB skalieren

Einer der Eckpfeiler von MongoDB ist, dass es auf Hochverfügbarkeit und Skalierung ausgelegt ist. Die Skalierung kann entweder vertikal durch Hinzufügen weiterer Ressourcen zum Server oder horizontal mit mehr Knoten erfolgen. Horizontale Skalierung ist das, was MongoDB gut kann, und es ist nicht viel mehr, als die Arbeitslast auf mehrere Maschinen zu verteilen. Tatsächlich verwenden wir mehrere kostengünstige Standard-Hardwareboxen, anstatt auf einen teureren Hochleistungsserver aufzurüsten. MongoDB bietet sowohl Lese- als auch Schreibskalierung, und wir werden die Unterschiede zwischen diesen beiden Strategien für Sie aufdecken. Ob Sie Lese- oder Schreibskalierung wählen, hängt ganz von der Arbeitslast Ihrer Anwendung ab:Wenn Ihre Anwendung tendenziell häufiger Daten liest als schreibt, werden Sie wahrscheinlich die Leseskalierungsfunktionen von MongoDB nutzen wollen.

Mit ClusterControl ist das Hinzufügen weiterer Server zum Cluster ein einfacher Schritt. Sie können dies über die GUI oder CLI tun. Fortgeschrittene Benutzer können ClusterControl Developer Studio verwenden und eine Ressourcenbasisbedingung schreiben, um Ihren Cluster horizontal zu erweitern.

MongoDB ReplicaSet

Sharding

Die MongoDB-Sharding-Lösung ähnelt bestehenden Sharding-Frameworks für andere große Datenbanklösungen. Es verwendet eine typische Lookup-Lösung, bei der das Sharding in einem Shard-Key definiert und die Bereiche in einer Konfigurationsdatenbank gespeichert werden. MongoDB arbeitet mit drei Komponenten, um den richtigen Shard für Ihre Daten zu finden. Eine typische fragmentierte MongoDB-Umgebung sieht folgendermaßen aus:

MongoDB-Sharding

Die erste verwendete Komponente ist der Shard-Router namens Mongos. Alle Lese- und Schreibvorgänge müssen an den Shard-Router gesendet werden, sodass alle Shards als eine einzige Datenbank für die Clientanwendung fungieren. Der Shard-Router leitet die Abfragen an die entsprechenden Shards weiter, indem er den Configserver konsultiert.

ClusterControl in Shard konvertieren

Die Shard-Verwaltung ist in MongoDB wirklich einfach. Sie können Shards online hinzufügen und entfernen, und der MongoDB-Shard-Router passt sich automatisch an das an, was Sie ihm sagen. Wenn Sie mehr darüber erfahren möchten, wie Sie Shards am besten verwalten, lesen Sie bitte unseren Blogbeitrag über die Verwaltung von MongoDB-Shards.

MongoDB sichern

Verwandte Ressourcen ClusterControl für MongoDB MongoDB-Automatisierung und -Verwaltung mit ClusterControl

MongoDB ist standardmäßig mit sehr wenig Sicherheit ausgestattet:Beispielsweise ist die Authentifizierung standardmäßig deaktiviert. Mit anderen Worten:Standardmäßig hat jeder Root-Rechte für jede Datenbank. Eine der Änderungen, die MongoDB zur Minderung von Risiken vorgenommen hat, war die Änderung der Standardbindung auf 127.0.0.1. Dies verhindert, dass es an die externe IP-Adresse gebunden ist, aber dies wird natürlich von den meisten Leuten, die es installieren, rückgängig gemacht. ClusterControl beseitigt menschliche Fehler und bietet Zugriff auf eine Reihe von Sicherheitsfunktionen, um Ihre Datenbanken automatisch vor Hacks und anderen Bedrohungen zu schützen. Wir haben zuvor ein kurzes Video mit Sicherheitstipps veröffentlicht.

Die neue Version von ClusterControl bietet SSL-Unterstützung für MongoDB-Verbindungen. Die Aktivierung von SSL fügt eine weitere Sicherheitsebene für die Kommunikation zwischen den Anwendungen (einschließlich ClusterControl) und der Datenbank hinzu. MongoDB-Clients öffnen verschlüsselte Verbindungen zu den Datenbankservern und überprüfen die Identität dieser Server, bevor sie vertrauliche Informationen übertragen.

Um die SSL-Verbindung zu aktivieren, müssen Sie den neuesten s9s-Client verwenden. Sie können es mit

installieren
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh

Oder befolgen Sie andere mögliche Installationsmethoden, die hier beschrieben sind.

Sobald Sie die s9s-Tools installiert haben (Mindestversion 1.7-93.1), können Sie das Flag --enable-ssl verwenden, um die SSL-Verbindung zu aktivieren.

Beispiel unten:

[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 &&  runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.

ClusterControl führt alle notwendigen Schritte aus, einschließlich der Zertifizierungserstellung auf allen Cluster-Knoten. Solche Zertifikate können später im Register Schlüsselverwaltung gepflegt werden.

ClusterControl-Schlüsselverwaltung

Überwachung

Wenn Sie mit Datenbanksystemen arbeiten, sollten Sie diese überwachen können. So können Sie Trends erkennen, Upgrades oder Verbesserungen planen oder effektiv auf auftretende Probleme oder Fehler reagieren.

ClusterControl MongoDB-Übersicht

Das neue ClusterControl 1.7.1 fügt hochauflösendes Monitoring für MongoDB-basiert hinzu. Es verwendet Prometheus als Datenspeicher mit der PromQL-Abfragesprache. Die Liste der Dashboards umfasst die Dashboards MongoDB Server, MongoDB ReplicaSet, System Overview und Cluster Overview. ClusterControl installiert Prometheus-Agenten, konfiguriert Metriken und verwaltet den Zugriff auf die Prometheus-Exporterkonfiguration über seine GUI, sodass Sie die Parameterkonfiguration wie Collector-Flags für die Exporter (Prometheus) besser verwalten können. Wir haben im Artikel Wie man MongoDB mit Prometheus &ClusterControl überwacht

detailliert beschrieben, was seit kurzem überwacht werden kann ClusterControl MongoDB SCUMM-Dashboards

Warnung

Als Datenbankbetreiber müssen wir informiert werden, wenn etwas Kritisches in unserer Datenbank passiert. Die drei Hauptmethoden in ClusterControl, um eine Warnung zu erhalten, umfassen:

  • E-Mail-Benachrichtigungen
  • Integrationen
  • Berater

Sie können die E-Mail-Benachrichtigungen auf Benutzerebene festlegen. Gehen Sie zu Einstellungen> E-Mail-Benachrichtigungen. Wo Sie zwischen Kritikalität und Art der zu sendenden Warnung wählen können.

Die nächste Methode ist die Verwendung von Integrationsdiensten. Dies dient dazu, die spezifische Kategorie von Ereignissen an andere Dienste wie ServiceNow-Tickets, Slack, PagerDuty usw. weiterzugeben, damit Sie erweiterte Benachrichtigungsmethoden und Integrationen innerhalb Ihrer Organisation erstellen können.

ClusterControl-Integrationsdienste

Die letzte besteht darin, eine ausgeklügelte Metrikanalyse in den Advisor-Bereich einzubeziehen, in der Sie intelligente Prüfungen und Trigger erstellen können. Ein Beispiel hierfür könnte eine Vorhersage der Speicherplatznutzung oder eine Cluster-Skalierung sein, indem Knoten hinzugefügt werden, wenn die Arbeitslast das voreingestellte Niveau erreicht.

ClusterControl Advisors für MongoDB

Sicherung und Wiederherstellung

Nachdem Sie Ihr MongoDB-Replikat eingerichtet und ausgeführt und Ihre Überwachung eingerichtet haben, ist es Zeit für den nächsten Schritt:Stellen Sie sicher, dass Sie über eine Sicherungskopie Ihrer Daten verfügen.

ClusterControl Sicherungsrichtlinie erstellen

ClusterControl bietet eine Schnittstelle für das MongoDB-Backup-Management mit Unterstützung für Planung und kreative Berichte. Es gibt Ihnen zwei Optionen für Backup-Methoden.

  • Mongodump
  • Konsistente Mongodb-Sicherung

Mongodump speichert alle Daten im binären JSON-Format (BSON) am angegebenen Speicherort. Mongorestore kann später die BSON-Dateien verwenden, um Ihre Datenbank wiederherzustellen. Die konsistente Sicherung von ClusterControl MongoDB enthält die Transaktionen aus dem Oplog, die während der Sicherung ausgeführt wurden.

ClusterControl-Sicherungsverschlüsselung

Eine gute Sicherungsstrategie ist ein kritischer Bestandteil jedes Datenbankverwaltungssystems. ClusterControl bietet viele Optionen für Backups und Recovery/Restore.

ClusterControl Sicherungszeitplansteuerung

Die Aufbewahrung von ClusterControl-Backups 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 Rogue-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.