ClusterControl 1.7.3 include un notevole miglioramento nell'integrazione con il cloud. È possibile distribuire un cluster di replica MySQL e PostgreSQL nel cloud, nonché avviare automaticamente un'istanza cloud e scalare il cluster di database aggiungendo un nuovo nodo di database.
Questo post del blog mostra come distribuire facilmente un cluster Galera utilizzando ClusterControl su AWS. Questa nuova funzionalità fa parte di ClusterControl Community Edition, che include funzionalità di implementazione e monitoraggio gratuite. Ciò significa che puoi sfruttare questa funzionalità gratuitamente!
Architettura del cluster di database ClusterControl
Il diagramma seguente riassume la nostra architettura complessiva dei cluster di database.
Il server ClusterControl si trova al di fuori dell'infrastruttura AWS, consentendo una visibilità adeguata al nostro cluster di database (situato a Francoforte:eu-central-1). Il server ClusterControl DEVE avere un indirizzo IP pubblico dedicato. Questo perché l'indirizzo IP verrà concesso da ClusterControl sul server di database e sul gruppo di sicurezza AWS. La versione del database Galera che implementeremo è MariaDB Cluster 10.3, utilizzando ClusterControl 1.7.3.
Preparazione dell'ambiente AWS
ClusterControl è in grado di distribuire un cluster di database su piattaforme cloud supportate, ovvero AWS, Google Cloud Platform (GCP) e Microsoft Azure. La prima cosa che dobbiamo configurare è ottenere le chiavi di accesso AWS per consentire a ClusterControl di eseguire richieste programmatiche ai servizi AWS. È possibile utilizzare la chiave di accesso dell'account root, ma questo non è il modo consigliato. È meglio creare un utente IAM (Identity and Access Management) dedicato esclusivamente a questo scopo.
Accedi alla tua Console AWS -> Le mie credenziali di sicurezza -> Utenti -> Aggiungi utente . Specifica l'utente e seleziona "Accesso programmatico" come Tipo di accesso:
Nella pagina successiva, crea un nuovo gruppo di utenti facendo clic su "Crea gruppo" e assegna il nome del gruppo "DatabaseAutomation". Assegna il seguente tipo di accesso:
- AmazonEC2FullAccess
- AmazonVPCFullAccess
- AmazonS3FullAccess (solo se prevedi di archiviare il backup del database su AWS S3)
Spunta la casella di controllo DatabaseAutomation e fai clic su "Aggiungi utente al gruppo":
Facoltativamente, puoi assegnare tag nella pagina successiva. In caso contrario, procedi alla creazione dell'utente. Dovresti ottenere le due cose più importanti, ID chiave di accesso e Chiave di accesso segreta.
Scarica il file CSV e salvalo in un luogo sicuro. Ora siamo pronti ad automatizzare la distribuzione su cloud.
Installa ClusterControl sul rispettivo server:
$ whoami
root
$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 755 install-cc
$ ./install-cc
Segui le istruzioni di installazione e vai su http://192.168.0.11/clustercontrol e crea l'utente e la password super amministratore.
Per consentire a ClusterControl di eseguire la distribuzione automatica sul cloud, è necessario creare credenziali cloud per la regione selezionata con un ID chiave AWS e un segreto validi. Vai a Barra laterale -> Integrazioni -> Fornitori cloud -> Aggiungi la tua prima credenziale cloud -> Amazon Web Services e inserisci i dettagli richiesti e scegli Francoforte come regione predefinita:
Questa credenziale verrà utilizzata da ClusterControl per automatizzare la distribuzione e la gestione del cluster. A questo punto siamo pronti per distribuire il nostro primo cluster.
Distribuzione del cluster di database
Vai a Distribuisci -> Distribuisci nel cloud -> MySQL Galera -> MariaDB 10.3 -> Configura cluster per passare alla pagina successiva.
Nella sezione Configura cluster, assicurati che il numero di nodi sia 3 e fornisci un nome cluster e una password root MySQL:
In Seleziona credenziali, scegli una credenziale denominata "AWS Frankfurt" e vai alla pagina successiva facendo clic su "Seleziona macchina virtuale". Scegli il sistema operativo preferito e la dimensione dell'istanza. Si consiglia di eseguire la nostra infrastruttura all'interno di un cloud privato in modo da poter ottenere un indirizzo IP interno dedicato per le nostre istanze cloud e gli host non sono direttamente esposti alla rete pubblica. Fai clic sul pulsante "Aggiungi nuovo" accanto al campo Virtual Private Cloud (VPC) e assegna una sottorete di 10.10.0.0/16 a questa rete:
Il VPC che abbiamo creato è un cloud privato e non dispone di connettività Internet. Affinché ClusterControl possa distribuire e gestire gli host dall'esterno della rete AWS, dobbiamo consentire la connettività Internet a questo VPC. Per fare ciò, dobbiamo fare quanto segue:
- Crea un gateway Internet
- Aggiungi routing esterno alla tabella di instradamento
- Associa la sottorete alla tabella di instradamento
Per creare un gateway Internet, accedi a Console di gestione AWS -> VPC -> Gateway Internet -> Crea gateway Internet -> assegna un nome a questo gateway . Quindi seleziona il gateway creato dall'elenco e vai su Azioni -> Allega a VPC -> seleziona il VPC per l'elenco a discesa -> Allega . Ora abbiamo collegato un gateway Internet al cloud privato. Tuttavia, dobbiamo configurare la rete per inoltrare tutte le richieste esterne tramite questo gateway Internet. Quindi, dobbiamo aggiungere un percorso predefinito alla tabella dei percorsi. Vai a VPC -> Tabelle dei percorsi -> seleziona la tabella dei percorsi -> Modifica percorsi e specificare la rete di destinazione, 0.0.0.0/0 e destinazione (l'ID gateway Internet creato) come di seguito:
Quindi, dobbiamo associare la sottorete DB a questa rete in modo che assegni tutte le istanze create all'interno di questa rete alla route predefinita che abbiamo creato in precedenza, seleziona la tabella delle route -> Modifica associazione sottorete -> assegna la sottorete DB , come mostrato di seguito:
Il VPC è ora pronto per essere utilizzato da ClusterControl per la distribuzione.
Una volta creato, seleziona il VPC creato dal menu a discesa. Per la chiave SSH, chiederemo a ClusterControl di generarla automaticamente:
La chiave SSH generata si troverà all'interno del server ClusterControl nella directory /var/lib/cmon/autogenerated_ssh_keys/s9s/.
Fai clic su "Riepilogo distribuzione". In questa pagina, dobbiamo assegnare una sottorete dal VPC al cluster di database. Poiché si tratta di un nuovo VPC, non ha una sottorete e dobbiamo crearne una nuova. Fare clic sul pulsante "Aggiungi nuova sottorete" e assegnare 10.10.1.0/24 come rete per il nostro cluster di database:
Infine, seleziona la creazione della sottorete nella casella di testo e fai clic su "Distribuisci cluster":
Puoi monitorare l'avanzamento del lavoro in Attività -> Lavori -> Crea cluster . ClusterControl eseguirà i passaggi necessari per la preinstallazione, come la creazione delle istanze cloud, il gruppo di sicurezza, la generazione della chiave SSH e così via, prima che inizino i passaggi di installazione effettivi.
Una volta che il cluster è pronto, dovresti vedere il seguente cluster nel dashboard ClusterControl:
La nostra distribuzione del cluster è ora completa.
Posta la distribuzione del database AWS
Possiamo iniziare a caricare i nostri dati nel cluster o creare un nuovo database per l'utilizzo della tua applicazione. Per connettersi, è sufficiente indicare alle applicazioni o ai client di connettersi all'indirizzo IP privato o pubblico di uno dei server di database. Puoi ottenere queste informazioni andando alla pagina Nodi, come mostrato nella schermata seguente:
Se desideri accedere direttamente ai nodi del database, puoi utilizzare il modulo Web-SSH ClusterControl in Node Actions -> SSH Console , che ti offre un'esperienza simile come la connessione tramite client SSH.
Per aumentare la scalabilità del cluster aggiungendo un nodo database, puoi semplicemente andare su Azioni cluster (icona dello stack del server) -> Aggiungi nodo -> Aggiungi un nodo database su una nuova istanza cloud e ti verrà presentata la seguente finestra di dialogo:
Segui semplicemente la procedura guidata di distribuzione e configura la tua nuova istanza di conseguenza. Una volta creata l'istanza, ClusterControl installerà, configurerà e unirà automaticamente il nodo al cluster.
Per ora è tutto, gente. Buon clustering nel cloud!