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:
- 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.
- 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.
- 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
- Meister :Verantwortlich für die Ausgabe von Anweisungen an die Slaves und deren Änderung in den gewünschten Zustand nach der Ausführung.
- Diener :Es ist die Regelstrecke, die in einen gewünschten Zustand gebracht werden muss.
- 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.
- Ausführungsmodule/Anweisungen :Dies sind Ad-hoc-Befehle, die an einen oder mehrere Zieldiener ausgegeben und von der Befehlszeile aus ausgeführt werden.
- 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.
- 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)
-
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
-
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 werdenWir 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
ausIm 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.