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

Un'introduzione a Percona Server per MongoDB 4.2

Quando si sceglie una tecnologia di database NoSQL è necessario tenere in considerazione considerazioni importanti, come prestazioni, resilienza, affidabilità e sicurezza. Questi fattori chiave dovrebbero anche essere allineati con il raggiungimento degli obiettivi aziendali, almeno per quanto riguarda il database.

Molte tecnologie sono entrate in gioco per migliorare questi aspetti ed è consigliabile che un'organizzazione migliori le opzioni salienti e provi a integrarle nei sistemi di database.

Le nuove tecnologie dovrebbero garantire le massime prestazioni per migliorare il raggiungimento degli obiettivi aziendali a un costo operativo accessibile ma con funzionalità più manipolative come il rilevamento degli errori e i sistemi di avviso.

In questo blog discuteremo della versione Percona di MongoDB e di come espande la potenza di MongoDB in vari modi.

Cos'è Percona Server per MongoDB?

Affinché un database funzioni correttamente, deve esserci un server sottostante stabilito in modo ottimale per migliorare le transazioni di lettura e scrittura. Percona Server per MongoDB è un sostituto drop-in open source gratuito per MongoDB Community Edition, ma con funzionalità aggiuntive di livello aziendale. È progettato con alcuni importanti miglioramenti alla configurazione predefinita del server MongoDB.

Offre prestazioni elevate, maggiore sicurezza e affidabilità per prestazioni ottimali con una spesa ridotta per le relazioni con i fornitori di software proprietario.

Server Percona per funzionalità salienti di MongoDB

MongoDB Community Edition è il fulcro del server Percona considerando che costituisce già caratteristiche importanti come lo schema flessibile, le transazioni distribuite, la familiarità dei documenti JSON e l'elevata disponibilità nativa. Oltre a questo, Percona Server for MongoDB integra le seguenti caratteristiche salienti che gli consentono di soddisfare gli aspetti che abbiamo menzionato sopra:

  • Backup a caldo
  • Crittografia dei dati inattivi
  • Registrazione di controllo
  • Motore di memoria Percona
  • Autenticazione LDAP esterna con SASL
  • Integrazione con HashiCorp Vault
  • Profilazione delle query migliorata

Backup a caldo 

Il server Percona per MongoDB crea un backup fisico dei dati su un server in esecuzione in background senza alcun degrado operativo evidente. Ciò è possibile eseguendo il comando createBackup come amministratore nel database admin e specificando la directory di backup.

> use admin

switched to db admin

> db.runCommand({createBackup: 1, backupDir: "/my/backup/data/path"})

{ "ok" : 1 }

Quando ricevi { "ok" :1 }, il backup è riuscito. Altrimenti, se ad esempio specifichi un percorso di directory di backup vuoto, potresti ricevere una risposta di errore, ad esempio:

{ "ok" : 0, "errmsg" : "Destination path must be absolute" }

Il ripristino del backup richiede prima l'arresto dell'istanza mongod, la pulizia della directory dei dati, la copia dei file dalla directory e quindi il riavvio del servizio mongod. Questo può essere fatto eseguendo il comando seguente

