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

Distribuzione e manutenzione di MongoDB utilizzando Ansible

La tecnologia cambia giorno dopo giorno e le applicazioni moderne devono effettuare seri aggiustamenti per soddisfare le aspettative di consegna rapida delle loro organizzazioni. Sfortunatamente, questo li rende più complessi, più sofisticati e più difficili da mantenere.

In termini di gestione del database, le strutture dati all'interno di MongoDB cambiano in base alle esigenze dell'applicazione nel tempo e potrebbe essere piuttosto costoso (o piuttosto rischioso).

A lungo termine, dobbiamo disporre di un database efficiente configurato facilmente e garantire una distribuzione del software competente. Raggiungere tutto questo in modo manuale comporta una serie di battute d'arresto come

  1. Complicato coordinamento tra i membri del team.
  2. Alte possibilità di ripetizione delle attività
  3. Suscettibile a molti errori ed errori umani
  4. Non è facile superare la complessità
  5. Ridotta collaborazione e insoddisfazione sul lavoro
  6. Dispendioso in termini di tempo
  7. Responsabilità e conformità scadenti

Le difficoltà di amministrazione del database sono principalmente incentrate su

  • Distribuzione
  • Mantenimento
  • Aggiornamento che può influire sul sovraccarico operativo fino a una riduzione del 95%.

Raggiungere questo obiettivo può richiedere molto tempo e sforzi manuali per MongoDB. Per garantire il successo è necessario disporre di un sistema semplice con il quale è possibile garantire che tutte le battute d'arresto sopra elencate possano essere affrontate da un'unica piattaforma in modo tempestivo, vale a dire in qualche modo un sistema automatizzato. Ci sono un certo numero di opzioni, ma in questo articolo discuteremo di come utilizzare Ansible.

Cos'è Ansible

Ansible è semplicemente un linguaggio universale che svela il mistero di come si fa il lavoro. In altre parole, è un motore di orchestrazione IT che automatizza l'implementazione delle applicazioni, la gestione della configurazione e orchestra attività IT più avanzate, come garantire aggiornamenti continui senza tempi di inattività e implementazioni continue.

Le macchine possono essere facilmente gestite senza agenti, con una maggiore attenzione alla sicurezza e all'affidabilità attraverso l'uso di un linguaggio progettato attorno all'"audibilità" da parte degli esseri umani.

Sebbene la distribuzione di MongoDB potrebbe non essere così difficile, la manutenzione, il backup e il monitoraggio diventano sempre più fattori di preoccupazione con il passare del tempo. Inoltre, non è così facile quando si è nuovi alla gestione dei database. Con Ansible gli sviluppatori possono distribuire e configurare le applicazioni con facilità, consente anche una rapida consegna a qualsiasi piattaforma di hosting.

Poiché Ansible non fa parte del sistema del cluster di database, può essere installato in qualsiasi computer remoto e una configurazione eseguita sull'host del database. Consulta la guida all'installazione per sapere quale versione è adatta al tuo sistema operativo.

Ansible, per impostazione predefinita, si connette a un host di database tramite un protocollo SSH.

Playbook Ansible

I playbook sono modelli in cui viene scritto il codice Ansible, quindi indirizzano Ansible stesso su cosa eseguire in un modo simile a una lista di cose da fare. Sono scritti in formato YAML (Yet Another Markup Language). Ciascuno contiene operazioni dettagliate che vengono seguite dall'utente su una macchina particolare che viene eseguita in sequenza. La loro struttura è costituita da uno o più Plays. Un Play è fondamentalmente un blocco di codice che mappa un insieme di istruzioni definite rispetto a un particolare host.

Tag YAML di uso comune in Ansible

  1. nome

    Questo è il tag che definisce il nome del playbook Ansible. Si consiglia di impostare un nome che definisca esattamente cosa farà.

  2. host

    Questo definisce un gruppo host o un elenco di host su cui devono essere eseguite le attività definite. È un tag obbligatorio che indica ad Ansible su quali host eseguire le attività elencate. Poiché le attività possono essere eseguite su più macchine, uguali o remote, è possibile definire un gruppo di voci host in questo tag.

  3. vari

    Come qualsiasi altro linguaggio di programmazione, avrai bisogno di variabili. Con questo tag puoi definire le variabili che utilizzerai nel tuo playbook.

  4. compiti

    Questo tag ti consentirà di elencare una serie di attività da eseguire. Le attività sono in realtà azioni che è necessario eseguire. Un campo attività definisce il nome dell'attività che essenzialmente aiuta il testo per l'utente durante il debug del playbook. Una parte di codice definita come modulo è collegata internamente da ciascuna attività e tutti gli argomenti da utilizzare all'interno del modulo vengono passati attraverso il tag attività.

Una semplice struttura di playbook assomiglia a questa...

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

Scrivere un semplice playbook per installare e avviare MongoDB

  1. Abilitazione dell'accesso SSH root

    Alcune configurazioni di nodi gestiti potrebbero dissuaderti dall'accesso come utente root, quindi è necessario definire un playbook per risolvere questo problema. Creeremo un playbook enable-root-access.yml che sarà simile a questo

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

    Quando esegui il comando

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

    Dovresti vedere qualcosa come

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Selezione di host e utenti in mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Aggiunta di attività da eseguire

    Le attività vengono eseguite in sequenza, quindi è necessario delinearle in modo sequenziale, ad es.

    1. apt_key per aggiungere chiavi del repository. Prima è necessario importare la chiave GPG pubblica MongoDB
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Aggiunta MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Installazione dei pacchetti e avvio di mongod, quindi ricarica il database dei pacchetti locale
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Gestione dei servizi, utilizzo del gestore per avviare e riavviare i servizi
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Multiplenines Diventa un DBA MongoDB - Portare MongoDB in produzioneScopri cosa devi sapere per distribuire, monitorare, gestire e ridimensionare MongoDBScarica gratuitamente

Il codice generale del playbook dovrebbe essere simile a questo

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

Possiamo quindi eseguire questo file con ansible usando il comando

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

Se il playbook è stato eseguito correttamente dovresti vederlo nel tuo terminale

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

Se ora esegui mongo, verrai indirizzato a 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

Conclusione

Ansible è un semplice motore IT open source che automatizza la distribuzione delle applicazioni, l'orchestrazione dei servizi e la fornitura del cloud.

Funziona collegando i nodi del database e spingendo fuori definisce le istruzioni note come moduli per loro, le esegue tramite SSH per impostazione predefinita e quindi eliminandole al termine. Non esegue alcun demone o server, quindi può essere eseguito da qualsiasi macchina remota. Nel prossimo tutorial, discuteremo come mantenere una replica MongoDB impostata nel cloud utilizzando Ansible.