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

Come configurare MariaDB Galera Cluster con HAproxy su CentOS 7

Nell'articolo di oggi installeremo il cluster MariaDB Galera con HAproxy per MariaDB e wordpress con bilanciamento del carico. Galera è una tecnologia di clustering attivo-attivo, il che significa che può supportare le scritture su tutti i nodi che vengono quindi replicati nel cluster. Esiste anche il clustering attivo-passivo, in cui solo il nodo è scrivibile. Installeremo anche HAproxy per il bilanciamento del carico sul nostro cluster. L'installazione verrà eseguita su 5 server CentOS 7, tre per MariaDB 10.1 Galera, uno per Haproxy e uno per wordpress. HAproxy funziona in modo tale da instradare le richieste a ciascun nodo in modalità round robin, presentandosi come front-end. Qui stiamo usando il modo tradizionale di clustering avendo i server di database seduti in una rete privata e solo il server web si trova di fronte all'indirizzo IP pubblico.

Configurazione del cluster Galera

Su tutti i server è necessario installare mysql. Per prima cosa aggiungeremo repository

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Quindi installiamo mariadb, rsync e xinetd

sudo yum install mariadb-server rsync xinetd

Dobbiamo modificare /etc/hosts, qualsiasi editor lo farà, ma io userò nano

nano /etc/hosts

Là fuori ip e nomi dei tuoi host, per esempio

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

Assicurati di utilizzare l'ip privato dei tuoi host, se usi quelli pubblici dovrai crittografare il traffico tra di loro per proteggere il tuo cluster.

Dopo aver installato MariaDB, modifica

nano /etc/my.cnf.d/server.cnf

Su tutti i server, devi trovare la sezione [galera] nel file e farlo sembrare così, salva gli indirizzi IP che sono in grassetto e dovrebbero essere modificati

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so

#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.

bind-address=0.0.0.0

# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"

wsrep_sst_method=rsync

Osservare l'ammasso di Galera

Dopo che questo è stato configurato è necessario avviare il cluster

Prima sul nodo mariadb01 che è il master con questo comando

galera_new_cluster

Quindi su altri due nodi con il normale comando systemctl:

systemctl start mariadb

Successivamente possiamo verificare che il cluster sia in esecuzione:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

La prossima cosa sarebbe eseguire lo script mysql_secure_installation

mysql_secure_installation

Configurazione del firewalld

Ora, quando tutti e tre i nodi sono collegati, possiamo aprire firewalld e configurarlo.

systemctl start firewalld

Apri il client mariadb e le porte di replica galera:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

Apri la porta rsync che utilizziamo per la replica

firewall-cmd --permanent --add-port=873/tcp

Altri porti importanti

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

Infine ricarica il firewall

firewall-cmd --reload

Utilizzo di xinetd e clustercheck

Clustercheck è uno script utile per monitorare il cluster. Installiamolo seguendo i comandi

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

Quindi dobbiamo aggiungere mysqlchk all'elenco dei servizi. Per questo modifichiamo il file dei servizi:

nano /etc/services

Poiché è un file lungo, in nano digita Ctrl-W e cerca 9200. Tutti i servizi che utilizzano quella porta devono essere commentati e il nuovo servizio deve essere aggiunto, quindi quella parte deve assomigliare a questa:

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

Quando questo è salvato e fatto, possiamo avviare xinetd

systemctl start xinetd

Tutto questo deve essere fatto su tutti i nodi e ora solo su master è necessario aggiungere l'utente per il controllo del cluster.

mysql -u root -p

GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

exit;

Successivamente possiamo provare lo script clustercheck

clustercheck

Configurazione di HAproxy

Accedi al tuo server haproxy designato. Stiamo ora installando il sistema di bilanciamento del carico

Modifica il tuo file /etc/hosts in modo che sia qualcosa del genere (con i tuoi ips, ovviamente)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

Successivamente possiamo installare haproxy

yum install haproxy

Quindi dobbiamo modificare rsyslog.conf

