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

Automazione della distribuzione del database MongoDB

Le organizzazioni utilizzano l'infrastruttura nel cloud perché offre velocità, flessibilità e scalabilità. Puoi immaginare che se riusciamo a creare una nuova istanza di database con un semplice clic e ci vogliono un paio di minuti prima che sia pronta, possiamo anche distribuire l'applicazione più velocemente rispetto all'ambiente locale.

A meno che tu non stia utilizzando il servizio cloud di MongoDB, i principali fornitori di servizi cloud non offrono un servizio MongoDB gestito, quindi distribuire una singola istanza o cluster non è un'operazione con un solo clic. Il modo più comune è avviare le macchine virtuali e quindi distribuirle su di esse. La distribuzione deve essere gestita dalla A alla Z:è necessario preparare l'istanza, installare il software del database, ottimizzare alcune configurazioni e proteggere l'istanza. Questi compiti sono essenziali, sebbene non siano sempre adeguatamente seguiti, con conseguenze potenzialmente disastrose.

L'automazione gioca un ruolo importante nell'assicurare che tutte le attività a partire dall'installazione, configurazione, rafforzamento e fino a quando il servizio di database non sia pronto. In questo blog parleremo dell'automazione della distribuzione per MongoDB.

Orchestratore software

Sono disponibili molti nuovi strumenti software per aiutare gli ingegneri a implementare e gestire la propria infrastruttura. La gestione della configurazione aiuta gli ingegneri a implementare in modo più rapido ed efficace, riducendo i tempi di distribuzione per i nuovi servizi. Le opzioni popolari includono Ansible, Saltstack, Chef e Puppet. Ogni prodotto ha vantaggi e svantaggi, ma funzionano tutti molto bene e sono estremamente popolari. La distribuzione di un servizio con stato come MongoDB ReplicaSet o Sharded Cluster può essere un po' più impegnativa poiché si tratta di configurazioni multi-server e gli strumenti hanno uno scarso supporto per il coordinamento incrementale e incrociato. Le procedure di distribuzione in genere richiedono l'orchestrazione tra i nodi, con attività eseguite in un ordine specifico.

Attività di distribuzione di MongoDB da automatizzare

La distribuzione di un server MongoDB implica una serie di cose; aggiungi il repository MongoDB in locale, installa il pacchetto MongoDB, configura la porta, il nome utente e avvia il servizio.

Compito:installa MongoDB

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

Compito:copia mongod.conf dal file di configurazione.

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

Compito:creare la configurazione del limite MongoDB:

- 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

Compito:configurare lo swappiness

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

Compito:configurare il tempo TCP Keepalive

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

Compito:assicurati che MongoDB si avvii automaticamente

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

Possiamo combinare tutte queste attività in un unico playbook ed eseguire il playbook per automatizzare la distribuzione. Se eseguiamo un playbook Ansible dalla console:

$ ansible-playbook -b mongoInstall.yml

Vedremo l'avanzamento della distribuzione dal nostro script Ansible, l'output dovrebbe essere simile al seguente:

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

Dopo la distribuzione, possiamo controllare il servizio MongoDB sul server di destinazione.

Automazione della distribuzione di MongoDB tramite ClusterControl GUI

Ci sono due modi per distribuire MongoDB usando ClusterControl. Possiamo usarlo dalla dashboard di ClusterControl, è basato su GUI e necessita solo di 2 finestre di dialogo fino a quando non attiva un nuovo lavoro per la nuova distribuzione di MongoDB.

Per prima cosa dobbiamo inserire l'utente e la password SSH, inserire il nome del cluster come mostrato di seguito:

E quindi, scegli il fornitore e la versione di MongoDB, definisci l'utente e password e l'ultimo è riempire l'indirizzo IP di destinazione

Automazione della distribuzione di MongoDB utilizzando s9s CLI

Dall'interfaccia della riga di comando, è possibile utilizzare gli strumenti di s9s. La distribuzione di MongoDB utilizzando s9s è solo un comando di una riga come di seguito:

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


Quindi distribuire MongoDB, che si tratti di un ReplicaSet o di un cluster suddiviso, è molto semplice ed è completamente automatizzato da ClusterControl.