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

Automatizzare MongoDB con SaltStack

La distribuzione del database per un numero multiplo di server diventa più complessa e richiede tempo quando si aggiungono nuove risorse o si apportano modifiche. Inoltre, esiste la probabilità di errori umani che possono portare a risultati catastrofici ogni volta che il sistema viene configurato manualmente.

Uno strumento di automazione della distribuzione del database ci consentirà di distribuire un database su più server che vanno dallo sviluppo agli ambienti di produzione. I risultati di una distribuzione automatizzata sono affidabili, più efficienti e prevedibili oltre a fornire le informazioni sullo stato corrente dei tuoi nodi che possono essere ulteriormente utilizzate per pianificare le risorse che dovrai aggiungere ai tuoi server. Con un'implementazione ben gestita, la produttività dei team di sviluppo e operativi migliora, consentendo così all'azienda di svilupparsi più velocemente, ottenere di più e, grazie alla facile distribuzione frequente, la configurazione generale del software sarà in definitiva migliore e funzionerà in modo affidabile per gli utenti finali.

MongoDB può essere distribuito manualmente ma l'attività diventa sempre più macchinosa quando devi configurare un cluster con molti membri ospitati su server diversi. Dobbiamo quindi decidere di utilizzare uno strumento automobilistico che possa risparmiarci lo stress. Alcuni degli strumenti disponibili che possono essere utilizzati includono Puppet, Chef, Ansible e SaltStack.

I principali vantaggi della distribuzione di MongoDB con uno qualsiasi di questi strumenti sono:

  1. Risparmio di tempo. Immagina di avere 50 nodi per il tuo database e di dover aggiornare la versione di MongoDB per ciascuno. Questo ti porterà anni a passare attraverso il processo. Tuttavia, con uno strumento automatico, dovrai solo scrivere alcune istruzioni ed emettere un comando per eseguire il resto dell'aggiornamento per te. Gli sviluppatori avranno quindi il tempo di lavorare su nuove funzionalità invece di correggere le implementazioni manuali.
  2. Errori ridotti e quindi soddisfazione del cliente. L'esecuzione di nuovi aggiornamenti può introdurre errori in un sistema di database, soprattutto se la configurazione deve essere eseguita manualmente. Con uno strumento come SaltStack, la rimozione dei passaggi manuali riduce l'errore umano e gli aggiornamenti frequenti con nuove funzionalità soddisferanno le esigenze dei clienti, mantenendo così l'organizzazione competitiva.
  3. Costo di configurazione inferiore. Con uno strumento di distribuzione, chiunque può distribuire anche te stesso poiché il processo stesso sarà molto più semplice. Ciò eliminerà la necessità che gli esperti facciano il lavoro e ridurrà gli errori

Cos'è SaltStack

SaltStack è uno strumento di esecuzione remota open source e un sistema di gestione della configurazione sviluppato in Python.

Le funzionalità di esecuzione remota vengono utilizzate per eseguire comandi su varie macchine in parallelo con un sistema di targeting flessibile. Se ad esempio hai 3 macchine server e desideri installare MongoDB per ciascuna, puoi eseguire i comandi di installazione su queste macchine contemporaneamente da un nodo master.

In termini di gestione della configurazione, viene creata un'interfaccia client-server per semplificare e trasformare in modo sicuro i componenti dell'infrastruttura nello stato desiderato.

Architettura SaltStack

Il modello di configurazione di base per SaltStack è Client-Server in cui il server può essere indicato come master e i client come slave. Il master emette comandi o meglio istruzioni come il sistema di controllo che deve essere eseguito dai client/minion che sono i sistemi controllati.

Componenti SaltSack

