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

Come distribuire MongoDB per l'alta disponibilità

Introduzione

MongoDB offre un ottimo supporto per l'elevata disponibilità tramite ReplicaSet. Tuttavia, la distribuzione di un ReplicaSet non è sufficiente per un sistema pronto per la produzione. Quest'ultimo richiede un po' di pianificazione. L'implementazione è solo il passaggio iniziale, quindi dobbiamo dotare i team operativi di monitoraggio, avvisi, sicurezza, rilevamento di anomalie o guasti, ripristino/failover automatico, gestione del backup e altri strumenti per mantenere l'ambiente attivo e funzionante.

Prerequisiti

Prima di poter iniziare con la distribuzione di MongoDB con ClusterControl, sono necessari alcuni preparativi. Le piattaforme supportate sono RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS e Debian 7.x/8.x I requisiti minimi per le risorse del sistema operativo sono 2 GB di RAM, 2 CPU e 20 GB di spazio su disco in esecuzione su x86 architettura. ClusterControl stesso può essere eseguito su macchine virtuali normali o host barebone in esecuzione in locale, dietro un firewall o su macchine virtuali cloud.

Inoltre, ClusterControl richiede che le porte utilizzate dai seguenti servizi siano aperte/abilitate:
ICMP (echo reply/request)
SSH (l'impostazione predefinita è 22)
HTTP (l'impostazione predefinita è 80)
HTTPS (l'impostazione predefinita è 443)
MySQL (l'impostazione predefinita è 3306) (database interno)
CMON RPC (l'impostazione predefinita è 9500)
CMON RPC TLS (l'impostazione predefinita è 9501)
Eventi CMON (l'impostazione predefinita è 9510)
CMON SSH (l'impostazione predefinita è 9511)
CMON Cloud (l'impostazione predefinita è 9518)

Porta di streaming per i backup tramite netcat (l'impostazione predefinita è 9999)

Il modo più semplice e conveniente per installare ClusterControl consiste nell'utilizzare lo script di installazione fornito da Manynines. Scarica semplicemente lo script ed eseguilo come utente root o utente con autorizzazione root sudo. Se hai bisogno di un approccio più manuale, ad esempio se i tuoi server sono completamente privi di accesso a Internet, puoi seguire le istruzioni fornite nella documentazione di ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Segui la procedura guidata di installazione in cui verrai guidato con la configurazione di un server di database ClusterControl interno e le sue credenziali, la password cmon per l'utilizzo di ClusterControl e così via. Dovresti ottenere la seguente riga una volta completata l'installazione:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Il prossimo passo è generare una chiave SSH che useremo per configurare l'SSH senza password in seguito. Se hai una coppia di chiavi che desideri utilizzare, puoi saltare la creazione di una nuova.

Puoi utilizzare qualsiasi utente nel sistema, ma deve avere la capacità di eseguire operazioni da superutente (sudoer). In questo esempio, abbiamo selezionato l'utente root:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Configura SSH senza password su tutti i nodi che desideri monitorare/gestire tramite ClusterControl. In questo caso, lo configureremo su tutti i nodi nello stack (incluso il nodo ClusterControl stesso). Sul nodo ClusterControl, eseguire i seguenti comandi per copiare le chiavi ssh e specificare la password di root quando richiesto:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

È quindi possibile verificare se funziona eseguendo il comando seguente sul nodo ClusterControl:

$ ssh [email protected] "ls /root"

Assicurati di poter vedere il risultato del comando sopra senza dover inserire una password.
Al termine dell'installazione dovresti essere in grado di accedere all'interfaccia web tramite

https://<your_vm_name>/clustercontrol/#

Dopo il primo accesso, vedrai una finestra con le opzioni per iniziare con la tua prima distribuzione o importare un cluster esistente.

ClusterControl Distribuisci e importa il cluster esistente

Configura repository

Prima di iniziare la distribuzione, diamo un'occhiata al sistema di gestione dei pacchetti. Il processo di distribuzione ClusterControl supporta l'intero processo di installazione del cluster. Ciò include le regolazioni del sistema operativo e il download e l'installazione del pacchetto. Se i nodi del tuo database hanno un accesso limitato a Internet e non puoi scaricare i pacchetti direttamente dal nodo, puoi creare un repository di pacchetti direttamente sull'host ClusterControl.

Repository del pacchetto ClusterControl

Esistono tre modi per mantenere i pacchetti MongoDB in ClusterControl.

Utilizza i repository dei fornitori

Installa il software impostando e utilizzando il repository software preferito dal fornitore del database. ClusterControl installerà l'ultima versione di ciò che è archiviato dal repository MongoDB.

Non configurare i repository dei fornitori

Installare il software utilizzando il repository software preesistente già impostato sul sistema operativo. L'utente deve configurare manualmente il repository del software su ciascun nodo del database e ClusterControl utilizzerà questo repository per la distribuzione del pacchetto. Questo è utile se i nodi del database funzionano senza connessioni Internet e la tua azienda ha un sistema di pacchetti esterno con pacchetti MongoDB attivi.

Usa repository con mirroring (Crea nuovo repository)

Crea ed esegui il mirroring del repository del fornitore attuale, quindi distribuiscilo utilizzando il repository con mirroring locale. Consente inoltre di "congelare" le versioni recenti dei pacchetti software utilizzati per eseguire il provisioning di un cluster di database per un fornitore specifico (ad esempio, utilizzare solo i pacchetti Percona).

ClusterControl automatizza la creazione di repository di pacchetti interni

Distribuire ReplicaSet

ClusterControl supporta MongoDB/Percona Server per MongoDB 3.x ReplicaSet. Per iniziare con la distribuzione del nuovo cluster, vai all'opzione di distribuzione nell'angolo in alto a destra. Quando installi i nodi del database, usa sempre macchine virtuali pulite e minime. Le dipendenze del pacchetto esistenti potrebbero essere rimosse se necessario. Verranno installati nuovi pacchetti e quelli esistenti potranno essere rimossi durante il provisioning del nodo con il software richiesto.

Il primo passaggio del processo di distribuzione consiste nel fornire le credenziali ssh appropriate agli host su cui si sta distribuendo il cluster. Poiché ClusterControl utilizza ssh senza password per connettersi e configurare i tuoi host, è necessaria una chiave ssh.

Installazione guidata cluster MongoDB ClusterControl

È consigliabile utilizzare un account utente non privilegiato per accedere agli host, quindi è possibile fornire una password sudo per facilitare le attività amministrative. Se l'account utente non richiede una password sudo, questa non è necessaria. Hai anche la possibilità di disabilitare iptables e AppArmor o SELinux sull'host per evitare il problema con la distribuzione iniziale.

Nella schermata seguente, puoi scegliere di installare i binari MongoDB da MongoDB Inc o da Percona. Anche in questo caso, devi specificare il tuo account utente amministrativo e la password MongoDB poiché è richiesta la sicurezza a livello di utente.

Installazione guidata di ClusterControl MongoDB, ReplicaSet

In questa schermata puoi anche vedere quale modello di configurazione viene utilizzato. ClusterControl utilizza modelli di file di configurazione per garantire distribuzioni ripetibili. I modelli sono archiviati sull'host ClusterControl e possono essere modificati direttamente utilizzando la riga di comando o tramite l'interfaccia utente di ClusterControl. Puoi anche scegliere di utilizzare i repository del fornitore, se lo desideri, o scegliere il tuo repository. È inoltre possibile creare automaticamente un nuovo repository sull'host ClusterControl. Ciò consente di bloccare la versione di MongoDB che ClusterControl distribuirà alla versione corrente. Dopo aver eseguito la configurazione appropriata qui, fai clic su Distribuisci per procedere.

Distribuisci partizionamento orizzontale

ClusterControl può anche distribuire cluster partizionati. Sono supportati due metodi per farlo. Innanzitutto, puoi convertire un MongoDB ReplicaSet esistente in un cluster suddiviso, come mostrato di seguito.

ClusterControl Deploy MongoDB shard

Quando si fa clic su "Converti in shard", viene richiesto di aggiungere almeno un server di configurazione (per gli ambienti di produzione, è necessario aggiungerne tre) e un router, noto anche come processo "mongos". La fase finale è scegliere i modelli di configurazione MongoDB per il server di configurazione e il router, nonché la directory dei dati. Infine, fai clic su Distribuisci. Al termine, verrà visualizzato nella visualizzazione Cluster di database. Mostrerà la salute del tuo shard invece delle singole istanze. È anche possibile aggiungere ulteriori shard secondo necessità.

Converti in frammento

Se si verificano problemi di ridimensionamento, è possibile ridimensionare questo ReplicaSet aggiungendo più secondari o aumentando la scalabilità orizzontale tramite partizionamento orizzontale. Puoi convertire un ReplicaSet esistente in un cluster partizionato, ma questo è un processo lungo in cui potresti facilmente commettere errori. In ClusterControl abbiamo automatizzato questo processo, in cui aggiungiamo automaticamente i server Config, i router shard e abilitiamo lo sharding.

Per convertire un ReplicaSet in un cluster partizionato, puoi semplicemente attivarlo tramite il menu a discesa delle azioni:

ClusterControl Converti in shard

Programma criteri di backup

È essenziale mantenere il backup del database e che il database disponga di un processo semplice e valido per il backup. ClusterControl supporta backup e ripristini completamente coerenti del set di repliche MongoDB o del cluster partizionato.

I backup possono essere eseguiti manualmente o possono essere programmati. È supportata la centralizzazione dei backup, con backup archiviati nel filesystem del Controller, incluse le directory montate in rete o caricati su un provider Cloud preconfigurato:i provider attualmente supportati sono Google Cloud Platform, Amazon Web Services e Microsoft Azure. Ciò ti consente di sfruttare appieno le funzionalità avanzate di gestione del ciclo di vita fornite da Amazon e Google per funzionalità quali programmi di conservazione personalizzati, archiviazione a lungo termine e crittografia a riposo, tra le altre.

La conservazione del backup è 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.

Abilita rapporti operativi

Con ClusterControl puoi pianificare rapporti tra ambienti come "Rapporto di sistema giornaliero", "Rapporto di aggiornamento del pacchetto", "Rapporto di modifica dello schema", nonché "Backup" e "Disponibilità". Questi rapporti ti aiuteranno a mantenere il tuo ambiente sicuro e operativo. Vedrai anche consigli su come correggere le lacune. I report in formato HTML possono essere inviati via e-mail a SysOps, DevOps o persino ai manager che desiderano ricevere aggiornamenti regolari sullo stato dello stato di un determinato sistema.

Consulenti per le prestazioni

I consulenti forniscono consigli specifici su come affrontare problemi in aree quali prestazioni, sicurezza, gestione dei registri, configurazione, spazio di archiviazione e altro. ClusterControl viene fornito con un elenco di advisor predefiniti che hanno lo scopo di tenere traccia dello stato di diverse metriche e dello stato dei database. Quando necessario, viene creato un avviso. Possono essere estesi con script manuali. Per ulteriori informazioni, seguire il nostro recente blog su "Come automatizzare l'analisi del carico di lavoro del database con ClusterControl Performance Advisor".

Tra i vari consulenti per le prestazioni del sistema operativo, puoi trovare i seguenti relativi a MongoDB.

MongoDB consulenti di partizionamento orizzontale
connessioni utilizzate
verifica della replica
finestra di replica

Distribuzione nel cloud

A partire dalla versione 1.6, ClusterControl consente di creare un MongoDB 3.4 ReplicaSet nel cloud. Le piattaforme cloud supportate sono Amazon AWS, Google Cloud e Microsoft Azure.

La procedura guidata ti guiderà attraverso la creazione della macchina VM e le impostazioni di MongoDB, tutto in un unico posto.

ClusterControl distribuisce MongoDB ReplicaSet nel cloud

Il processo ti consente di scegliere i parametri del sistema operativo inclusa la configurazione della rete. Non è necessario copiare le chiavi SSH, verranno aggiunte automaticamente. Al termine del lavoro, vedrai il tuo cluster nella dashboard principale. D'ora in poi, puoi gestire il tuo cluster MongoDB come qualsiasi altro in ClusterControl.

ClusterControl distribuisce MongoDb RelicaSet nel cloud, impostazioni di rete VM

Suggerimenti per la sicurezza

A questo punto il tuo nuovo cluster dovrebbe essere attivo e funzionante. Prima di consentire a utenti e processi applicativi di accedere ai dati, è necessario definire le impostazioni di sicurezza del cluster. Nei nostri blog precedenti, abbiamo sollevato dubbi sulla configurazione di sicurezza predefinita. Ecco alcune delle cose principali che devi considerare prima di passare il tuo nuovo cluster ad altri team.

Cambia le porte predefinite - per impostazione predefinita, MongoDB si legherà alle porte standard:27017 per MongoDB ReplicaSet o Shard Router, 27018 per shard e 27019 per i server Config. L'utilizzo di porte standard non è consigliato in quanto semplifica la possibilità di un attacco hacker.

Abilita autenticazione - senza autenticazione, gli utenti possono accedere senza password. Abilita l'autenticazione su tutti i tuoi ambienti (sviluppo, certificazione e produzione).

security:
    Authentication: on

Utilizza password complesse - se necessario, utilizza un generatore di password per generare password complesse.

Aggiungi file della chiave di replica - con il keyfile abilitato, l'autenticazione del flusso di replica sarà crittografata.

Crittografa i tuoi backup - ClusterControl ti consente di crittografare i tuoi backup.

Per ulteriori letture, abbiamo un blog su come proteggere MongoDB.

Abilita il ripristino automatico del cluster

L'ultima ma non meno importante funzionalità da abilitare sarebbe il ripristino automatico del nodo e del cluster.

ClusterControl può lavorare per te come membro del team DBA esteso 24 ore su 24, 7 giorni su 7. Ci sono due funzioni principali qui. Ripristino automatico del nodo e ripristino automatico del cluster.

Quando il ripristino automatico del nodo è abilitato, ClusterControl reagirà ai problemi del nodo e, in caso di errori, tenterà di ripristinare i singoli nodi. Questo serve per affrontare cose come un processo che esegue la memoria o un servizio che richiede un avvio dopo un'interruzione di corrente, qualunque cosa stia causando un problema con il servizio inattivo.

L'opzione di ripristino del cluster è ancora più sofisticata. Eseguirà un passaggio se necessario.

In tal caso, il rollback di tutte le modifiche non replicate sugli slave verrà inserito in una cartella di "rollback", quindi spetta all'amministratore ripristinarla.

Per configurare il ripristino automatico del nodo e del cluster, devi solo abilitarli nella dashboard principale.