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

Introduzione all'amministrazione di MaxScale Utilizzo di maxctrl per MariaDB Cluster

Il cluster MariaDB è costituito da MariaDB Server con Galera Cluster e MariaDB MaxScale. Come soluzione di replica multi-master, qualsiasi server MariaDB con Galera Cluster può funzionare come server primario. Ciò significa che le modifiche apportate a qualsiasi nodo del cluster vengono replicate su ogni altro nodo del cluster, utilizzando la replica basata sulla certificazione e l'ordinamento globale delle transazioni per il motore di archiviazione InnoDB. MariaDB MaxScale è un proxy di database, posizionato sopra il server MariaDB che estende l'elevata disponibilità, scalabilità e sicurezza semplificando allo stesso tempo lo sviluppo delle applicazioni disaccoppiandole dall'infrastruttura del database sottostante.

In questa serie di blog, esamineremo l'amministrazione di MaxScale utilizzando maxctrl per il nostro cluster MariaDB. In questa prima puntata della serie di blog, tratteremo l'introduzione e alcune nozioni di base sull'utilità della riga di comando maxctrl. La nostra configurazione consiste in un server MaxScale e un MariaDB 10.4 a 3 nodi con Galera 4, come illustrato nel diagramma seguente:

Il nostro cluster MariaDB è stato distribuito e gestito da ClusterControl, mentre il nostro host MaxScale è un nuovo host nel cluster e non è stato distribuito da ClusterControl ai fini di questa procedura dettagliata.

Installazione MaxScale

L'installazione di MaxScale è piuttosto semplice. Scegli il sistema operativo giusto dalla pagina di download di MariaDB per MaxScale e scaricalo. L'esempio seguente mostra come installare MaxScale su un host CentOS 8:

$ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
$ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
$ systemctl enable maxscale
$ systemctl start maxscale

Dopo l'avvio del demone, per impostazione predefinita, i componenti MaxScale verranno eseguiti sulle seguenti porte:

  • 0.0.0.0:4006 - Listener di suddivisione lettura-scrittura predefinito.
  • 0.0.0.0:4008 - Listener round-robin predefinito.
  • 127.0.0.1:8989 - MaxScale Rest API.

Le porte di cui sopra sono modificabili. È normale che un server MaxScale autonomo in produzione sia in esecuzione con la divisione di lettura/scrittura sulla porta 3306 e round robin sulla porta 3307. Questa configurazione è ciò che implementeremo in questo post del blog.

File importanti e struttura delle directory

Una volta installato il pacchetto, otterrai le seguenti utilità/programmi:

  • scala massima - Lo stesso MaxScale.
  • maxctrl - Il client di amministrazione della riga di comando per MaxScale che utilizza l'API REST MaxScale per la comunicazione.
  • maxadmin - Il client amministrativo e di monitoraggio MaxScale deprecato. Usa invece maxctrl.
  • maxkeys - Questa utilità scrive nel file .secrets, nella directory specificata, la chiave di crittografia AES e il vettore di inizializzazione utilizzati dall'utilità maxpasswd, durante la crittografia delle password utilizzate nel file di configurazione MariaDB MaxScale.
  • maxpasswd - Questa utilità crea una password crittografata utilizzando un file .secrets che è stato creato in precedenza utilizzando maxkeys.

