sql >> Database >  >> NoSQL >> MongoDB

Implementatie en onderhoud van MongoDB met behulp van Ansible

Technologie verandert van dag tot dag en moderne applicaties moeten serieuze aanpassingen ondergaan om te voldoen aan de snelle leveringsverwachtingen van hun organisaties. Helaas maakt dit ze complexer, geavanceerder en moeilijker te onderhouden.

Wat databasebeheer betreft, veranderen de gegevensstructuren binnen MongoDB in de loop van de tijd in overeenstemming met de toepassingsbehoeften en dit kan behoorlijk duur (of eerder riskant) zijn.

Op de lange termijn moeten we een efficiënte database hebben die eenvoudig kan worden geconfigureerd en een competente softwarelevering garanderen. Om al deze op een handmatige manier te bereiken, brengt een aantal tegenslagen met zich mee, zoals

  1. Gecompliceerde coördinatie tussen teamleden.
  2. Hoge kansen op taakherhaling
  3. Veel vatbaar voor veel menselijke fouten en fouten
  4. Ongemakkelijk om complexiteit te overwinnen
  5. Verminderde samenwerking en werkontevredenheid
  6. Tijdrovend
  7. Slechte verantwoording en naleving

De moeilijkheden van databasebeheer zijn voornamelijk gericht op

  • Implementeren
  • Onderhoud
  • Upgraden die de operationele overhead kan beïnvloeden tot 95% reductie.

Om dit te bereiken kan MongoDB veel tijd en handmatige inspanning vergen. Om succes te garanderen, moet u een eenvoudig systeem hebben waarmee u ervoor kunt zorgen dat alle bovengenoemde tegenslagen tijdig kunnen worden aangepakt vanaf één enkel platform, dat wil zeggen op de een of andere manier een geautomatiseerd systeem. Er zijn nogal wat opties, maar in dit artikel gaan we bespreken hoe je Ansible kunt gebruiken.

Wat is Ansible

Ansible is gewoon een universele taal die het mysterie van hoe werk wordt gedaan ontrafelt. Met andere woorden, het is een IT-orkestratie-engine die de implementatie van applicaties, configuratiebeheer automatiseert en meer geavanceerde IT-taken orkestreert, zoals het garanderen van zero downtime rolling updates en continue implementaties.

Machines kunnen eenvoudig worden beheerd op een agentloze manier met een grotere focus op beveiliging en betrouwbaarheid door het gebruik van een taal die is ontworpen rond "auditability" door mensen.

Hoewel het implementeren van MongoDB misschien niet zo moeilijk is, worden onderhoud, back-up en monitoring in de loop van de tijd steeds belangrijker. Bovendien is het niet zo eenvoudig als databasebeheer nieuw voor u is. Met Ansible kunnen ontwikkelaars applicaties eenvoudig implementeren en configureren, en het zorgt ook voor snelle levering aan elk hostingplatform.

Omdat Ansible geen deel uitmaakt van het databaseclustersysteem, kan het op elke externe computer worden geïnstalleerd en kan er een configuratie worden gemaakt op uw databasehost. Raadpleeg de installatiehandleiding om te weten welke versie geschikt is voor uw besturingssysteem.

Ansible maakt standaard verbinding met een databasehost via een SSH-protocol.

Ansible Playbooks

Playbooks zijn sjablonen waarin Ansible-code wordt geschreven, dus geef Ansible zelf aan wat het op een dergelijke to-do-lijst-manier moet uitvoeren. Ze zijn geschreven in YAML-indeling (Yet Another Markup Language). Elk bevat stapsgewijze bewerkingen die door de gebruiker worden gevolgd op een bepaalde machine die opeenvolgend worden uitgevoerd. Hun structuur bestaat uit een of meer toneelstukken. Een Play is in feite een codeblok dat een reeks instructies toewijst die zijn gedefinieerd voor een bepaalde host.

Veelgebruikte YAML-tags in Ansible

  1. naam

    Dit is de tag die de naam van het Ansible-playbook definieert. Het is raadzaam om een ​​naam in te stellen die precies definieert wat het gaat doen.

  2. hosts

    Dit definieert een hostgroep of lijst van hosts waartegen de gedefinieerde taken moeten worden uitgevoerd. Het is een verplichte tag die Ansible vertelt op welke hosts de vermelde taken moeten worden uitgevoerd. Aangezien taken op meerdere machines kunnen worden uitgevoerd, op dezelfde of op externe machines, kan een groep hosts in deze tag worden gedefinieerd.

  3. vars

    Net als elke andere programmeertaal heb je variabelen nodig. Met deze tag kun je variabelen definiëren die je in je playbook gaat gebruiken.

  4. taken

    Met deze tag kunt u een reeks taken weergeven die moeten worden uitgevoerd. Taken zijn eigenlijk acties die men moet uitvoeren. Een taakveld definieert de naam van de taak die in wezen tekst voor de gebruiker helpt tijdens het opsporen van fouten in het playbook. Een stuk code dat als module is gedefinieerd, wordt intern door elke taak gekoppeld en alle argumenten die binnen de module moeten worden gebruikt, worden door de taaktag doorgegeven.

Een eenvoudige playbook-structuur ziet er ongeveer zo uit...

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

Een eenvoudig draaiboek schrijven om MongoDB te installeren en te starten

  1. Root SSH-toegang inschakelen

    Sommige instellingen van beheerde knooppunten kunnen u ervan weerhouden in te loggen als rootgebruiker en daarom moet u een playbook definiëren om dit op te lossen. We zullen een playbook enable-root-access.yml maken die er als volgt uit zal zien

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

    Wanneer u de opdracht uitvoert

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

    Je zou zoiets moeten zien als

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Hosts en gebruikers selecteren in mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Uit te voeren taken toevoegen

    Taken worden opeenvolgend uitgevoerd, dus we moeten ze op een sequentiële manier schetsen, d.w.z.

    1. apt_key om repositorysleutels toe te voegen. MongoDB openbare GPG-sleutel moet eerst worden geïmporteerd
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. MongoDB apt_repository toevoegen
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Pakketten installeren en mongod starten, dan de lokale pakketdatabase opnieuw laden
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Services beheren, handler gebruiken om services te starten en opnieuw te starten
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Multiplenines Word een MongoDB DBA - MongoDB naar productie brengenLeer over wat u moet weten om MongoDB gratis te implementeren, bewaken, beheren en schalen

De algemene playbook-code zou er zo uit moeten zien

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

We kunnen dit bestand dan uitvoeren met ansible met behulp van het commando

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

Als het playbook succesvol is uitgevoerd, zou je dit in je terminal moeten zien

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

Als je nu mongo uitvoert, word je doorverwezen naar 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

Conclusie

Ansible is een eenvoudige open source IT-engine die applicatie-implementatie, service-orkestratie en cloudvoorziening automatiseert.

Het werkt door databaseknooppunten met elkaar te verbinden en definieert instructies die bekend staan ​​als modules naar hen te pushen, voert ze standaard uit via SSH en verwijdert ze wanneer ze klaar zijn. Het voert geen daemons of servers uit en kan daarom vanaf elke externe machine worden uitgevoerd. In de volgende tutorial gaan we bespreken hoe je een MongoDB-replicaset in de cloud kunt onderhouden met Ansible.


  1. MongoDB geneste dieptelimiet objectveld

  2. Redis Keyspace-meldingen met flushdb

  3. Hoe het aantal bijwerkdocumenten in mongodb te beperken

  4. SCUMM:de op agenten gebaseerde databasebewakingsinfrastructuur in ClusterControl