GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare HAProxy come Load Balancer per MariaDB su CentOS 7

In questo tutorial, ti guiderò attraverso l'installazione di un cluster MariaDB Galera su CentOS 7 che ha un bilanciamento del carico HAProxy davanti. La configurazione totale è composta da 4 server. Userò 3 server CentOS 7 per i nodi del database, 2 nodi saranno attivi e  1 fungerà da nodo di backup. Il quarto server verrà utilizzato per il servizio di bilanciamento del carico HAProxy. Per l'algoritmo di bilanciamento, utilizziamo lessconn (ma puoi usare altri algoritmi).

MariaDB è uno dei server di database relazionali più popolari realizzati dallo sviluppatore originale del server di database MySQL. MariaDB è un fork di MySQL che supporta il motore di archiviazione XtraDB, il motore di archiviazione InnoDB e un nuovo motore di archiviazione chiamato aria.

MariaDB Galera Cluster è un cluster multimaster sincrono per MariaDB disponibile solo su sistemi operativi basati su GNU/Linux. Galera Cluster supporta solo i motori di archiviazione XtraDB e InnoDB. Utilizza la libreria Galera per la replica con il controllo automatico dei membri, l'unione automatica dei nodi e per la lettura e la scrittura sui nodi del cluster.

Prerequisito

  • 4 server CentOS 7 - 64 bit:

mariadb1
           192.168.1.132

           mariadb2
           192.168.1.133

           mariadb3
           192.168.1.134

           HAProxy
           192.168.1.135

  • Privilegi di root su tutti e quattro i server.

Passaggio 1:installazione e configurazione del cluster MariaDB Galera

In questo passaggio installeremo e configureremo MariaDB Galera Cluster su 3 server CentOS. Installeremo il server MariaDB-Galera, quindi attiveremo il firewall e apriremo alcune porte per il database e altri servizi. Quindi installeremo lo script clustercheck su ciascun server MariaDB, in modo da poter controllare lo stato del server da HAProxy.

A. Configura i nomi host e prepara il sistema di base

Accedi a tutti i server di database con il tuo account ssh:

ssh [email protetta]
ssh [email protetta].133
ssh [email protetta]

Passa all'utente root con il comando sudo:

sudo su

Modifica il file hosts su ciascun server MariaDB e aggiungi tutti gli indirizzi IP del server e i nomi host degli altri nodi:

vi /etc/hosts

Vedi la mia configurazione di /etc/hosts di seguito:

192.168.1.132   mariadb1
192.168.1.133   mariadb2
192.168.1.134   mariadb3

Salva il file ed esci.

Quindi, disabilita SELinux su ciascun server perché causa problemi con MariaDB Galera. Disabilita SELinux con questo comando sed:

sed -i -e 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux

sed (editor di flussi):sostituisci "SELINUX=permissive" con "SELINUX=disabled" nel file /etc/sysconfig/selinux.

B. Installa MariaDB Galera Server

In questo passaggio, installeremo MariaDB Galera 10.0 che è disponibile nel repository di MariaDB.

Crea un nuovo file .repo nella directory yum.repos.d con il comando vi:

vi /etc/yum.repos.d/mariadb.repo

Incolla i dettagli del repository MariaDB Galera di seguito e salvalo:

# Elenco di repository CentOS di MariaDB 10.0 - creato il 09-07-2015 14:56 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name =MariaDB
baseurl =http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck =1

Ora installa MariaDB Galera Server and Client e alcuni altri pacchetti richiesti per questo tutorial:

yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget

Attendi fino al termine del processo di installazione.

C. Configura Firewall

Accenderemo il firewall predefinito di CentOS 7 chiamato Firewalld. Lo accenderemo e apriremo le porte TCP utilizzate dai servizi che installeremo.

3306 =Utilizzato per le connessioni client MySQL/MariaDB.
4567 =Traffico di replica del cluster Galera.
873 =Rsync porte.
4444 =Per tutti gli altri trasferimenti di snapshot di stato (SST).
9200 =xinetd - controllo cluster.

Attiva il firewalld con questo comando systemctl:

systemctl avvia firewalld

Ora apri le porte con il firewall-cmd:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp
firewall-cmd --permanent --add -port=873/tcp
firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

e ricarica firewalld:

firewall-cmd --reload

D. Configura MariaDB Galera Cluster

Vai alla directory /etc/my.cnf.d/ e modifica il file server.conf con vi:

cd /etc/my.cnf.d/
vi server.conf

Decommenta e aggiungi alcune righe di configurazione, puoi vedere i dettagli di seguito:

