Sebbene MongoDB abbia trascorso quasi un decennio a raggiungere la maturità (rilascio iniziale febbraio 2009), la tecnologia è un po' un mistero per coloro che hanno esperienza negli ambienti di database relazionali convenzionali (RDBMS). L'integrazione di NoSQL in un ambiente esistente senza una conoscenza approfondita può essere difficile. Non è raro vedere MongoDB in esecuzione su MySQL o un altro database RDBMS.
L'esperienza di RDBMS può aiutare a comprendere alcuni processi, ma devi sapere come tradurre la tua esperienza nel mondo NoSQL. La gestione degli ambienti di produzione prevede fasi come l'implementazione, il monitoraggio dei tempi di attività e delle prestazioni, il mantenimento della sicurezza del sistema, la gestione dell'HA, i backup e così via. Sia RDBMS che NoSQL sono opzioni praticabili, ma ci sono differenze critiche specifiche tra i due che gli utenti devono tenere a mente durante l'implementazione o la gestione di MongoDB. La tecnologia cambia rapidamente e dobbiamo adattarci rapidamente.
Quando MongoDB è improvvisamente una tua responsabilità, gli strumenti di gestione garantiscono che i database MongoDB che gestisci siano stabili e sicuri. L'utilizzo di processi e automazione predefiniti può non solo farti risparmiare tempo, ma anche proteggerti dagli errori comuni. Una piattaforma di gestione che affronti sistematicamente tutti i diversi aspetti del ciclo di vita del database sarà più solida rispetto all'applicazione di patch insieme a una serie di soluzioni puntuali.
Al centro di ClusterControl c'è la sua funzionalità di automazione che ti consente di automatizzare le attività del database che devi eseguire regolarmente, come la distribuzione di nuovi database, l'aggiunta e la scalabilità di nuovi nodi, la gestione dei backup, l'elevata disponibilità e il failover, le modifiche alla topologia, gli aggiornamenti e altro ancora. ClusterControl fornisce sicurezza programmata, mantenendo l'integrità dell'infrastruttura del database. Inoltre, con ClusterControl, gli utenti MongoDB non sono più soggetti al vendor lock-in; qualcosa che è stato messo in discussione da molti di recente. Puoi distribuire e importare gratuitamente una varietà di versioni e fornitori di MongoDB da un'unica console. Gli utenti di MongoDB devono spesso utilizzare una combinazione di strumenti e script fatti in casa per soddisfare i propri requisiti, ed è bene sapere che li puoi trovare combinati in un unico prodotto.
In questo articolo, ti mostreremo come distribuire e gestire MongoDB 4.0 in modo automatizzato. Troverai qui come fare:
- Installazione ClusterControl
- Processo di distribuzione di MongoDB
- Distribuisci un nuovo cluster
- Importa il cluster esistente
- Ridimensionamento di MongoDB
- Leggi il ridimensionamento (replicaSet)
- Ridimensionamento della scrittura (sharding)
- Protezione di MongoDB
- Monitoraggio e trend
- Backup e ripristino
Installazione ClusterControl
Per iniziare con ClusterControl è necessaria una macchina virtuale o un host dedicato. La macchina virtuale e i requisiti di sistema supportati sono descritti qui. La VM di base può iniziare da 2 GB, 2 core e spazio su disco 20 GB di spazio di archiviazione, in locale o nel cloud.
L'installazione è ben descritta nella documentazione, ma fondamentalmente si tratta di scaricare lo script di installazione che ti guiderà attraverso la procedura guidata. Lo script della procedura guidata configura il database interno, installa i pacchetti necessari, i repository ed esegue altre modifiche necessarie. Per gli ambienti di blocco Internet, puoi utilizzare il processo di installazione offline.
ClusterControl richiede l'accesso SSH agli host del database e il monitoraggio può essere basato su agente o senza agente. La gestione è senza agenti.
L'installazione di SSH senza password su tutti i nodi di destinazione (ClusterControl e tutti gli host di database) comporta l'esecuzione dei seguenti comandi sul server ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Distribuzione e ridimensionamento di MongoDB
Distribuisci un nuovo cluster MongoDB 4.0
Una volta entrati nell'interfaccia ClusterControl, la prima cosa da fare è distribuire un nuovo cluster o importarne uno esistente. La nuova versione 1.7.1 introduce il supporto per la versione 4.0. Ora puoi distribuire/importare e gestire MongoDB v4.0 con il supporto per le connessioni SSL.
Seleziona l'opzione "Distribuisci cluster di database" e segui le istruzioni visualizzate.
ClusterControl Deploy Database ClusterQuando scegliamo MongoDB, dobbiamo specificare Utente, Chiave o Password e la porta per la connessione tramite SSH ai nostri server. Abbiamo anche bisogno del nome per il nostro nuovo cluster e se vogliamo che ClusterControl installi per noi il software e le configurazioni corrispondenti.
Dopo aver impostato le informazioni di accesso SSH, dobbiamo inserire i dati per accedere al nostro database. Possiamo anche specificare quale repository utilizzare. La configurazione del repository è un aspetto importante per i server di database ei cluster. È possibile disporre di tre tipi di repository durante la distribuzione di server/cluster di database utilizzando ClusterControl:
- Utilizzare il repository del fornitore
Fornire il software impostando e utilizzando il repository del software preferito del fornitore del database. ClusterControl installerà l'ultima versione di ciò che viene fornito dal repository del fornitore del database. - Non configurare i repository del fornitore
Esegui il provisioning del software utilizzando il repository del software preesistente già impostato sui nodi. L'utente deve configurare manualmente il repository del software su ciascun nodo del database e ClusterControl utilizzerà questo repository per la distribuzione. Questo è utile se i nodi del database funzionano senza connessioni Internet. - Utilizza repository con mirroring (crea un nuovo repository)
Crea e rispecchia il repository del fornitore di database corrente e quindi distribuiscilo utilizzando il repository con mirroring locale. Ciò consente di "congelare" le versioni correnti dei pacchetti software.
Nel passaggio successivo, dobbiamo aggiungere i nostri server al cluster che creeremo. Quando aggiungiamo i nostri server, possiamo inserire IP o nome host. Per quest'ultimo, dobbiamo avere un server DNS o aver aggiunto i nostri server MongoDB al file di risoluzione locale (/etc/hosts) del nostro ClusterControl, in modo che possa risolvere il nome corrispondente che si desidera aggiungere. Per il nostro esempio, distribuiremo un ReplicaSet con tre server, uno primario e due secondari. È possibile distribuire solo 2 nodi MongoDB (senza arbitro). L'avvertenza di questo approccio non è il failover automatico, poiché una configurazione a 2 nodi è vulnerabile alla divisione del cervello. Se il nodo primario si interrompe, è necessario il failover manuale per rendere primario l'altro server. Il failover automatico funziona bene con 3 nodi e più. Si raccomanda che un set di repliche abbia un numero dispari di membri votanti. La tolleranza agli errori per un set di repliche è il numero di membri che possono diventare non disponibili e lasciare comunque un numero sufficiente di membri nel set per eleggere un primario. La tolleranza agli errori per tre membri è uno, per cinque è due ecc.
Nella stessa pagina puoi scegliere tra diverse versioni di MongoDB:
ClusteControl Deploy MongoDB versione 4.0Quando tutto è pronto, premi il pulsante di distribuzione. Puoi monitorare lo stato della creazione del nostro nuovo cluster dal monitor attività ClusterControl. Al termine dell'attività, possiamo vedere il nostro cluster nella schermata principale di ClusterControl e nella vista della topologia.
Vista Topologia ClusterControlCome possiamo vedere nell'immagine, una volta creato il nostro cluster, possiamo eseguire diverse attività su di esso, come convertire il set di repliche in shard o aggiungere nodi al cluster.
Ridimensionamento di ClusterControlImporta un nuovo cluster
Abbiamo anche la possibilità di gestire un cluster esistente importandolo in ClusterControl. Tale ambiente può essere creato da ClusterControl o altri metodi come l'installazione della finestra mobile.
ClusterControl import MongoDBInnanzitutto, dobbiamo inserire le credenziali di accesso SSH ai nostri server. Quindi inseriamo le credenziali di accesso al nostro database, la directory dei dati del server e la versione. Aggiungiamo i nodi per IP o nome host, allo stesso modo di quando distribuiamo, e premiamo su Importa. Una volta terminata l'attività, siamo pronti per gestire il nostro cluster da ClusterControl.
Ridimensionamento di MongoDB
Uno dei capisaldi di MongoDB è che è stato creato tenendo conto dell'elevata disponibilità e del ridimensionamento. Il ridimensionamento può essere eseguito verticalmente aggiungendo più risorse al server o orizzontalmente con più nodi. Il ridimensionamento orizzontale è ciò in cui MongoDB è bravo e non è molto di più che distribuire il carico di lavoro su più macchine. In effetti, stiamo facendo uso di più box hardware di base a basso costo, piuttosto che eseguire l'aggiornamento a un server più costoso ad alte prestazioni. MongoDB offre sia il ridimensionamento in lettura che in scrittura e scopriremo le differenze tra queste due strategie per te. Se scegliere il ridimensionamento in lettura o in scrittura, tutto dipende dal carico di lavoro della tua applicazione:se la tua applicazione tende a leggere più spesso di quanto non scriva dati, probabilmente vorrai utilizzare le capacità di ridimensionamento in lettura di MongoDB.
Con ClusterControl l'aggiunta di più server al cluster è un passaggio facile. Puoi farlo dalla GUI o dalla CLI. Per gli utenti più avanzati puoi utilizzare ClusterControl Developer Studio e scrivere una condizione di base della risorsa per espandere il tuo cluster orizzontalmente.
MongoDB ReplicaSetSharding
La soluzione di sharding MongoDB è simile ai framework di sharding esistenti per altre importanti soluzioni di database. Utilizza una tipica soluzione di ricerca, in cui lo sharding è definito in una chiave shard e gli intervalli sono archiviati all'interno di un database di configurazione. MongoDB lavora con tre componenti per trovare lo shard corretto per i tuoi dati. Un tipico ambiente MongoDB con partizionamento orizzontale è simile al seguente:
MongoDB ShardingIl primo componente utilizzato è lo shard router chiamato mongos. Tutte le operazioni di lettura e scrittura devono essere inviate al router shard, facendo in modo che tutti gli shard agiscano come un unico database per l'applicazione client. Il router shard indirizzerà le query agli shard appropriati consultando il Configserver.
ClusterControl Converti in ShardLa gestione degli shard è davvero semplice in MongoDB. Puoi aggiungere e rimuovere frammenti online e il router shard MongoDB si adatterà automaticamente a ciò che gli dici. Se desideri saperne di più su come gestire al meglio gli shard, leggi il nostro post sul blog sulla gestione degli shard di MongoDB.
Protezione di MongoDB
Risorse correlate ClusterControl per MongoDB MongoDB Automation &Management con ClusterControlMongoDB viene fornito con pochissima sicurezza pronta all'uso:ad esempio, l'autenticazione è disabilitata per impostazione predefinita. In altre parole:per impostazione predefinita, chiunque ha i diritti di root su qualsiasi database. Una delle modifiche applicate da MongoDB per mitigare i rischi è stata quella di modificare il binding predefinito in 127.0.0.1. Ciò impedisce che venga associato all'indirizzo IP esterno, ma, naturalmente, questo verrà ripristinato dalla maggior parte delle persone che lo installano. ClusterControl rimuove l'errore umano e fornisce l'accesso a una suite di funzionalità di sicurezza, per proteggere automaticamente i database da hack e altre minacce. In precedenza abbiamo pubblicato un breve video con suggerimenti per la sicurezza.
La nuova versione di ClusterControl offre il supporto SSL per le connessioni MongoDB. L'abilitazione di SSL aggiunge un altro livello di sicurezza per la comunicazione tra le applicazioni (incluso ClusterControl) e il database. I client MongoDB aprono connessioni crittografate ai server di database e verificano l'identità di tali server prima di trasferire qualsiasi informazione sensibile.
Per abilitare la connessione SSL è necessario utilizzare l'ultimo client s9s. Puoi installarlo con
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Oppure segui altri possibili metodi di installazione descritti qui.
Una volta installati gli strumenti s9s (versione minima 1.7-93.1), puoi utilizzare --enable-ssl flag per abilitare la connessione SSL.
Esempio sotto:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl eseguirà tutti i passaggi necessari, inclusa la creazione della certificazione su tutti i nodi del cluster. Tali certificati possono essere mantenuti in seguito nella scheda Gestione chiavi.
Gestione chiavi ClusterControlMonitoraggio
Quando si lavora con i sistemi di database, dovresti essere in grado di monitorarli. Ciò ti consentirà di identificare tendenze, pianificare aggiornamenti o miglioramenti o reagire in modo efficace a eventuali problemi o errori che potrebbero sorgere.
Panoramica di ClusterControl MongoDBIl nuovo ClusterControl 1.7.1 aggiunge il monitoraggio ad alta risoluzione per MongoDB based. Utilizza Prometheus come archivio dati con il linguaggio di query PromQL. L'elenco dei dashboard include i dashboard di MongoDB Server, MongoDB ReplicaSet, Panoramica del sistema e Panoramica del cluster. ClusterControl installa gli agenti Prometheus, configura le metriche e mantiene l'accesso alla configurazione degli esportatori di Prometheus tramite la sua GUI, in modo da poter gestire meglio la configurazione dei parametri come i flag di raccolta per gli esportatori (Prometheus). Abbiamo descritto in dettaglio cosa è possibile monitorare di recente nell'articolo Come monitorare MongoDB con Prometheus e ClusterControl.
Dashboard ClusterControl MongoDB SCUMMAvvisi
In qualità di operatore di database, dobbiamo essere informati ogni volta che si verifica qualcosa di critico nel nostro database. I tre metodi principali in ClusterControl per ricevere un avviso includono:
- notifiche e-mail
- integrazioni
- consiglieri
È possibile impostare le notifiche e-mail a livello di utente. Vai su Impostazioni> Notifiche e-mail. Dove puoi scegliere tra criticità e tipo di avviso da inviare.
Il metodo successivo consiste nell'utilizzare i servizi di integrazione. Questo serve per passare la categoria specifica di eventi all'altro servizio come ticket ServiceNow, Slack, PagerDuty ecc. in modo da poter creare metodi di notifica avanzati e integrazioni all'interno della tua organizzazione.
Servizi di integrazione ClusterControlL'ultimo consiste nel coinvolgere sofisticate analisi delle metriche nella sezione Advisor, dove puoi creare controlli e trigger intelligenti. Un esempio qui potrebbe essere una previsione sull'utilizzo dello spazio su disco o il ridimensionamento del cluster aggiungendo nodi quando il carico di lavoro raggiunge il livello preimpostato.
ClusterControl Advisors per MongoDBBackup e ripristino
Ora che hai la tua replica MongoDB configurata e funzionante e hai il monitoraggio in atto, è il momento del passaggio successivo:assicurati di avere un backup dei tuoi dati.
ClusterControl Crea criterio di backupClusterControl fornisce un'interfaccia per la gestione del backup MongoDB con supporto per la pianificazione e report creativi. Ti offre due opzioni per i metodi di backup.
- Discarica di Mongo
- Backup coerente con Mongodb
Mongodump esegue il dump di tutti i dati in formato Binary JSON (BSON) nella posizione specificata. Mongorestore può in seguito utilizzare i file BSON per ripristinare il database. Il backup coerente di ClusterControl MongoDB include le transazioni dell'oplog in esecuzione durante l'esecuzione del backup.
Crittografia del backup di ClusterControlUna buona strategia di backup è una parte fondamentale di qualsiasi sistema di gestione del database. ClusterControl offre molte opzioni per backup e ripristino/ripristino.
Controllo della pianificazione del backup di ClusterControlLa conservazione del backup di ClusterControl è configurabile; puoi scegliere di conservare il backup per qualsiasi periodo di tempo o di non eliminare mai i backup. La crittografia AES256 viene utilizzata per proteggere i tuoi backup da elementi non autorizzati. Per un ripristino rapido, i backup possono essere ripristinati direttamente nel cluster di backup:ClusterControl gestisce l'intero processo di ripristino dall'avvio al ripristino del cluster, rimuovendo dal processo i passaggi manuali soggetti a errori.