sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Database Deployment Automation

Organisationer använder sig av infrastruktur i molnet eftersom det erbjuder hastighet, flexibilitet och skalbarhet. Du kan föreställa dig om vi kan snurra upp en ny databasinstans med bara ett klick, och det tar ett par minuter innan den är klar, vi kan också distribuera applikationen snabbare än jämfört med en lokal miljö.

Om du inte använder MongoDB:s egen molntjänst erbjuder de stora molnleverantörerna inte en hanterad MongoDB-tjänst så det är egentligen inte en ettklicksoperation att distribuera en enskild instans eller kluster. Det vanliga sättet är att snurra upp virtuella datorer och sedan distribuera dem på dessa. Utplaceringen måste skötas från A till Ö – vi måste förbereda instansen, installera databasprogramvaran, finjustera några konfigurationer och säkra instansen. Dessa uppgifter är viktiga, även om de inte alltid följs ordentligt - med potentiellt katastrofala konsekvenser.

Automation spelar en viktig roll för att se till att alla uppgifter från installation, konfiguration, härdning och tills databastjänsten är klar. I den här bloggen kommer vi att diskutera distributionsautomatisering för MongoDB.

Software Orchestrator

Det finns många nya programvaruverktyg som hjälper ingenjörer att distribuera och hantera sin infrastruktur. Konfigurationshantering hjälper ingenjörer att implementera snabbare och effektivt, vilket minskar driftsättningstiden för nya tjänster. Populära alternativ inkluderar Ansible, Saltstack, Chef och Puppet. Varje produkt har fördelar och nackdelar, men de fungerar alla väldigt bra och är enormt populära. Att distribuera en tillståndsfull tjänst som en MongoDB ReplicaSet eller Sharded Cluster kan vara lite mer utmanande eftersom dessa är inställningar för flera servrar och verktygen har dåligt stöd för inkrementell koordinering och korsnodskoordination. Driftsättningsprocedurer kräver vanligtvis orkestrering över noder, med uppgifter som utförs i en specifik ordning.

MongoDB-distributionsuppgifter att automatisera

Isättning av en MongoDB-server involverar ett antal saker; lägg till MongoDB-förvaret i lokalt, installera MongoDB-paketet, konfigurera port, användarnamn och starta tjänsten.

Uppgift:installera MongoDB

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

Uppgift:kopiera mongod.conf från konfigurationsfilen.

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

Uppgift:skapa MongoDB-gränskonfiguration:

- 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

Uppgift:konfigurera swappiness

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

Uppgift:konfigurera TCP Keepalive-tid

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

Uppgift:se till att MongoDB startar automatiskt

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

Vi kan kombinera alla dessa uppgifter till en enda spelbok och köra spelboken för att automatisera distributionen. Om vi ​​kör en Ansible-spelbok från konsolen:

$ ansible-playbook -b mongoInstall.yml

Vi kommer att se utvecklingen av implementeringen från vårt Ansible-skript, utdata bör vara ungefär som nedan:

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 kontrollera MongoDB-tjänsten på målservern.

Deployment Automation of MongoDB med ClusterControl GUI

Det finns två sätt att distribuera MongoDB med ClusterControl. Vi kan använda det från instrumentpanelen för ClusterControl, det är GUI-baserat och behöver bara två dialoger tills det utlöser ett nytt jobb för ny implementering av MongoDB.

Först måste vi fylla i SSH-användaren och lösenordet, fyll i klusternamnet som visas nedan:

Och sedan väljer du leverantör och version av MongoDB, definierar användaren och lösenord, och det sista är att fylla i mål-IP-adressen

Deployment Automation of MongoDB med s9s CLI

Från kommandoradsgränssnittet kan man använda s9s-verktygen. Utplaceringen av MongoDB med s9s är bara ett kommando på en rad enligt nedan:

$ 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å att distribuera MongoDB, oavsett om det är ett ReplicaSet eller ett Sharded Cluster, är mycket enkelt och är helt automatiserat av ClusterControl.


  1. Det bästa mönstret för att hantera asynkron looping i Node.js

  2. Topp 10 funktioner i Big Data Hadoop

  3. ServiceStack Entities ID-fältnamn

  4. Använda Redis för köer för flera Laravel-applikationer på en enda server