sql >> Databasteknik >  >> NoSQL >> MongoDB

Driftsättning och underhåll av MongoDB med Ansible

Tekniken förändras dag för dag och moderna applikationer måste ta allvarliga justeringar för att uppfylla de snabba leveransförväntningarna från deras organisationer. Tyvärr gör detta dem mer komplexa, mer sofistikerade och svårare att underhålla.

När det gäller databashantering förändras datastrukturerna inuti MongoDB i enlighet med applikationsbehov över tiden och det kan bli ganska dyrt (eller snarare riskabelt).

I det långa loppet måste vi ha en effektiv databas konfigurerad enkelt och säkerställa kompetent mjukvaruleverans. Att uppnå alla dessa på ett manuellt sätt kommer med ett antal motgångar som t.ex.

  1. Komplicerad samordning mellan teammedlemmar.
  2. Höga chanser att uppgiften upprepas
  3. Mottaglig för många mänskliga misstag och misstag
  4. Oktigt att övervinna komplexitet
  5. Minskat samarbete och missnöje på jobbet
  6. Tidskrävande
  7. Dålig ansvarighet och efterlevnad

Svårigheterna med databasadministration är främst centrerade på

  • Distribuerar
  • Underhåll
  • Uppgradering som kan påverka driftskostnaderna med upp till 95 % minskning.

Att uppnå detta kan ta mycket tid och manuell ansträngning för MongoDB. För att säkerställa framgång måste du ha ett enkelt system med vilket du kan säkerställa att alla listade motgångar ovan kan åtgärdas från en enda plattform i tid, det vill säga på något sätt ett automatiserat system. Det finns en hel del alternativ men i den här artikeln kommer vi att diskutera hur man använder Ansible.

Vad är Ansible

Ansible är helt enkelt ett universellt språk som avslöjar mysteriet om hur arbetet går till. Det är med andra ord en IT-orkestreringsmotor som automatiserar driftsättningen av applikationer, konfigurationshantering och orkestrerar mer avancerade IT-uppgifter som att säkerställa noll rullande driftstopp och kontinuerliga driftsättningar.

Maskiner kan enkelt hanteras på ett agentlöst sätt med ett större fokus på säkerhet och tillförlitlighet genom att använda ett språk som är designat kring "hörbarhet" av människor.

Även om det kanske inte är så svårt att distribuera MongoDB, blir underhåll, säkerhetskopiering och övervakning ökade problem med tiden. Dessutom är det inte så lätt när du är ny på databashantering. Med Ansible kan utvecklare distribuera och konfigurera applikationer med lätthet, det möjliggör också snabb leverans till alla värdplattformar.

Eftersom Ansible inte är en del av databasklustersystemet kan det installeras på vilken fjärrdator som helst och en konfiguration göras till din databasvärd. Kontrollera installationsguiden för att veta vilken version som är lämplig för ditt operativsystem.

Ansible ansluter som standard till en databasvärd via ett SSH-protokoll.

Ansible Playbooks

Playbooks är mallar där Ansible-kod skrivs, vilket leder Ansible själv vad som ska utföras på ett sådant sätt att göra-lista. De är skrivna i YAML-format (Yet Another Markup Language). Var och en innehåller steg-för-steg-operationer som följs av användaren på en viss maskin som körs sekventiellt. Deras struktur består av en eller flera pjäser. En Play är i grunden ett kodblock som mappar en uppsättning instruktioner definierade mot en viss värd.

