In precedenza abbiamo mostrato come configurare il cluster MariaDB Galera con HAproxy e oggi eseguiremo la configurazione simile con la distribuzione di MySQL di Percona. Percona è l'azienda che ha una profonda esperienza con MySQL e MongoDB e realizza le proprie distribuzioni di tali database, nonché motori di archiviazione per entrambi i database. Oggi ci concentreremo solo su MySQL e non sull'offerta MongoDB di questa azienda.
Configurazione di host, firewall e repository
Primo avvio impostando il file hosts. Abbiamo tre nodi per il cluster Percona e un nodo per HAproxy. Il mio file hosts su tutti e 4 i server ha queste quattro righe:
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
Quindi consente di configurare il firewalld su tutti gli host tranne quello di HAproxy. Quello richiederà impostazioni diverse e lo faremo. Per prima cosa avviamo il firewalld su tutti e tre i nodi percona.
systemctl start firewalld
Quindi consentiamo il servizio MySQL. Pecona è una distribuzione MySQL, quindi utilizza la stessa porta di MySQL.
firewall-cmd --zone=public --add-service=mysql --permanent
Successivamente aggiungiamo altre porte necessarie:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
E ricarica il firewall
firewall-cmd --reload
Al termine, dobbiamo installare epel release
yum install epel-release
Quindi installiamo socat dal repository EPEL
yum install socat
E poi rimuoviamo mariadb-libs perché è in conflitto con percona
yum remove mariadb-libs
Installazione e configurazione di Percona
Dobbiamo aggiungere un repository contenente percona
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Ora possiamo installare percona cluster e tutte le altre dipendenze
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc
E avvia MySQL
systemctl start mysql
La prima cosa che facciamo su tutti i server mysql è eseguire lo script mysql_secure_installation. Allora facciamolo.
mysql_secure_installation
Devi inserire la tua nuova password di root e rispondere a tutte le domande.
Al termine, accedi al tuo account root
mysql -u root -p
enter password
E crea sstuser il tuo cluster
mysql> create user sstuser@'%' identified by 'strongpassword';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on *.* to sstuser@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Dopo questo dobbiamo fermare Mysql per modificare i file di configurazione.
systemctl stop mysql
nano /etc/my.cnf
Nella configurazione trova quelle righe e falle sembrare esattamente così, cambia semplicemente la tua password e cambia il nome del nodo e l'indirizzo del nodo con il tuo nome host per ogni server
wsrep_cluster_address = gcomm://centos-percona01,centos-percona02,centos-percona03
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = centos-percona01
wsrep_node_address = centos-percona01
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:strongpassword
Nota che la prima riga sul primo server (centos-percona01) può essere vuota, in questo modo:
wsrep_cluster_address = gcomm://
Dopo che la configurazione è stata eseguita, è necessario eseguire il bootstrap del primo nodo, quindi normalmente avviare il secondo e il terzo.
Alla prima esecuzione del server
systemctl start mysql@bootstrap
alla seconda e terza manche
systemctl start mysql
Quindi dobbiamo verificare se il cluster funziona.
mysql -u root -p
inserisci la password
E poi esegui questi comandi:
SHOW STATUS LIKE 'wsrep_local_state_comment';
show global status like 'wsrep_cluster_size';
Dovrebbero farti ottenere un output in questo modo:
Con questo cluster la configurazione è conclusa.
Configurazione HAproxy
Innanzitutto è necessario che clustercheck sia installato su tutti i nodi del cluster in modo che il cluster sia riparabile con HAproxy. Prendiamo lo script con wget
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Lo script deve essere reso eseguibile e spostato in una delle tue directory $PATH.
chmod +x clustercheck
mv clustercheck /usr/bin/
Ora abbiamo anche bisogno di mysqlchk che è incluso nel pacchetto xinetd:
yum install xinetd
Successivamente ci spostiamo per creare un utente clustercheck sul database. Possiamo digitarlo solo sul primo nodo
mysql -u root -p
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
Successivamente possiamo verificare se clustercheck funziona come previsto:
[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.
Quindi passiamo alla configurazione di xinetd, xinetd deve essere aggiunto all'elenco dei servizi.
nano /etc/services
Usiamo CTRL-W per trovare la parte in cui si trova la porta 9200, quindi elogiamo i servizi che utilizzano quella porta e aggiungiamo invece una nuova riga. Deve assomigliare a questo:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
Dopo aver finito salviamo. Nota che tutti i nodi del cluster eccetto HAproxy devono eseguire questa operazione.
Ora è il momento di accedere al nostro server HAporoxy. Per prima cosa dobbiamo eseguire il backup della configurazione haproxy.
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Quindi ne faremo uno nuovo da tabula rasa
nano /etc/haproxy/haproxy.cfg
Possiamo copiare la configurazione di HAproxy da qui, tranne per il fatto che queste tre righe devono essere modificate:
server centos-percona01 10.132.84.186:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona02 10.132.84.141:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona03 10.132.84.67:3306 check port 9200 inter 12000 rise 3 fall 3
Le parti evidenziate devono essere modificate con i tuoi nomi host e i tuoi indirizzi. Quindi dobbiamo avviare firewalld sul server haproxy e avere le porte consentite che dobbiamo usare
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
Dopodiché dobbiamo ricaricare il firewall
firewall-cmd --reload
Infine, avvia haproxy
systemctl start haproxy
L'installazione è stata completata, ora dobbiamo testare.
Test di HAproxy
Puntiamo semplicemente il browser all'indirizzo IP pubblico del server HAproxy sulla porta 9000:
Tutti i nodi sono online. Quindi installiamo il client percona sul server haproxy in modo da poter provare a interrogare il cluster da lì.
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install Percona-XtraDB-Cluster-client-56
E proviamo a vedere se possiamo avere una query da questo server haproxy:
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
Conclusione
Abbiamo impostato il cluster a 3 nodi di carico Percona XtraDB bilanciato da HAproxy. È una configurazione simile all'articolo della scorsa settimana con MariaDB e Galera, ma con il motore di archiviazione Percona e senza WordPress. Questa configurazione di Percona può essere utilizzata per ospitare un'ampia varietà di set di dati, tra le altre cose puoi riutilizzarla con WordPress, come nel nostro articolo precedente. Con ciò concludiamo questo articolo, grazie per la lettura e buona giornata.