nano /etc/rsyslog.conf

Decommenta queste due righe

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Salva ed esci

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

consente di eseguire il backup della configurazione haproxy predefinita

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

Quindi creiamo un nuovo file con nano

nano /etc/haproxy/haproxy.cfg

Usa questo pastebin come configurazione, ma cambia gli indirizzi IP.

È ora di configurare il firewall sul nodo haproxy

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

Quindi ricarica il firewall

firewall-cmd --reload

Configurazione dell'accesso a MariaDB da HAproxy

Sul tipo di cluster mariadb:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

Quindi andiamo sul server haproxy01 e proviamo ad accedere al database.

Devi avere il client MariaDB installato, quindi facciamolo prima:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Era per aggiungere un repository, questo comando lo installa

yum install MariaDB-client

E poi testiamo se

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

Assicurati di inserire verystrongpassword come password e non la tua normale password di root.

Installazione di Wordpress

Infine configureremo wordpress da utilizzare sul nostro cluster. C'è del lavoro da fare sul nodo mariadb01, su haproxy01 e sul nodo wp01.

Su mariadb01

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

Sul nodo wp01 impostato in /etc/hosts/

192.168.220.17 wp01
192.168.210.252 haproxy01

Anche su haproxy01 aggiungi

192.168.220.17 wp01

Quindi dobbiamo installare i pacchetti richiesti sul nodo wp01

yum install httpd php php-gd php-mysqlnd rsync

Da qui è necessario utilizzare un account non root con privilegi sudo. Non ne ho uno, quindi lo creerò:

useradd miki
usermod miki -aG wheel

passwd miki

Quindi accedi come mio utente

su miki

Cambia dir in home

cd

E poi scarica l'ultima versione di wordpress e decomprila

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Useremo rsync per copiare il wordpress nella directory di apache

sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads

Abbiamo anche bisogno di cambiare la proprietà per l'utente apache

sudo chown -R apache:apache /var/www/html/*

Configurazione di wordpress

WordPress è configurato nel file wp-config.php, lì è necessario impostare parametri come l'indirizzo host del server del database, le credenziali di accesso, il nome del database. Consente di eseguire il backup del file di configurazione:

cd /var/www/html

cp wp-config-sample.php wp-config.php

E poi facciamo editing:

nano wp-config.php

Cambia solo quelle righe

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

Infine, riavviamo il server web apache:

sudo systemctl restart httpd

Completa l'installazione di WordPress dal browser

Possiamo andare all'indirizzo pubblico del nodo wordpress come di seguito per continuare il processo di installazione di wordpress

Ora abbiamo il cluster configurato con wordpress in esecuzione

Conclusione

Qui abbiamo impostato wordpress sopra il cluster Galera bilanciato da HAproxy. Questa è una soluzione resiliente per i siti con carichi elevati e, sebbene richieda del tempo per l'installazione, offre al tuo sito un'assicurazione quasi completa dai tempi di inattività. Tutto il traffico tra i nodi viene effettuato da indirizzi IP privati ​​e per accedere al sito viene utilizzato un solo indirizzo pubblico per il front-end di Worpress. Questo sarebbe tutto per questo articolo, grazie per la lettura e buona giornata.


Cent OS
  1. Come configurare il server FTP con VSFTPD su CentOS 7

  2. Come installare MariaDB Galera Cluster su Ubuntu 16.04

  3. Come configurare MariaDB Galera Cluster su Ubuntu 20.04

  4. Come configurare Pure-FTPD con MySQL su CentOS e RedHat

  5. Come sostituire MySQL con MariaDB su CentOS 6

Come configurare il cluster Percona con HAproxy Loadbalancer su CentOS 7

Come configurare il cluster ad alta disponibilità su CentOS 8 / RHEL 8

Come installare il server di posta con PostfixAdmin su CentOS 7

Come installare HAProxy su CentOS 8

Come configurare un cluster Redis in CentOS 8 – Parte 3

Come configurare HAProxy su CentOS 8