MariaDB
 sql >> Database >  >> RDS >> MariaDB

Distribuzione di MySQL Galera Cluster 4.0 su Amazon AWS EC2

Galera Cluster è una delle soluzioni ad alta disponibilità più popolari per MySQL. È un cluster virtualmente sincrono, che aiuta a tenere sotto controllo il ritardo di replica. Grazie al controllo del flusso, il cluster Galera può rallentare e consentire a più nodi caricati di mettersi al passo con il resto del cluster. La recente versione di Galera 4 ha portato nuove funzionalità e miglioramenti. Li abbiamo trattati in un post sul blog in cui si parlava di MariaDB 10.4 Galera Cluster e in un post sul blog in cui si discuteva delle funzionalità esistenti e future di Galera 4.

Come funziona Galera 4 se utilizzato in Amazon EC2? Come probabilmente saprai, Amazon offre servizi di database relazionali, progettati per fornire agli utenti un modo semplice per distribuire database MySQL ad alta disponibilità. Il mio collega, Ashraf Sharif, ha confrontato i tempi di failover per RDS MySQL e RDS Aurora nel suo post sul blog. I tempi di failover per Aurora sembrano davvero ottimi, ma ci sono dei ma. Prima di tutto, sei costretto a usare RDS. Non puoi distribuire Aurora sulle istanze che gestisci. Se le funzionalità e le opzioni esistenti disponibili in Aurora non sono sufficienti per te, non hai altra opzione che distribuire qualcosa da solo. Qui entra Galera. Galera, a differenza di Aurora, non è una scatola nera proprietaria. Al contrario, è un software open source, che può essere utilizzato liberamente su tutti gli ambienti supportati. Puoi installare Galera Cluster su AWS Elastic Computing Cloud (EC2) e, attraverso questo, creare un ambiente ad alta disponibilità in cui il failover è quasi istantaneo:non appena riesci a rilevare il guasto del nodo, puoi riconnetterti all'altro nodo Galera. Come si distribuisce Galera 4 in EC2? In questo post del blog daremo un'occhiata e ti forniremo una guida passo passo che mostra qual è il modo più semplice per farlo.

Distribuzione di un cluster Galera 4 su EC2

Il primo passo è creare un ambiente che useremo per il nostro cluster Galera. Andremo con macchine virtuali Ubuntu 18.04 LTS.

Utilizzeremo la dimensione dell'istanza t2.medium ai fini di questo blog inviare. Dovresti ridimensionare le tue istanze in base al carico previsto.

Distribuiremo tre nodi nel cluster. Perché tre? Abbiamo un blog che spiega come Galera mantiene un'elevata disponibilità.

Configureremo lo storage per queste istanze.

Sceglieremo anche il gruppo di sicurezza appropriato per i nodi. Anche in questo caso, nel nostro caso il gruppo di sicurezza è abbastanza aperto. Dovresti assicurarti che l'accesso sia limitato il più possibile:solo i nodi che devono accedere ai database dovrebbero potersi connettere.

Infine, scegliamo un par chiave esistente o ne creiamo uno nuovo. Dopo questo passaggio verranno avviate le nostre tre istanze.

Una volta che sono attivi, possiamo connetterci tramite SSH e iniziare a configurare il database.

Abbiamo deciso di utilizzare la convenzione di denominazione 'node1, node2, node3' quindi abbiamo dovuto modificare /etc/hosts su tutti i nodi ed elencarli insieme ai rispettivi IP locali. Abbiamo anche apportato la modifica in /etc/hostname per utilizzare il nuovo nome per i nodi. Al termine, possiamo iniziare a configurare il nostro cluster Galera. Al momento in cui scrivo, l'unico fornitore che fornisce la versione GA di Galera 4 è MariaDB con la sua 10.4, quindi utilizzeremo MariaDB 10.4 per il nostro cluster. Procederemo con l'installazione utilizzando i suggerimenti e le guide del sito web di MariaDB.

Distribuzione di un cluster MariaDB 10.4 Galera

Inizieremo con la preparazione dei repository:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

bash ./mariadb_repo_setup

Abbiamo scaricato lo script che ha lo scopo di configurare i repository e lo abbiamo eseguito per assicurarci che tutto sia impostato correttamente. Questo ha configurato i repository per utilizzare l'ultima versione di MariaDB, che, al momento della scrittura, è 10.4.

[email protected]:~# apt update

Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease

Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease

Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease

Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease

Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease

Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease

Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release

Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease

Reading package lists... Done

Building dependency tree

Reading state information... Done

4 packages can be upgraded. Run 'apt list --upgradable' to see them.

Come puoi vedere, i repository per MariaDB 10.4 e MaxScale 2.4 sono stati configurati. Ora possiamo procedere e installare MariaDB. Lo faremo passo dopo passo, nodo per nodo. MariaDB fornisce una guida su come installare e configurare il cluster.

Dobbiamo installare i pacchetti:

apt-get install mariadb-server mariadb-client galera-4 mariadb-backup

Questo comando installa tutti i pacchetti necessari per l'esecuzione di MariaDB 10.4 Galera. MariaDB crea una serie di file di configurazione. Ne aggiungeremo uno nuovo, che conterrà tutte le impostazioni richieste. Per impostazione predefinita verrà incluso alla fine del file di configurazione, quindi tutte le impostazioni precedenti per le variabili che abbiamo impostato verranno sovrascritte. Idealmente, in seguito, dovresti modificare i file di configurazione esistenti per rimuovere le impostazioni che abbiamo inserito in galera.cnf per evitare confusione su dove è configurata una determinata impostazione.

[email protected]:~# cat /etc/mysql/conf.d/galera.cnf

[mysqld]

bind-address=10.0.0.103

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2



# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"

wsrep_cluster_name="Galera4 cluster"

wsrep_sst_method=mariabackup

wsrep_sst_auth='sstuser:pa55'



# Cluster node configuration

wsrep_node_address="10.0.0.103"

wsrep_node_name="node1"

Quando la configurazione è pronta, possiamo iniziare.

[email protected]:~# galera_new_cluster

Questo dovrebbe avviare il nuovo cluster sul primo nodo. Successivamente dovremmo procedere con passaggi simili sui nodi rimanenti:installare i pacchetti richiesti e configurarli tenendo presente che l'IP locale cambia, quindi dobbiamo modificare il file galera.cnf di conseguenza.

Quando i file di configurazione sono pronti, dobbiamo creare un utente che verrà utilizzato per lo Snapshot State Transfer (SST):

MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';

Query OK, 0 rows affected (0.022 sec)

MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';

Query OK, 0 rows affected (0.022 sec)

Dovremmo farlo sul primo nodo. I nodi rimanenti si uniranno al cluster e riceveranno un'istantanea dello stato completo in modo che l'utente venga trasferito a loro. Ora l'unica cosa che dobbiamo fare è avviare i nodi rimanenti:

[email protected]:~# service mysql start

[email protected]:~# service mysql start

e verifica che il cluster sia stato effettivamente formato:

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| wsrep_cluster_size | 3     |

+--------------------+-------+

1 row in set (0.001 sec)

Va tutto bene, il cluster è attivo ed è composto da tre nodi Galera. Siamo riusciti a distribuire MariaDB 10.4 Galera Cluster su Amazon EC2.