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

Bereitstellung und Wartung von MongoDB mit Ansible

Die Technologie ändert sich von Tag zu Tag, und moderne Anwendungen müssen ernsthaft angepasst werden, um die schnellen Bereitstellungserwartungen ihrer Unternehmen zu erfüllen. Leider werden sie dadurch komplexer, ausgefeilter und schwieriger zu warten.

In Bezug auf die Datenbankverwaltung ändern sich die Datenstrukturen innerhalb von MongoDB entsprechend den Anwendungsanforderungen im Laufe der Zeit, und dies kann ziemlich teuer (oder ziemlich riskant) sein.

Langfristig müssen wir eine effiziente Datenbank haben, die einfach konfiguriert werden kann, und eine kompetente Softwarebereitstellung sicherstellen. All dies auf manuelle Weise zu erreichen, bringt eine Reihe von Rückschlägen mit sich, wie zum Beispiel

  1. Komplizierte Koordination zwischen den Teammitgliedern.
  2. Hohe Chancen auf Aufgabenwiederholung
  3. Anfällig für viele menschliche Fehler und Irrtümer
  4. Es ist schwierig, Komplexität zu überwinden
  5. Reduzierte Zusammenarbeit und Arbeitsunzufriedenheit
  6. Zeitaufwändig
  7. Schlechte Rechenschaftspflicht und Compliance

Die Schwierigkeiten der Datenbankverwaltung konzentrieren sich hauptsächlich auf

  • Bereitstellen
  • Wartung
  • Upgrade, das den Betriebsaufwand um bis zu 95 % reduzieren kann.

Dies zu erreichen kann viel Zeit und manuellen Aufwand für MongoDB in Anspruch nehmen. Um den Erfolg sicherzustellen, benötigen Sie ein einfaches System, mit dem Sie sicherstellen können, dass alle oben aufgeführten Rückschläge zeitnah von einer einzigen Plattform aus angegangen werden können, d.h. irgendwie ein automatisiertes System. Es gibt eine ganze Reihe von Optionen, aber in diesem Artikel werden wir diskutieren, wie Ansible verwendet wird.

Was ist Ansible

Ansible ist einfach eine universelle Sprache, die das Geheimnis der Arbeitsweise aufdeckt. Mit anderen Worten, es handelt sich um eine IT-Orchestrierungs-Engine, die die Bereitstellung von Anwendungen und das Konfigurationsmanagement automatisiert und fortgeschrittenere IT-Aufgaben orchestriert, wie z

Durch die Verwendung einer Sprache, die auf „Überwachbarkeit“ durch Menschen ausgelegt ist, können Maschinen problemlos ohne Agenten verwaltet werden, wobei der Schwerpunkt stärker auf Sicherheit und Zuverlässigkeit gelegt wird.

Während die Bereitstellung von MongoDB möglicherweise nicht so schwierig ist, werden Wartung, Backup und Überwachung im Laufe der Zeit zu immer wichtigeren Faktoren. Außerdem ist es nicht so einfach, wenn Sie neu in der Datenbankverwaltung sind. Mit Ansible können Entwickler Anwendungen einfach bereitstellen und konfigurieren, es ermöglicht auch eine schnelle Bereitstellung auf jeder Hosting-Plattform.

Da Ansible nicht Teil des Datenbank-Cluster-Systems ist, kann es auf jedem Remote-Computer installiert und eine Konfiguration an Ihrem Datenbank-Host vorgenommen werden. Bitte überprüfen Sie die Installationsanleitung, um zu erfahren, welche Version für Ihr Betriebssystem geeignet ist.

Ansible stellt standardmäßig über ein SSH-Protokoll eine Verbindung zu einem Datenbankhost her.

Ansible-Playbooks

Playbooks sind Vorlagen, in denen Ansible-Code geschrieben wird, und weisen daher Ansible selbst an, was auf eine Art To-do-Liste ausgeführt werden soll. Sie sind im YAML-Format (Yet Another Markup Language) geschrieben. Jede enthält Schritt-für-Schritt-Operationen, die vom Benutzer auf einem bestimmten Computer befolgt werden, die nacheinander ausgeführt werden. Ihre Struktur besteht aus einem oder mehreren Spielen. Ein Play ist im Grunde ein Codeblock, der eine Reihe von Anweisungen abbildet, die für einen bestimmten Host definiert sind.

Häufig verwendete YAML-Tags in Ansible

  1. Name

    Dies ist das Tag, das den Namen des Ansible-Playbooks definiert. Es ist ratsam, einen Namen festzulegen, der genau definiert, was es tun wird.

  2. Hosts

    Dies definiert eine Hostgruppe oder Liste von Hosts, auf denen die definierten Aufgaben ausgeführt werden sollen. Es ist ein obligatorisches Tag, das Ansible mitteilt, auf welchen Hosts die aufgelisteten Aufgaben ausgeführt werden sollen. Da Aufgaben auf mehreren Computern ausgeführt werden können, entweder auf demselben oder auf entfernten Computern, kann in diesem Tag ein Eintrag für eine Gruppe von Hosts definiert werden.

  3. vars

    Wie jede andere Programmiersprache benötigen Sie Variablen. Mit diesem Tag können Sie Variablen definieren, die Sie in Ihrem Playbook verwenden werden.

  4. Aufgaben

    Mit diesem Tag können Sie eine Reihe von Aufgaben auflisten, die ausgeführt werden sollen. Aufgaben sind eigentlich Aktionen, die man ausführen muss. Ein Aufgabenfeld definiert den Namen der Aufgabe, was dem Benutzer beim Debuggen des Playbooks im Wesentlichen als Texthilfe dient. Ein als Modul definierter Codeabschnitt wird intern von jeder Aufgabe verknüpft, und alle Argumente, die innerhalb des Moduls verwendet werden sollen, werden über das Tasks-Tag übergeben.