Vanligt använda YAML-taggar i Ansible

  1. namn

    Det här är taggen som definierar namnet på Ansible-spelboken. Det är tillrådligt att ställa in ett namn som exakt definierar vad den kommer att göra.

  2. värdar

    Detta definierar en värdgrupp eller lista över värdar mot vilka de definierade uppgifterna ska köras. Det är en obligatorisk tagg som talar om för Ansible på vilka värdar som ska köras de uppgifter som har listats. Eftersom uppgifter kan utföras på flera maskiner, antingen samma eller fjärranslutna maskiner, kan man definiera en grupp av värdposter i denna tagg.

  3. vars

    Som alla andra programmeringsspråk behöver du variabler. Med den här taggen kan du definiera variabler som du kommer att använda i din spelbok.

  4. uppgifter

    Den här taggen gör att du kan lista en uppsättning uppgifter som ska utföras. Uppgifter är faktiskt åtgärder man behöver utföra. Ett uppgiftsfält definierar namnet på uppgiften som i huvudsak hjälper texten för användaren under felsökning av spelboken. En kod som definieras som en modul länkas internt av varje uppgift och alla argument som ska användas inom modulen skickas via tasks-taggen.

En enkel lekboksstruktur ser ut ungefär så här...

---
 name: install and configure DB
   hosts: testServer
   become: yes

   vars: 
      mongoDB_Port : 27017
   
   tasks:
   -name: Install the mongodb
      yum: <code to install the DB>
    
   -name: Ensure the installed service is enabled and running
   service:
      name: <your service name>

Skriv en enkel spelbok för att installera och starta MongoDB

  1. Aktivera Root SSH Access

    Vissa inställningar av hanterade noder kan avskräcka dig från att logga in som root-användare och behöver därför definiera en spelbok för att lösa detta. Vi kommer att skapa en spelbok enable-root-access.yml som kommer att se ut så här

    ---
    - hosts: ansible-test
      remote_user: ubuntu
      tasks:
        - name: Enable root login
          shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/

    När du kör kommandot

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

    Du borde se något liknande

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Väljar värdar och användare i mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Lägger till uppgifter som ska köras

    Uppgifter utförs sekventiellt, så vi måste beskriva dem på ett sekventiellt sätt, dvs.

    1. apt_key för att lägga till förrådsnycklar. MongoDB public GPG Key måste importeras först
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Lägga till MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Installera paket och starta mongod, ladda sedan om den lokala paketdatabasen
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Hantera tjänster, använda hanterare för att starta och starta om tjänster
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Severalnines Become a MongoDB DBA - Bringing MongoDB to ProductionLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala MongoDBDownload gratis

Den allmänna spelbokskoden bör se ut så här

---
- hosts: ansible-test
  remote_user: root
  become: yes
  tasks:
  - name: Import the public key used by the package management system
    apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
  - name: Add MongoDB repository
    apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
  - name: install mongodb
    apt: pkg=mongodb-org state=latest update_cache=yes
    notify:
    - start mongodb
  handlers:
    - name: start mongodb
      service: name=mongod state=started

Vi kan sedan köra den här filen med ansible med kommandot

ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml

Om spelboken har körts framgångsrikt bör du se detta i din terminal

PLAY [ansible-test] ***********************************************************

GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]

TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]

PLAY RECAP ********************************************************************
12.20.3.105                : ok=5    changed=3    unreachable=0    failed=0
12.20.3.106                : ok=5    changed=3    unreachable=0    failed=0

Om du nu kör mongo kommer du att dirigeras till mongo shell

MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

Slutsats

Ansible är en enkel IT-motor med öppen källkod som automatiserar applikationsdistribution, tjänsteorkestrering och molntillhandahållande.

Det fungerar genom att ansluta databasnoder och trycka ut definierar instruktioner som kallas moduler till dem, exekverar dem genom SSH som standard och blir av med dem när de är klara. Den kör inga demoner eller servrar och kan därför köras från vilken fjärrdator som helst. I nästa handledning kommer vi att diskutera hur man underhåller en MongoDB-replikuppsättning i molnet med Ansible.


  1. Hur tar jag bort nycklar?

  2. doRedis returnerar fel i Windows 8 x64 för olika Redis-serverbyggen

  3. MongoDB - Skapa en databas

  4. Selleri ger anslutningen återställs av peer