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

Automatisierung der MongoDB-Datenbankbereitstellung

Organisationen nutzen die Infrastruktur in der Cloud, weil sie Geschwindigkeit, Flexibilität und Skalierbarkeit bietet. Sie können sich vorstellen, dass wir mit nur einem Klick eine neue Datenbankinstanz starten können und es ein paar Minuten dauert, bis sie fertig ist, wir können die Anwendung auch schneller bereitstellen als im Vergleich zu einer lokalen Umgebung.

Wenn Sie nicht den eigenen Cloud-Service von MongoDB verwenden, bieten die großen Cloud-Anbieter keinen verwalteten MongoDB-Service an, sodass es nicht wirklich ein Ein-Klick-Vorgang ist, um eine einzelne Instanz oder einen Cluster bereitzustellen. Die übliche Methode besteht darin, VMs hochzufahren und sie dann auf diesen bereitzustellen. Die Bereitstellung muss von A bis Z erledigt werden – wir müssen die Instanz vorbereiten, die Datenbanksoftware installieren, einige Konfigurationen optimieren und die Instanz sichern. Diese Aufgaben sind unerlässlich, obwohl sie nicht immer richtig befolgt werden – mit potenziell katastrophalen Folgen.

Automatisierung spielt eine wichtige Rolle bei der Sicherstellung aller Aufgaben, beginnend mit der Installation, Konfiguration, Härtung und bis der Datenbankdienst bereit ist. In diesem Blog werden wir die Bereitstellungsautomatisierung für MongoDB diskutieren.

Software Orchestrator

Es gibt viele neue Softwaretools, die Ingenieuren helfen, ihre Infrastruktur bereitzustellen und zu verwalten. Das Konfigurationsmanagement hilft Ingenieuren bei der schnelleren und effektiveren Bereitstellung und verkürzt die Bereitstellungszeit für neue Dienste. Beliebte Optionen sind Ansible, Saltstack, Chef und Puppet. Jedes Produkt hat Vor- und Nachteile, aber alle funktionieren sehr gut und sind sehr beliebt. Die Bereitstellung eines zustandsbehafteten Dienstes wie MongoDB ReplicaSet oder Sharded Cluster kann etwas schwieriger sein, da es sich um Multi-Server-Setups handelt und die Tools eine inkrementelle und knotenübergreifende Koordination schlecht unterstützen. Bereitstellungsverfahren erfordern normalerweise eine knotenübergreifende Orchestrierung, wobei Aufgaben in einer bestimmten Reihenfolge ausgeführt werden.

Zu automatisierende MongoDB-Bereitstellungsaufgaben

Die Bereitstellung eines MongoDB-Servers umfasst eine Reihe von Dingen; Fügen Sie das MongoDB-Repository zum lokalen hinzu, installieren Sie das MongoDB-Paket, konfigurieren Sie den Port, den Benutzernamen und starten Sie den Dienst.

Aufgabe:MongoDB installieren

- name: install mongoDB
  apt: 
    name: mongodb
    state: present
    update_cache: yes

Aufgabe:Kopieren Sie die mongod.conf aus der Konfigurationsdatei.

- name: copy config file
  copy:
    src: mongodb.conf
    dest: /etc/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Aufgabe:MongoDB-Limit-Konfiguration erstellen:

- name: create /etc/security/limits.d/mongodb.conf
  copy:
    src: security-mongodb.conf
    dest: /etc/security/limits.d/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Aufgabe:Swapness konfigurieren

- name: config vm.swappiness
  sysctl:
    name: vm.swappiness
    value: '10'
    state: present

Aufgabe:TCP-Keepalive-Zeit konfigurieren

- name: config net.ipv4.tcp_keepalive_time
  sysctl:
    name: net.ipv4.tcp_keepalive_time
    value: '120'
    state: present

Aufgabe:Sicherstellen, dass MongoDB automatisch gestartet wird

- name: Ensure mongodb is running and and start automatically on reboots
  systemd:
    name: mongodb
    enabled: yes
    state: started

Wir können alle diese Aufgaben in einem einzigen Playbook kombinieren und das Playbook ausführen, um die Bereitstellung zu automatisieren. Wenn wir ein Ansible-Playbook von der Konsole aus ausführen:

$ ansible-playbook -b mongoInstall.yml

Wir werden den Fortschritt der Bereitstellung von unserem Ansible-Skript sehen, die Ausgabe sollte in etwa so aussehen:

PLAY [ansible-mongo] **********************************************************

GATHERING FACTS ***************************************************************
ok: [10.10.10.11]

TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]

TASK: [copy config file] ******************************************************
ok: [10.10.10.11]

TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]


TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]

TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]

TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]

PLAY RECAP ********************************************************************
[10.10.10.11]          : ok=6    changed=1    unreachable=0    failed=0

Nach der Bereitstellung können wir den MongoDB-Dienst auf dem Zielserver überprüfen.

Bereitstellungsautomatisierung von MongoDB mithilfe der ClusterControl-GUI

Es gibt zwei Möglichkeiten, MongoDB mit ClusterControl bereitzustellen. Wir können es vom Dashboard von ClusterControl aus verwenden, es ist GUI-basiert und benötigt nur 2 Dialoge, bis es einen neuen Job für die neue Bereitstellung von MongoDB auslöst.

Zuerst müssen wir den SSH-Benutzer und das Passwort eingeben, geben Sie den Clusternamen wie unten gezeigt ein:

Wählen Sie dann den Anbieter und die Version von MongoDB aus, definieren Sie den Benutzer und Passwort, und als letztes geben Sie die Ziel-IP-Adresse ein

Bereitstellungsautomatisierung von MongoDB mit s9s CLI

Über die Befehlszeilenschnittstelle kann man die s9s-Tools verwenden. Die Bereitstellung von MongoDB mit s9s ist nur ein einzeiliger Befehl wie unten:

$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15"  --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED   [██████████] 100% Job finished.


Deshalb ist die Bereitstellung von MongoDB, sei es ein ReplicaSet oder ein Sharded Cluster, sehr einfach und wird von ClusterControl vollständig automatisiert.