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à.