wsrep_provider=/usr/lib64/galera/libgalera_smm.so   # Percorso per la libreria del provider wsrep
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.134"   # Nodo gruppo, aggiungi tutto IP del server MardiaDB
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Aggiungi una configurazione di seguito
/># Nome cluster
wsrep_cluster_name="mariadb_cluster"

# Aggiungi IP server - su mariadb2 =192.168.1.133 - su mariadb3 =192.168.1.134
wsrep_node_address="192.168.1.132 "

# Provider di replica con rsync
wsrep_sst_method=rsync

Salva il file ed esci.

Sul server mariadb1, avviamo il cluster con il comando seguente:

/etc/rc.d/init.d/mysql bootstrap

risultato:

Bootstrapping del cluster.. Avvio di MySQL.. SUCCESSO!

Sul server mariadb2 e mariadb3, avvia MariaDB normalmente:

/etc/init.d/mysql inizio

mariadb1 bootstrap.

mariadb2 e mariadb3 iniziano.

MariaDB è stato avviato su tutti i nodi, ora configura la password di root per MariaDB su tutti i server con il comando seguente:

/usr/bin/mysql_secure_installation

E. Configura Clustercheck

Clustercheck è un utile script bash per creare un proxy (es:HAProxy) in grado di monitorare il server MariaDB.

Vai alla directory /tmp e scarica lo script con wget:

cd /tmp
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck

Ora rendi eseguibile lo script modificando i permessi e spostalo nella directory /usr/bin/:

chmod +x clustercheck
mv clustercheck /usr/bin/

Quindi, crea uno script xinetd per clusterchek con il comando vi nella directory "/etc/xinet.d/":

vi /etc/xinetd.d/mysqlchk

Incolla la configurazione di seguito:

# default:on
# descrizione:mysqlchk
service mysqlchk
{
        disable =no
        flags =REUSE
        socket_type =stream
        port =9200            # Questa porta utilizzata da xinetd per clustercheck
        wait =no
       utente =nessuno
        server =/usr/bin/clustercheck
        log_on_failure +=USERID
only_from =0.0.0.0/0
        per_source =ILLIMITATO
}

Salva ed esci.

Aggiungi clustercheck all'elenco dei servizi:

vi /etc/services

Vai alla riga 10101, commenta i servizi che utilizzano la porta 9200 e aggiungi una nuova riga per mysqlchk/clustercheck.

;

Salva il file ed esci.

Quindi avvia il servizio xinetd:

systemctl avvia xinetd

Per eseguire il controllo del cluster, devi creare un nuovo utente in MySQL. Accedi alla shell di MariaDB e crea un nuovo utente con il nome "clustercheckuser" e la password "clustercheckpassword!".

mysql -u root -p
GRANT PROCESS ON *.* A 'clustercheckuser'@'localhost' IDENTIFICATO DA 'clustercheckpassword!';
esci;

A questo punto, tutti i servizi di MariaDB vengono sincronizzati.

Verifica del clustercheck:

/usr/bin/clustercheck

Assicurati che il codice dei risultati sia 200.

Fase 2:installazione e configurazione di HAProxy

Accedi al server HAProxy:

ssh [email protetta]

Diventa utente root e aggiungi l'IP del server MariaDB e il nome host al file "/etc/hosts":

sudo su
vi /etc/hosts

HAProxy è disponibile nel repository di base di CentOS, esegui questo comando yum per installarlo:

yum -y installa haproxy

Quindi configura il log per HAProxy modificando il file di configurazione rsyslog:

vi /etc/rsyslog.conf

Decommenta la porta udp:

# Fornisce la ricezione del syslog UDP
$ModLoad imudp
$UDPServerRun 51

Salva il file ed esci dall'editor.

Aggiungi la configurazione HAProxy nella directory rsyslog.d:

vi /etc/rsyslog.d/haproxy.conf

Incolla la configurazione di seguito:

local2.=info     /var/log/haproxy-access.log
local2.notice    /var/log/haproxy-info.log

Salva il file e riavvia rsyslog:

systemctl riavvia rsyslog

Quindi, crea un nuovo file di configurazione HAProxy.

Vai alla directory /etc/haproxy e fai il backup del file di configurazione di dafult haproxy.

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig

Crea nuovo file di configurazione haproxy:

vi /etc/haproxy/haproxy.cfg

E incolla la configurazione HAProxy di seguito:

global
        log 127.0.0.1   local2
        maxconn 1024
        utente haproxy
        gruppo haproxy
        daemon
       stats socket /var/run/haproxy.sock modalità 600 livello admin         # Crea file sock per haproxy