Eine einfache Playbook-Struktur sieht in etwa so aus...

--- name:Installiere und konfiguriere DB hosts:testServer wird:yes vars:mongoDB_Port :27017 task:-name:Installiere die mongodb yum: -name:Stell den installierten Dienst sicher aktiviert ist und Dienst ausführt:Name: 

Schreiben eines einfachen Playbooks zum Installieren und Starten von MongoDB

  1. Stamm-SSH-Zugriff aktivieren

    Einige Setups von verwalteten Knoten können Sie davon abhalten, sich als Root-Benutzer anzumelden, daher müssen Sie ein Playbook definieren, um dieses Problem zu lösen. Wir werden ein Playbook enable-root-access.yml erstellen, das so aussehen wird

    ---- hosts:ansible-test remote_user:ubuntu taskes:- name:Root-Login-Shell aktivieren:sudo cp ~/.ssh/authorized_keys /root/.ssh/ 

    Wenn Sie den Befehl ausführen

    $ ansible-playbook -i Inventory.txt -c ssh enable-root-access.yaml  

    Sie sollten so etwas wie

    sehen
    SPIELEN [ansible-test] ************************************** ******************** FAKTEN SAMMELN **************************** **********************************AUFGABE:[Root-Anmeldung aktivieren] ******* ********************************************* SPIELZUSAMMENFASSUNG ** ****************************************************** **************** 
  2. Hosts und Benutzer in mongodbInstall.yaml auswählen

    ---- hosts:ansible-test remote_user:root werde:yes 
  3. Auszuführende Aufgaben hinzufügen

    Aufgaben werden sequentiell ausgeführt, also müssen wir sie sequentiell skizzieren, d. h.

    1. apt_key, um Repository-Schlüssel hinzuzufügen. Der öffentliche GPG-Schlüssel von MongoDB muss zuerst importiert werden /code>
    2. Hinzufügen von MongoDB apt_repository
      - name:MongoDB-Repository apt_repository hinzufügen:repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present 
    3. Pakete installieren und Mongod starten, dann lokale Paketdatenbank neu laden
      - name:Mongodb installieren apt:pkg=mongodb-org state=latest update_cache=yes Benachrichtigen:- Mongodb starten 
    4. Verwalten von Diensten, Verwenden von Handler zum Starten und Neustarten von Diensten
      Handler:- name:start mongodb service:name=mongod state=started 
Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalieren

Der allgemeine Playbook-Code sollte so aussehen

---- hosts:ansible-test remote_user:root werde:yes Aufgaben:- name:Importiere den vom Paketverwaltungssystem verwendeten öffentlichen Schlüssel apt_key:keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present - Name:MongoDB-Repository hinzufügen apt_repository:repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present - Name:MongoDB installieren apt:pkg =mongodb-org state=latest update_cache=yes Benachrichtigen:- Mongodb-Handler starten:- Name:Mongodb-Dienst starten:Name=mongod state=started 

Wir können diese Datei dann mit Ansible mit dem Befehl

ausführen
ansible-playbook -i Inventory.txt -c ssh mongodbInstall.yaml 

Wenn das Playbook erfolgreich ausgeführt wurde, sollten Sie dies in Ihrem Terminal sehen

SPIELEN [ansible-test] ************************************** ******************** FAKTEN SAMMELN **************************** **********************************ok:[12.20.3.105]ok:[12.20.3.106] AUFGABE:[Den vom Paketverwaltungssystem verwendeten öffentlichen Schlüssel importieren] ***********geändert:[12.20.3.105]geändert:[12.20.3.106]AUFGABE:[MongoDB-Repository hinzufügen] **** ********************************************geändert:[12.20.3.105 ]geändert:[12.20.3.106]AUFGABE:[mongodb installieren] ************************************ ******************geändert:[12.20.3.105]geändert:[12.20.3.106]BENACHRICHTIGT:[mongodb starten] *********** *****************************************ok:[12.20.3.106]ok :[12.20.3.105]Wiederholung spielen ****************************************** *************************12.20.3.105 :ok=5 geändert=3 nicht erreichbar=0 fehlgeschlagen=012.20.3.106 :ok=5 geändert=3 nicht erreichbar=0 fehlgeschlagen=0 

Wenn Sie jetzt Mongo ausführen, werden Sie zur Mongo-Shell weitergeleitet

MongoDB-Shell-Version v4.0.3Verbinden mit:mongodb://127.0.0.1:27017Implizite Sitzung:session { "id" :UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }MongoDB-Serverversion :4.0.3Willkommen bei der MongoDB-Shell.Für interaktive Hilfe geben Sie „help“ ein.Umfassendere Dokumentation finden Sie unter http://docs.mongodb.org/Questions? Versuchen Sie es mit der Support-Gruppe http://groups.google.com/group/mongodb-user 

Schlussfolgerung

Ansible ist eine einfache Open-Source-IT-Engine, die die Anwendungsbereitstellung, Service-Orchestrierung und Cloud-Bereitstellung automatisiert.

Es funktioniert, indem es Datenbankknoten verbindet und definierte Anweisungen, die als Module bekannt sind, an sie ausgibt, sie standardmäßig über SSH ausführt und sie dann entfernt, wenn sie fertig sind. Es führt keine Daemons oder Server aus und kann daher von jedem Remote-Computer ausgeführt werden. Im nächsten Tutorial werden wir besprechen, wie Sie mit Ansible einen MongoDB-Replikatsatz in der Cloud verwalten.