sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Database Deployment Automation

Organisationer gør brug af infrastruktur i skyen, fordi den tilbyder hastighed, fleksibilitet og skalerbarhed. Du kan forestille dig, at hvis vi kan oprette en ny databaseinstans med blot et klik, og det tager et par minutter, før den er klar, kan vi også implementere applikationen hurtigere end sammenlignet med on-prem-miljøer.

Medmindre du bruger MongoDBs egen cloud-tjeneste, tilbyder de store cloud-udbydere ikke en administreret MongoDB-tjeneste, så det er egentlig ikke en operation med et enkelt klik at implementere en enkelt instans eller klynge. Den almindelige måde er at opbygge VM'er og derefter installere dem på disse. Implementeringen skal tages hånd om fra A til Z - vi skal forberede instansen, installere databasesoftwaren, tune nogle konfigurationer og sikre instansen. Disse opgaver er væsentlige, selvom de ikke altid følges ordentligt - med potentielt katastrofale konsekvenser.

Automation spiller en vigtig rolle i at sikre, at alle opgaver starter fra installation, konfiguration, hærdning og indtil databasetjenesten er klar. I denne blog vil vi diskutere implementeringsautomatisering for MongoDB.

Software Orchestrator

Der er en masse nyt softwareværktøj til at hjælpe ingeniører med at implementere og administrere deres infrastruktur. Konfigurationsstyring hjælper ingeniører med at implementere hurtigere og effektivt, hvilket reducerer implementeringstiden for nye tjenester. Populære muligheder inkluderer Ansible, Saltstack, Chef og Puppet. Hvert produkt har fordele og ulemper, men de fungerer alle meget godt og er enormt populære. Implementering af en stateful service som et MongoDB ReplicaSet eller Sharded Cluster kan være lidt mere udfordrende, da disse er multi-server opsætninger, og værktøjerne har dårlig understøttelse af inkrementel og krydsknudekoordination. Implementeringsprocedurer kræver normalt orkestrering på tværs af noder, med opgaver udført i en bestemt rækkefølge.

MongoDB-implementeringsopgaver til automatisering

Deployering af en MongoDB-server involverer en række ting; tilføj MongoDB-lager til lokalt, installer MongoDB-pakken, konfigurer port, brugernavn og start tjenesten.

Opgave:Installer MongoDB

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

Opgave:Kopier mongod.conf fra konfigurationsfilen.

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

Opgave:Opret MongoDB-grænsekonfiguration:

- 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

Opgave:Konfiguration af bytteforhold

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

Opgave:Konfigurer TCP Keepalive-tid

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

Opgave:Sørg for, at MongoDB automatisk starter

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

Vi kan kombinere alle disse opgaver i en enkelt afspilningsbog og køre afspilningsbogen for at automatisere implementeringen. Hvis vi kører en Ansible playbook fra konsollen:

$ ansible-playbook -b mongoInstall.yml

Vi vil se udviklingen af ​​implementeringen fra vores Ansible-script, outputtet skulle være noget som nedenfor:

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

Efter implementeringen kan vi tjekke MongoDB-tjenesten på målserveren.

Implementeringsautomatisering af MongoDB ved hjælp af ClusterControl GUI

Der er to måder at implementere MongoDB ved hjælp af ClusterControl. Vi kan bruge det fra dashboardet i ClusterControl, det er GUI-baseret og skal blot bruge 2 dialoger, indtil det udløser et nyt job til ny implementering af MongoDB.

Først skal vi udfylde SSH-brugeren og adgangskoden, udfylde klyngenavnet som vist nedenfor:

Og derefter skal du vælge leverandøren og versionen af ​​MongoDB, definere brugeren og adgangskode, og det sidste er at udfylde mål-IP-adressen

Implementeringsautomatisering af MongoDB ved hjælp af s9s CLI

Fra kommandolinjegrænsefladen kan man bruge s9s-værktøjerne. Implementeringen af ​​MongoDB ved hjælp af s9s er kun en kommando på én linje som nedenfor:

$ 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.


Så at implementere MongoDB, uanset om det er et ReplicaSet eller en Sharded Cluster, er meget let og er fuldstændig automatiseret af ClusterControl.


  1. Afkodning af MongoDB fejllogfiler

  2. Meteor Subscribe opdaterer ikke sorteringsrækkefølgen for samlingen

  3. Sortering på Flere felter mongo DB

  4. Sådan bruger du kryptering til at beskytte dine MongoDB-data