predefinito
        log     globale
        modalità   http
        opzione  tcplog
        opzione  dontlognull
        tentativi 3
## MariaDB balance lessconn - il cluster in ascolto sulla porta 3030.
        modalità tcp
        balance lessconn
        opzione httpchk
        server mariadb1 192.168.1.132:3306 controlla la porta 9200
server mariadb2 192.168.1.133:3306 verifica porta 9200
        server mariadb3 192.168.1.134:3306 verifica porta 9200 backup        # Crea mariadb3 come backup - replica automatica dei dati

ascolta statistiche 0.0.0.0:9000
## GUI web delle statistiche HAProxy in esecuzione sulla porta 9000 - nome utente e password:howtoforge.
        modalità http
        stats enable
        stats uri /stats
        stats realm HAProxy\ Statistics
        stats auth howtoforge:howtoforge
        stats admin se VERO

Porta 3030 è la porta MariaDB con bilanciamento del carico, possiamo accedere ai database su tutti i server MariaDB con IP del bilanciamento del carico e quella porta.

Porta 9000 è la porta per la web-gui, permette il monitoraggio di HAProxy dal browser.

Ora avvia firewalld, apri le porte 9000 e 3030, quindi ricaricalo:

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
firewall- cmd --reload

Avvia HAProxy con il comando systemctl:

systemctl avvia haproxy

Fase 3 - Test di HAProxy e MariaDB

A. Test di replica

Accedi al server MariaDB, accedi alla shell MySQL e crea un nuovo database da mariadb1, poi da mariadb2 e infine da mariadb3.

mysql -u root -p
crea database this_mariadb1; # Esegui questo sul server mariadb1
crea il database this_mariadb2; # Esegui questo sul server mariadb2
crea il database this_mariadb3; # Esegui questo sul server mariadb3

Controlla i database:

B. Accedi al server MariaDB tramite HAProxy

Ora accediamo al cluster di server MariaDB e ai database tramite l'IP HAProxy sulla porta 3030.

Prima di eseguire questo test, abilita l'accesso remoto al server MariaDB creando un nuovo utente root con host "%".

Accedi alla shell di MariaDB e crea un nuovo utente "root" con password "aqwe123":

mysql -u root -p
CONCEDI TUTTI I PRIVILEGI SU *.* A [email protected]'%' IDENTIFICATO DA "aqwe123";

Successivamente, accedi alla tabella del database 'mysql.user' tramite il server HAProxy:

mysql -u root -p -h 192.168.1.135 -P 3030 -e "seleziona Host, Utente, Password da mysql.user"

È possibile visualizzare gli utenti del server di database accedendo all'IP del sistema di bilanciamento del carico sulla porta 3030. È possibile accedere ai database sui nodi MySQL accedendo all'IP HAProxy sulla porta 3030.

Un altro test del server:l'algoritmo lessconn:

C. Accedere alla GUI Web HAProxy

È possibile accedere al server di monitoraggio HAProxy sulla porta 9000, con nome utente e password "howtoforge" per mostrare l'interfaccia utente web HAProxy:

http://192.168.1.135:9000/stats

HAProxy è stato installato correttamente e puoi vedere che i server MariaDB sono monitorati.

Conclusione

MariaDB Galera Cluster è un cluster multi-master sincrono che fornisce il bilanciamento del carico per i database MySQL. Questa è una buona soluzione per creare un potente sistema di database per il tuo sito. MariaDB Galera Cluster supporta i motori di archiviazione xtradb e innodb, fornisce la replica automatica e consente l'unione automatica di nuovi nodi. Possiamo utilizzare HAProxy davanti al cluster di database come bilanciatore del carico. Il servizio di bilanciamento del carico aiuta a distribuire le richieste in arrivo a tutti i database. Usiamo lo script bash clustercheck per eseguire il monitoraggio del database da HAProxy. MariaDB Galera Cluster e HAProxy è una delle migliori soluzioni per costruire un sistema di database ad alta disponibilità.


Cent OS
  1. Come installare MariaDB su CentOS 7

  2. Come installare MariaDB su CentOS 8

  3. Come configurare MariaDB Galera Cluster su Ubuntu 20.04

  4. Come configurare il servizio di bilanciamento del carico HAProxy

  5. Come configurare il server VNC per i nuovi utenti in CentOS/RHEL 5

Come installare MariaDB su CentOS 7

Come installare ProjectPier su CentOS 7

Come installare HAProxy su CentOS 8

Come configurare HAProxy come Load Balancer per Nginx su CentOS 8

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Come configurare HAProxy su CentOS 8