$ service mongod stop && rm -rf /var/lib/mongodb/* && cp --recursive /my/backup/data/path /var/lib/mongodb/ && service mongod start

Puoi anche memorizzare il backup in formato archivio se utilizzi il server Percona per MongoDB 4.2.1-1 

> use admin

> db.runCommand({createBackup: 1, archive: "path/to/archive.tar" })

Puoi anche eseguire il backup direttamente su AWS S3 utilizzando le impostazioni predefinite o con più configurazioni. Per un backup del bucket S3 predefinito:

> db.runCommand({createBackup:1,  s3:{bucket:"backup", percorso:"newBackup"}})

Crittografia dati a riposo

MongoDB versione 3.2 ha introdotto la crittografia dei dati inattivi per il motore di archiviazione WiredTiger per garantire che i file di dati possano essere decrittografati e letti solo dalle parti con la chiave di decrittografia. La crittografia dei dati inattivi in ​​Percona Server per MongoDB è stata introdotta nella versione 3.6 per andare di pari passo con l'interfaccia della crittografia dei dati inattivi in ​​MongoDB. Tuttavia, l'ultima versione non include il supporto per i servizi di gestione delle chiavi Amazon AWS e KIMP.

La crittografia può essere applicata anche ai file di rollback quando i dati inattivi sono abilitati. Percona Server per MongoDB utilizza l'opzionecryptCipherMode con 2 modalità di cifratura selettive:

  1. AES256-CBC (modalità di cifratura predefinita)
  2. AES256-GCM

Puoi crittografare i dati con il comando seguente

$ mongod ... --encryptionCipherMode or 

$ mongod ... --encryptionCipherMode AES256-GCM

Utilizziamo l'opzione --ecryptionKeyFile per specificare il percorso di un file che contiene la chiave di crittografia.

$ mongod ... --enableEncryption --encryptionKeyFile <fileName>

Registrazione di controllo

Per ogni sistema di database, gli amministratori hanno il mandato di tenere traccia delle attività in corso. In Percona Server for MongoDB, quando il controllo è abilitato, il server genera un file di registro di controllo che costituisce informazioni su diversi eventi utente come autorizzazione e autenticazione. Tuttavia, avviando il server con il controllo abilitato, i log non verranno visualizzati dinamicamente durante il runtime.

L'Audit Logging in MongoDB Community Edition può accettare due formati di dati, JSON e BSON. Tuttavia, per Percona Server per MongoDB, la registrazione di controllo è limitata al solo file JSON. Il server registra anche solo comandi importanti contrariamente a MongoDB che registra tutto. Poiché la procedura di filtraggio in Percona non è chiara in termini di sintassi di filtraggio, abilitare il registro di controllo senza filtrare offrirebbe più voci dalle quali è possibile restringere le specifiche alle proprie.

Motore di memoria Percona

Questa è una configurazione speciale del motore di archiviazione WiredTiger che non memorizza i dati dell'utente su disco. I dati risiedono completamente e sono prontamente disponibili nella memoria principale ad eccezione dei dati diagnostici scritti su disco. Ciò rende l'elaborazione dei dati molto più veloce, ma con la considerazione che è necessario assicurarsi che sia disponibile memoria sufficiente per contenere il set di dati e che il server non debba spegnersi. È possibile selezionare un motore di archiviazione da utilizzare con il comando --storageEngine. I dati creati per un motore di archiviazione non possono essere compatibili con altri motori di archiviazione perché ogni motore di archiviazione ha il proprio modello di dati. Ad esempio per selezionare il motore di archiviazione in memoria. Per prima cosa interrompi qualsiasi istanza mongod in esecuzione e quindi immetti i comandi:

$ service mongod stop

$ mongod --storageEngine inMemory --dbpath <newDataDir>

Se hai già dei dati con la tua edizione MongoDB Community predefinita e desideri migrare a Percona Memory Engine, usa le utility mongodumb e mongorestore eseguendo il comando:

$ mongodump --out <dumpDir>

$ service mongod stop

$ rm -rf /var/lib/mongodb/*

$ sed -i '/engine: .*inMemory/s/#//g' /etc/mongod.conf

$ service mongod start

$ mongorestore <dumpDir>

Autenticazione LDAP esterna con SASL

Ogni volta che i client effettuano una richiesta di lettura o scrittura all'istanza mongod di MongoDB, devono prima autenticarsi sul database utente del server MongoDB. L'autenticazione esterna consente al server MongoDB di verificare le credenziali del client (nome utente e password) rispetto a un servizio separato. L'architettura di autenticazione esterna prevede:

  1. Server LDAP che memorizza in remoto tutte le credenziali utente
  2. Daemon SASL utilizzato come proxy locale del server MongoDB per il servizio LDAP remoto.
  3. Libreria SASL:crea i dati di autenticazione necessari per client e server MongoDB.

Sequenza della sessione di autenticazione

  • Il Cliente si connette a un'istanza mongod in esecuzione e crea una richiesta di autenticazione PLAIN utilizzando la libreria SASL.
  • La richiesta di autenticazione viene quindi inviata al server come un comando Mongo speciale che viene poi ricevuto dal server mongod con il suo payload di richiesta.
  • Il server crea alcune sessioni SASL derivate con le credenziali del client utilizzando il proprio riferimento alla libreria SASL.
  • Il server mongod passa il payload di autenticazione alla libreria SASL che lo consegna al demone saslauthd. Il demone lo passa a LDAP e attende una risposta SI o NO alla richiesta di autenticazione controllando se l'utente esiste e la password inviata è corretta.
  • Saslauthd passa questa risposta al server mongod attraverso la libreria SASL che quindi autentica o rifiuta la richiesta di conseguenza.

 Ecco un'illustrazione di questo processo:

Per aggiungere un utente esterno a un server mongod:

> db.getSiblingDB("$external").createUser( {user : username, roles: [ {role: "read", db: "test"} ]} );

Gli utenti esterni, tuttavia, non possono avere ruoli assegnati nel database di amministrazione.

Integrazione del Vault HashiCorp

HashCorp Vault è un prodotto progettato per gestire i segreti e proteggere i dati sensibili archiviando in modo sicuro e controllando strettamente l'accesso alle informazioni riservate. Con la versione precedente di Percona, la chiave di crittografia dei dati inattivi veniva archiviata localmente sul server all'interno del file della chiave. L'integrazione con HashCorp Vault protegge molto meglio la chiave di crittografia.

Profilazione delle query migliorata

La profilazione ha un impatto negativo sulle prestazioni del database, soprattutto quando vengono emesse così tante query. Il server Percona per MongoDB viene in aiuto limitando il numero di query raccolte dal profiler del database, quindi diminuisce il suo impatto sulle prestazioni.

Conclusione

Percona Server per MongoDB è un database open source avanzato e altamente scalabile che può fungere da sostituto drop-in compatibile per MongoDB Community Edition ma con sintassi e configurazione simili. Migliora l'ampia sicurezza dei dati, in particolare uno a riposo e migliora le prestazioni del database attraverso la fornitura del motore Percona Server, limitando la velocità di profilazione tra le altre funzionalità.

Percona Server per MongoDB è completamente supportato da ClusterControl come opzione per la distribuzione.