MaxScale caricherà tutte le opzioni di configurazione dalle seguenti posizioni, nell'ordine particolare:

  1. /etc/maxscale.cnf
  2. /etc/maxscale.cnf.d/*.cnf
  3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

Per ulteriori informazioni sulla configurazione di MaxScale, consulta la Guida alla configurazione di MaxScale.

Una volta inizializzato MaxScale, i file e le strutture di directory predefiniti sono:

  • Directory dati MaxScale:/var/lib/maxscale
  • File PID MaxScale:/var/run/maxscale/maxscale.pid
  • File di registro MaxScale:/var/log/maxscale/maxscale.log
  • Documentazione MaxScale:/usr/share/maxscale

MaxCtrl - L'interfaccia a riga di comando

Una volta avviato, possiamo utilizzare il client della riga di comando MaxCtrl per amministrare MaxScale utilizzando l'API REST MaxScale in ascolto sulla porta 8989 sull'host locale. Le credenziali predefinite per l'API REST sono "admin:mariadb". Gli utenti utilizzati dall'API REST sono gli stessi utilizzati dall'interfaccia di rete MaxAdmin. Ciò significa che tutti gli utenti creati per l'interfaccia di rete MaxAdmin dovrebbero funzionare con l'API REST MaxScale e MaxCtrl.

Possiamo usare l'utilità maxctrl in modalità interattiva, simile al client mysql. Basta digitare "maxctrl" e entrerai nella modalità interattiva (in cui il prompt è cambiato dal prompt della shell al prompt maxctrl), proprio come il seguente screenshot:

In alternativa, possiamo eseguire lo stesso comando direttamente nel prompt della shell, ad esempio:

Le opzioni del comando MaxCtrl dipendono dalla versione di MaxScale fornita con esso. Al momento in cui scrivo, la versione MaxScale è 2.4 e dovresti esaminare questa documentazione per un elenco completo di comandi. MaxCtrl utilizza l'interfaccia API REST MaxScale, che viene spiegata in dettaglio qui.

Aggiunta di server MariaDB in MaxScale

Quando avviamo per la prima volta MaxScale, verrà generato un file di configurazione in /etc/maxscale.cnf con alcuni parametri ed esempi predefiniti. Non useremo questa configurazione e creeremo invece la nostra. Crea un backup di questo file perché vogliamo svuotarlo in seguito:

$ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
$ cat /dev/null > /etc/maxscale.cnf # empty the file

Riavvia MaxScale per ricominciare tutto da capo:

$ systemctl restart maxscale

Il termine "server" in MaxScale significa sostanzialmente il server MariaDB back-end, come in questo caso tutti e 3 i nodi del nostro Cluster MariaDB. Per aggiungere tutti e 3 i server MariaDB Cluster nel runtime MaxScale, utilizzare i seguenti comandi:

$ maxctrl create server mariadbgalera1 192.168.0.221 3306
$ maxctrl create server mariadbgalera2 192.168.0.222 3306
$ maxctrl create server mariadbgalera3 192.168.0.222 3306

Per verificare i server aggiunti, usa il comando list:

$ maxctrl list servers

Dovresti vedere il seguente output:

Aggiunta del monitoraggio in MaxScale

La prossima cosa è configurare il servizio di monitoraggio per l'utilizzo di MaxScale. MaxScale supporta un numero di moduli di monitoraggio a seconda del tipo di database, vale a dire:

  • Monitoraggio MariaDB
  • Galera Monitor
  • Clustrix Monitor
  • Monitoraggio Colonna Store
  • Monitoraggio Aurora

In questa configurazione, utilizzeremo il modulo Galera Monitor chiamato "galeramon". In primo luogo, dobbiamo creare un utente di database che possa essere utilizzato da MaxScale su uno dei server nel cluster MariaDB. In questo esempio abbiamo selezionato mariadbgalera1, 192.168.0.221 per eseguire le seguenti istruzioni:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Dove 192.168.0.220 è l'indirizzo IP del nostro server MaxScale.

Non è sicuro memorizzare la password utente maxscale_monitor in testo normale. Si consiglia invece di archiviare la password in un formato crittografato. Per raggiungere questo obiettivo, dobbiamo generare una chiave segreta specifica per questa istanza MaxScale. Utilizza l'utilità "maxkeys" per generare la chiave segreta che verrà utilizzata da MaxScale per scopi di crittografia e decrittografia:

$ maxkeys
Generating .secrets file in /var/lib/maxscale.

Ora possiamo utilizzare l'utilità maxpasswd per generare il valore crittografato della nostra password:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Utilizzeremo sempre il valore sopra quando memorizzeremo le credenziali dell'utente di monitoraggio all'interno di MaxScale. Ora siamo pronti per aggiungere il servizio di monitoraggio Galera in MaxScale usando maxctrl:

maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB

Verifica con il seguente comando:

Aggiunta di servizi in MaxScale

Il servizio è fondamentalmente il modo in cui MaxScale dovrebbe instradare le query ai server di backend. MaxScale 2.4 supporta più servizi (o router), vale a dire:

  • Avrouter
  • Binlogrouter
  • Gatto
  • CLI
  • HintRouter
  • Readconnroute
  • Readwritesplit
  • SchemaRouter
  • SmartRouter

Per il nostro cluster MariaDB, abbiamo solo bisogno di due servizi di routing:la suddivisione in lettura e scrittura e il bilanciamento del carico round robin. Per la suddivisione in lettura-scrittura, le query di scrittura verranno inoltrate a un solo server MariaDB fino a quando il server non sarà raggiungibile, dove MaxScale inoltrerà le query di scrittura al successivo nodo disponibile. Per il bilanciamento round robin, le query verranno inoltrate a tutti i nodi back-end in modo round robin.

Crea un servizio di routing per round-robin (o multi-master):

maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Crea un altro servizio di routing per la suddivisione in lettura-scrittura (o single-master):

maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Verifica con:

Tutti i componenti creati con successo da MaxCtrl genereranno il proprio file di configurazione in / var/lib/maxscale/maxscale.cnf.d. A questo punto, la directory si presenta così:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
total 24
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

Aggiunta di ascoltatori in MaxScale

I listener rappresentano le porte su cui il servizio ascolterà le connessioni in entrata. Può essere una porta o un file socket UNIX e il tipo di componente deve essere "ascoltatore". Comunemente, gli ascoltatori sono legati ai servizi. Nella nostra configurazione, creeremo due listener:Listener di lettura e scrittura sulla porta 3306 e Listener Round-Robin sulla porta 3307:

maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

Verifica con i seguenti comandi:

A questo punto, il nostro MaxScale è ora pronto per bilanciare il carico delle query su il nostro Cluster MariaDB. Dalle applicazioni, inviare le query all'host MaxScale sulla porta 3306, dove le query di scrittura raggiungeranno sempre lo stesso nodo del database mentre le query di lettura verranno inviate agli altri due nodi. Questa è anche nota come configurazione a scrittore singolo. Se desideri utilizzare una configurazione multi-scrittore, in cui le scritture verranno inoltrate a tutti i nodi MariaDB di back-end in base ad algoritmi di bilanciamento round-robin. È possibile perfezionare ulteriormente il bilanciamento utilizzando priorità e peso.

Anche in questo caso, quando si modificano le opzioni di configurazione tramite maxctrl, tutti i componenti creati correttamente avranno il proprio file di configurazione all'interno di /var/lib/maxscale/maxscale.cnf.d, come mostrato nel seguente output:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

Le opzioni di configurazione di cui sopra possono essere modificate direttamente per soddisfare ulteriormente le tue esigenze, ma richiede il riavvio del servizio MaxScale per caricare le nuove modifiche. Se desideri ricominciare da capo, puoi cancellare tutto in questa directory e riavviare MaxScale.

Nel prossimo episodio, esamineremo i comandi di gestione e monitoraggio di MaxCtrl per il nostro cluster MariaDB.