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

Automatisierung von MongoDB mit SaltStack

Die Datenbankbereitstellung für eine Vielzahl von Servern wird mit der Zeit immer komplexer und zeitaufwändiger, wenn neue Ressourcen hinzugefügt oder Änderungen vorgenommen werden. Darüber hinaus besteht die Wahrscheinlichkeit menschlicher Fehler, die zu katastrophalen Ergebnissen führen können, wenn das System manuell konfiguriert wird.

Ein Tool zur Automatisierung der Datenbankbereitstellung ermöglicht es uns, eine Datenbank auf mehreren Servern bereitzustellen, von Entwicklungs- bis hin zu Produktionsumgebungen. Die Ergebnisse einer automatisierten Bereitstellung sind zuverlässig, effizienter und vorhersehbar und liefern außerdem die aktuellen Zustandsinformationen Ihrer Knoten, die weiter verwendet werden können, um Ressourcen zu planen, die Sie Ihren Servern hinzufügen müssen. Mit einer gut verwalteten Bereitstellung verbessert sich die Produktivität sowohl der Entwicklungs- als auch der Betriebsteams, wodurch das Unternehmen in die Lage versetzt wird, sich schneller zu entwickeln, mehr zu erreichen, und aufgrund der einfachen, häufigen Bereitstellung wird das gesamte Software-Setup letztendlich besser sein und zuverlässig für Endbenutzer funktionieren.

MongoDB kann manuell bereitgestellt werden, aber die Aufgabe wird immer umständlicher, wenn Sie einen Cluster mit vielen Mitgliedern konfigurieren müssen, die auf verschiedenen Servern gehostet werden. Wir müssen uns also für ein Automotive-Tool entscheiden, das uns den Stress ersparen kann. Zu den verfügbaren Tools, die verwendet werden können, gehören Puppet, Chef, Ansible und SaltStack.

Die Hauptvorteile der Bereitstellung Ihrer MongoDB mit einem dieser Tools sind:

  1. Zeitersparnis. Stellen Sie sich vor, Sie haben 50 Knoten für Ihre Datenbank und Sie müssen die MongoDB-Version für jeden aktualisieren. Dies wird ewig dauern, bis Sie den Prozess durchlaufen. Bei einem automatischen Tool müssen Sie jedoch nur einige Anweisungen schreiben und einen Befehl ausgeben, um den Rest des Updates für Sie zu erledigen. Entwickler haben dann Zeit, an neuen Funktionen zu arbeiten, anstatt manuelle Bereitstellungen zu reparieren.
  2. Reduzierte Fehler und somit Kundenzufriedenheit. Das Durchführen neuer Updates kann zu Fehlern in einem Datenbanksystem führen, insbesondere wenn die Konfiguration manuell durchgeführt werden muss. Mit einem Tool wie SaltStack reduziert das Entfernen manueller Schritte menschliche Fehler und häufige Updates mit neuen Funktionen werden den Kundenbedürfnissen gerecht und halten das Unternehmen wettbewerbsfähig.
  3. Niedrigere Konfigurationskosten. Mit einem Bereitstellungstool kann jeder selbst bereitstellen, da der Prozess selbst viel einfacher wird. Dadurch werden Experten für die Arbeit überflüssig und Fehler werden reduziert

Was ist SaltStack

SaltStack ist ein Open-Source-Remote-Execution-Tool und ein in Python entwickeltes Konfigurationsmanagementsystem.

Die Remote-Ausführungsfunktionen werden verwendet, um Befehle auf verschiedenen Rechnern parallel mit einem flexiblen Zielsystem auszuführen. Wenn Sie beispielsweise 3 Servercomputer haben und MongoDB für jeden installieren möchten, können Sie die Installationsbefehle auf diesen Computern gleichzeitig von einem Master-Knoten aus ausführen.

In Bezug auf das Konfigurationsmanagement wird eine Client-Server-Schnittstelle eingerichtet, um die Infrastrukturkomponenten einfach und sicher in den gewünschten Zustand zu bringen.

SaltStack-Architektur

Das grundlegende Setup-Modell für SaltStack ist Client-Server, wobei der Server als Master und die Clients als Slaves bezeichnet werden können. Der Master gibt als steuerndes System Befehle bzw. Anweisungen aus, die von den Clients/Minions, die die kontrollierten Systeme sind, ausgeführt werden müssen.

SaltSack-Komponenten

