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

Come installare e configurare MaxScale per MariaDB

Ci sono diversi motivi per aggiungere un sistema di bilanciamento del carico tra la tua applicazione e il tuo database. Se hai un traffico elevato (e vuoi bilanciare il traffico tra diversi nodi del database) o vuoi utilizzare il sistema di bilanciamento del carico come un singolo endpoint (quindi in caso di failover, questo sistema di bilanciamento del carico affronterà questo problema inviando il traffico al disponibile/integro.) Potrebbe anche essere che tu voglia usare porte diverse per scrivere e leggere i dati dal tuo database.

In tutti questi casi, un sistema di bilanciamento del carico ti sarà utile e, se disponi di un cluster MariaDB, un'opzione per questo è l'utilizzo di MaxScale, che è un proxy di database per i database MariaDB.

In questo blog, ti mostreremo come installarlo e configurarlo manualmente e come ClusterControl può aiutarti in questa attività. Per questo esempio, utilizzeremo un cluster di replica MariaDB con 1 nodo master e 1 slave e CentOS8 come sistema operativo.

Come installare MaxScale

Supponiamo che tu abbia il tuo database MariaDB attivo e funzionante, e anche una macchina (virtuale o fisica) per installare MaxScale. Ti consigliamo di utilizzare un host diverso, quindi in caso di errore del master, MaxScale può eseguire il failover sul nodo slave, altrimenti MaxScale non può eseguire alcuna azione se il server su cui è in esecuzione si interrompe.

Ci sono diversi modi per installare MaxScale, in questo caso useremo i repository MariaDB. Per aggiungerlo al server MaxScale, devi eseguire:

$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo

[info] Adding trusted package signing keys...

[info] Successfully added trusted package signing keys

Ora, installa il pacchetto MaxScale:

$ yum install maxscale

Ora hai installato il tuo nodo MaxScale, prima di iniziare devi configurarlo.

Come configurare MaxScale

Poiché MaxScale esegue attività come autenticazione, monitoraggio e altro, è necessario creare un utente del database con alcuni privilegi specifici:

MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';

MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';

Tieni presente che le versioni di MariaDB da 10.2.2 a 10.2.10 richiedono anche:

MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

Ora hai pronto l'utente del database, vediamo i file di configurazione. Quando installi MaxScale, il file maxscale.cnf verrà creato in /etc/. Esistono diverse variabili e diversi modi per configurarlo, quindi vediamo un esempio:

$ cat  /etc/maxscale.cnf 

# Global parameters

[maxscale]

threads = auto

log_augmentation = 1

ms_timestamp = 1

syslog = 1



# Server definitions

[server1]

type=server

address=192.168.100.126

port=3306

protocol=MariaDBBackend

[server2]

type=server

address=192.168.100.127

port=3306

protocol=MariaDBBackend



# Monitor for the servers

[MariaDB-Monitor]

type=monitor

module=mariadbmon

servers=server1,server2

user=maxscaleuser

password=maxscalepassword

monitor_interval=2000



# Service definitions

[Read-Only-Service]

type=service

router=readconnroute

servers=server2

user=maxscaleuser

password=maxscalepassword

router_options=slave

[Read-Write-Service]

type=service

router=readwritesplit

servers=server1

user=maxscaleuser

password=maxscalepassword



# Listener definitions for the services

[Read-Only-Listener]

type=listener

service=Read-Only-Service

protocol=MariaDBClient

port=4008

[Read-Write-Listener]

type=listener

service=Read-Write-Service

protocol=MariaDBClient

port=4006

In questa configurazione abbiamo 2 nodi database, 192.168.100.126 (Master) e 192.168.100.127 (Slave), come puoi vedere nella sezione Definizione Server.

Abbiamo anche 2 diversi servizi, uno di sola lettura, dove c'è il nodo slave, e un altro di lettura-scrittura dove c'è il nodo master.

Infine, abbiamo 2 ascoltatori, uno per ogni servizio. Il listener di sola lettura, in ascolto sulla porta 4008, e quello di lettura-scrittura, in ascolto sulla porta 4006.

Questo è un file di configurazione di base. Se hai bisogno di qualcosa di più specifico puoi seguire la documentazione ufficiale di MariaDB.

Ora sei pronto per avviarlo, quindi esegui:

$ systemctl start maxscale.service

E controlla:

$ maxctrl list services
ff
$ maxctrl list servers

Puoi trovare un elenco di comandi maxctrl qui, oppure puoi anche usare maxadmin per gestirlo.

Ora testiamo la connessione. Per questo, puoi provare ad accedere al tuo database usando l'indirizzo IP MaxScale e la porta che vuoi testare. Nel nostro caso, il traffico sulla porta 4006 dovrebbe essere inviato al server1 e il traffico sulla porta 4008 al server2.

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'

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

| @@hostname |

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

| server1   |

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

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'

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

| @@hostname |

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

| server2   |

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

Funziona!

Come distribuire MaxScale con ClusterControl

Vediamo ora come utilizzare ClusterControl per semplificare questa attività. Per questo, assumeremo che il tuo cluster MariaDB sia stato aggiunto a ClusterControl.

Vai a ClusterControl -> Seleziona il cluster MariaDB -> Azioni cluster -> Aggiungi Load Balancer -> MaxScale.

Qui puoi distribuire un nuovo nodo MaxScale o importarne uno esistente uno. Se lo stai distribuendo, devi aggiungere l'indirizzo IP o il nome host, le credenziali dell'amministratore e dell'utente MaxScale, la quantità di thread e le porte (scrittura e sola lettura). Puoi anche specificare quale nodo di database vuoi aggiungere alla configurazione di MaxScale.

Puoi monitorare l'attività nella sezione Attività ClusterControl. Al termine, avrai un nuovo nodo MaxScale nel tuo cluster MariaDB.

Ed eseguire i comandi MaxScale dall'interfaccia utente di ClusterControl senza dover accedere al server tramite SSH.

Sembra più facile che distribuirlo manualmente, giusto?

Conclusione

Avere un Load Balancer è una buona soluzione se vuoi bilanciare o dividere il tuo traffico, o anche per azioni di failover, e MaxScale, come prodotto MariaDB, è una buona opzione per i database MariaDB.

L'installazione è semplice, ma la configurazione e l'utilizzo potrebbero essere difficili se si tratta di qualcosa di nuovo per te. In tal caso, puoi utilizzare ClusterControl per distribuirlo, configurarlo e gestirlo in modo più semplice.