Quello che segue è ciò di cui è fatto SaltStack

  1. Maestro :Responsabile dell'emissione di istruzioni agli slave e del loro cambio nello stato desiderato dopo l'esecuzione.
  2. Segretario :È il sistema controllato che deve essere trasformato in uno stato desiderato.
  3. Grani di sale : si tratta di dati statici o metadati relativi al minion e costituiscono informazioni come il modello, il numero di serie, la capacità di memoria e il sistema operativo. Vengono raccolti quando il servitore si connette per la prima volta al server. Possono essere usati per prendere di mira un determinato gruppo di servitori in relazione ad alcuni aspetti. Ad esempio, puoi eseguire un comando che indica, installa MongoDB per tutte le macchine con un sistema operativo Windows.
  4. EModuli/istruzioni di esecuzione :Questi sono comandi ad hoc emessi a uno o più servitori target e vengono eseguiti dalla riga di comando.
  5. Pilastri :sono variabili definite dall'utente distribuite tra i minion. Sono usati per:configurazione dei minion, dati altamente sensibili, dati arbitrari e variabili. Non tutti i servitori sono accessibili a tutti i pilastri, è possibile limitare quali pilastri sono per un determinato gruppo di servitori.
  6. File di stato . Questo è il nucleo di Salt state System (SLS) e rappresenta lo stato in cui dovrebbe trovarsi il sistema. È equivalente a un playbook in caso di Ansible considerando che sono anche in formato YAML, ovvero
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. File principale :Utilizzato per mappare un gruppo di macchine e definire quali file di stato devono essere applicati. cioè

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Proxy di sale : Questa è una funzione che consente di controllare i dispositivi che non possono eseguire un salt-minion standard. Includono dispositivi di rete con un'API in esecuzione su un sistema operativo proprietario, dispositivi con limitazioni di CPU e memoria o dispositivi che non possono eseguire minion per motivi di sicurezza. È necessario utilizzare un proxy Junos per il rilevamento, il controllo, l'esecuzione remota e la gestione dello stato di questi dispositivi.

Installazione SaltStack

Possiamo utilizzare il comando pip per installare SaltStack come 

$ pip install salt

Per confermare l'installazione, esegui il comando $ salt --version e dovresti ottenere qualcosa come salt 2019.2.2 (Fluoro)

Prima di connettersi al master, il minion richiederà una configurazione minima dell'indirizzo ip del master e dell'id del minion che verrà utilizzato dal master come riferimento. Queste configurazioni possono essere eseguite nei file /etc/salt/minion.

Possiamo quindi eseguire il master in varie modalità che è demone o in modalità debug. Per il caso del demone avrai $salt-master -d e per la modalità di debug,  $salt-master -l debug. Dovrai accettare la chiave del servitore prima di avviarlo eseguendo $ salt-key -a nameOfMinion. Per elencare le chiavi disponibili, esegui $ salt-key -l

Nel caso del minion, possiamo avviarlo con $salt-minion -l debug.

Ad esempio, se vogliamo creare un file in tutti i minion dal master, possiamo eseguire il comando 

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Tutti i nodi avranno un nuovo file sample.text nella cartella salt_files. L'opzione * è usata per fare riferimento a tutti i minion. Per specificare, ad esempio, tutti i minion con nome id che hanno la stringa minion, utilizzeremo un'espressione regolare come di seguito 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

Per vedere i metadati raccolti per un determinato servitore, esegui:

$salt ‘minion1’ grains.items.

Configurazione di MongoDB con SaltStack

Possiamo creare un database chiamato myAppdata con setDatabase.sls con i contenuti di seguito 

classes:

- service.mongodb.server.cluster

parameters:

   _param:

     mongodb_server_replica_set: myAppdata

     mongodb_myAppdata_password: myAppdataPasword

     mongodb_admin_password: cloudlab

     mongodb_shared_key: xxx

   mongodb:

     server:

       database:

         myAppdata:

           enabled: true

           password: ${_param:mongodb_myAppdata_password}

           users:

           -  name: myAppdata

              password: ${_param:mongodb_myAppdata_password}

Avvio di un server MongoDB singolo 

mongodb:

  server:

    enabled: true

    bind:

      address: 0.0.0.0

      port: 27017

    admin:

      username: admin

      password: myAppdataPasword

    database:

      myAppdata:

        enabled: true

        encoding: 'utf8'

        users:

        - name: 'username'

          password: 'password'

Configurazione di un cluster MongoDB con SaltStack

mongodb:

  server:

    enabled: true

    logging:

      verbose: false

      logLevel: 1

      oplogLevel: 0

    admin:

      user: admin

      password: myAppdataPasword

    master: mongo01

    members:

      - host: 192.168.100.11

        priority: 2

      - host: 192.168.101.12

      - host: 192.168.48.13

    replica_set: default

    shared_key: myAppdataPasword

Conclusione

Come ClusterControl, SaltStack è uno strumento di automazione che può essere utilizzato per facilitare la distribuzione e le attività operative. Con uno strumento di automazione, ci sono errori ridotti, tempi di configurazione ridotti e risultati più affidabili.