Aus Folgendem besteht SaltStack

  1. Meister :Verantwortlich für die Ausgabe von Anweisungen an die Slaves und deren Änderung in den gewünschten Zustand nach der Ausführung.
  2. Diener :Es ist die Regelstrecke, die in einen gewünschten Zustand gebracht werden muss.
  3. Salzkörner :  Hierbei handelt es sich um statische Daten oder Metadaten zum Minion, die Informationen wie das Modell, die Seriennummer, die Speicherkapazität und das Betriebssystem enthalten. Sie werden gesammelt, wenn sich der Minion zum ersten Mal mit dem Server verbindet. Sie können verwendet werden, um eine bestimmte Gruppe von Dienern in Bezug auf einen bestimmten Aspekt anzuvisieren. Sie können beispielsweise einen Befehl ausführen, der besagt, MongoDB für alle Computer mit einem Windows-Betriebssystem zu installieren.
  4. Ausführungsmodule/Anweisungen :Dies sind Ad-hoc-Befehle, die an einen oder mehrere Zieldiener ausgegeben und von der Befehlszeile aus ausgeführt werden.
  5. Säulen :sind benutzerdefinierte Variablen, die auf die Schergen verteilt sind. Sie werden verwendet für:Minion-Konfiguration, hochsensible Daten, beliebige Daten und Variablen. Nicht alle Minions sind für alle Säulen zugänglich, man kann einschränken, welche Säulen für eine bestimmte Gruppe von Minions bestimmt sind.
  6. Staatsdateien . Dies ist der Kern von Salt State System (SLS) und stellt den Zustand dar, in dem sich das System befinden sollte. Es ist ein Äquivalent zu einem Playbook im Fall von Ansible, wenn man bedenkt, dass sie auch im YAML-Format vorliegen, d.h.
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. Top-Datei :Wird verwendet , um eine Gruppe von Maschinen abzubilden und festzulegen , welche Zustandsdateien angewendet werden sollen . d.h.

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Salt-Proxy :  Dies ist eine Funktion, die die Steuerung von Geräten ermöglicht, auf denen kein Standard-Salt-Minion ausgeführt werden kann. Dazu gehören Netzwerkgeräte mit einer API, die auf einem proprietären Betriebssystem ausgeführt wird, Geräte mit CPU- und Speicherbeschränkungen oder solche, die aus Sicherheitsgründen keine Minions ausführen können. Ein Junos-Proxy muss für die Erkennung, Steuerung, Remote-Ausführung und Zustandsverwaltung dieser Geräte verwendet werden.

SaltStack-Installation

Wir können den pip-Befehl verwenden, um SaltStack als 

zu installieren
$ pip install salt

Um die Installation zu bestätigen, führen Sie den Befehl $ salt --version aus und Sie sollten so etwas wie Salt 2019.2.2 (Fluor) erhalten

Vor dem Verbinden mit dem Master benötigt der Minion eine minimale Konfiguration der Master-IP-Adresse und Minion-ID, die vom Master als Referenz verwendet werden. Diese Konfigurationen können in den Dateien /etc/salt/minion.

vorgenommen werden

Wir können den Master dann in verschiedenen Modi ausführen, dh im Daemon- oder im Debug-Modus. Für den Daemon-Fall haben Sie $salt-master -d und für den Debug-Modus $salt-master -l debug. Sie müssen den Schlüssel des Minions akzeptieren, bevor Sie ihn starten, indem Sie $ salt-key -a nameOfMinion ausführen. Um die verfügbaren Schlüssel aufzulisten, führen Sie $ salt-key -l

aus

Im Falle des Minion können wir ihn mit $salt-minion -l debug starten.

Wenn wir beispielsweise eine Datei in allen Minions vom Master erstellen möchten, können wir den Befehl 

ausführen
$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Alle Knoten haben eine neue sample.text-Datei im Ordner salt_files. Die Option * wird verwendet, um auf alle Schergen zu verweisen. Um beispielsweise alle Minions mit ID-Namen mit der Zeichenfolge Minion anzugeben, verwenden wir einen Regex-Ausdruck wie unten 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

Um die für einen bestimmten Diener gesammelten Metadaten anzuzeigen, führen Sie Folgendes aus:

$salt ‘minion1’ grains.items.

MongoDB mit SaltStack einrichten

Wir können eine Datenbank namens myAppdata mit setDatabase.sls mit den folgenden Inhalten erstellen 

classes:

- service.mongodb.server.cluster

parameters:

   _param:

     mongodb_server_replica_set: myAppdata

     mongodb_myAppdata_password: myAppdataPasword

     mongodb_admin_password: cloudlab

     mongodb_shared_key: xxx

   mongodb:

     server:

       database:

         myAppdata:

           enabled: true

           password: ${_param:mongodb_myAppdata_password}

           users:

           -  name: myAppdata

              password: ${_param:mongodb_myAppdata_password}

Starten eines einzelnen MongoDB-Servers 

mongodb:

  server:

    enabled: true

    bind:

      address: 0.0.0.0

      port: 27017

    admin:

      username: admin

      password: myAppdataPasword

    database:

      myAppdata:

        enabled: true

        encoding: 'utf8'

        users:

        - name: 'username'

          password: 'password'

MongoDB-Cluster mit SaltStack einrichten

mongodb:

  server:

    enabled: true

    logging:

      verbose: false

      logLevel: 1

      oplogLevel: 0

    admin:

      user: admin

      password: myAppdataPasword

    master: mongo01

    members:

      - host: 192.168.100.11

        priority: 2

      - host: 192.168.101.12

      - host: 192.168.48.13

    replica_set: default

    shared_key: myAppdataPasword

Fazit

Wie ClusterControl ist SaltStack ein Automatisierungstool, das zur Vereinfachung von Bereitstellungs- und Betriebsaufgaben verwendet werden kann. Mit einem Automatisierungstool gibt es weniger Fehler, kürzere Konfigurationszeiten und zuverlässigere Ergebnisse.