Nous avons montré précédemment comment configurer le cluster MariaDB Galera avec HAproxy, et aujourd'hui nous ferons la même configuration avec la distribution Percona de MySQL. Percona est la société qui possède une expertise approfondie avec MySQL et MongoDB, et ils font leurs propres distributions de ces bases de données ainsi que des moteurs de stockage pour les deux bases de données. Aujourd'hui, nous nous concentrerons uniquement sur MySQL, et non sur l'offre MongoDB de cette société.
Configuration des hôtes, du pare-feu et des référentiels
Commencez par définir le fichier hosts. Nous avons trois nœuds pour le cluster Percona et un nœud pour HAproxy. Mon fichier hosts sur les 4 serveurs contient ces quatre lignes :
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
Ensuite, configurons le pare-feu sur tous les hôtes sauf HAproxy. Celui-ci nécessitera des paramètres différents et nous le ferons en dernier. Commençons par démarrer le pare-feu sur les trois nœuds percona.
systemctl start firewalld
Ensuite, nous autorisons le service mysql. Pecona est une distribution mysql, elle utilise donc le même port que mysql.
firewall-cmd --zone=public --add-service=mysql --permanent
Ensuite, nous ajoutons d'autres ports nécessaires :
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
Et rechargez le pare-feu
firewall-cmd --reload
Lorsque cela est fait, nous devons ensuite installer la version epel
yum installer epel-release
Ensuite, nous installons socat à partir du référentiel EPEL
yum install socat
Et puis nous supprimons mariadb-libs car il est en conflit avec percona
yum remove mariadb-libs
Installation et configuration de Percona
Nous devons ajouter un dépôt contenant percona
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Nous pouvons maintenant installer le cluster percona et toutes les autres dépendances
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
Et lancez mysql
systemctl start mysql
La première chose que nous faisons sur tous les serveurs mysql est d'exécuter le script mysql_secure_installation. Alors allons-y.
mysql_secure_installation
Vous devez saisir votre nouveau mot de passe root et répondre à toutes les questions.
Une fois terminé, connectez-vous à votre compte root
mysql -u root -p
enter password
Et créez sstuser votre 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)
Après cela, nous devons arrêter Mysql pour éditer les fichiers de configuration.
systemctl stop mysql
nano /etc/my.cnf
Dans la configuration, trouvez ces lignes et faites-les ressembler exactement à ceci, changez simplement votre propre mot de passe et changez le nom et l'adresse du nœud en votre nom d'hôte pour chaque serveur
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
Notez que la première ligne sur le premier serveur (centos-percona01) peut être vide, comme ceci :
wsrep_cluster_address = gcomm://
Une fois la configuration terminée, nous devons amorcer le premier nœud, puis démarrer normalement le deuxième et le troisième.
Lors de la première exécution du serveur
systemctl start mysql@bootstrap
en deuxième et troisième passage
systemctl start mysql
Ensuite, nous devons tester si le cluster fonctionne.
mysql -u root -p
saisir le mot de passe
Et puis exécutez ces commandes :
SHOW STATUS LIKE 'wsrep_local_state_comment';
show global status like 'wsrep_cluster_size';
Ils devraient obtenir une sortie comme celle-ci :
Avec cette configuration de cluster est terminée.
Configuration d'HAproxy
Tout d'abord, nous avons besoin que clustercheck soit installé sur tous les nœuds du cluster afin que le cluster soit utilisable avec HAproxy. Récupérons le script avec wget
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Le script doit être rendu exécutable et déplacé vers l'un de vos répertoires $PATH.
chmod +x clustercheck
mv clustercheck /usr/bin/
Maintenant, nous avons également besoin de mysqlchk qui est inclus dans le paquet xinetd :
yum install xinetd
Ensuite, nous déplaçons créer un utilisateur clustercheck sur la base de données. Nous ne pouvons taper ceci que sur le premier nœud
mysql -u root -p
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
Ensuite, nous pouvons tester si clustercheck fonctionne comme prévu :
[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.
Ensuite, nous passons à la configuration de xinetd, xinetd doit être ajouté à la liste des services.
nano /etc/services
Nous utilisons CTRL-W pour trouver la partie où se trouve le port 9200, puis nous félicitons les services qui utilisent ce port et ajoutons à la place une nouvelle ligne. Il doit ressembler à ceci :
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
Une fois que nous avons terminé, nous économisons. Notez que tous les nœuds du cluster, à l'exception de HAproxy, doivent l'avoir fait.
Il est maintenant temps de vous connecter à notre serveur HAporoxy. Nous devons d'abord sauvegarder la configuration haproxy.
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Ensuite, nous en ferons un nouveau à partir de table rase
nano /etc/haproxy/haproxy.cfg
Nous pouvons copier la configuration de HAproxy à partir d'ici, sauf que ces trois lignes doivent être modifiées :
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
Les parties en surbrillance doivent être modifiées avec vos noms d'hôte et vos adresses. Ensuite, nous devons démarrer le pare-feu sur le serveur haproxy et autoriser les ports que nous devons utiliser
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
Après cela, nous devons recharger le pare-feu
firewall-cmd --reload
Enfin, lancez haproxy
systemctl start haproxy
La configuration est terminée, nous devons maintenant tester.
Tester HAproxy
Pointons simplement le navigateur vers l'adresse IP publique du serveur HAproxy sur le port 9000 :
Tous les nœuds sont en ligne. Ensuite, installons le client percona sur le serveur haproxy afin que nous puissions essayer d'interroger le cluster à partir de 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
Et essayons de voir si nous pouvons avoir une requête de ce serveur haproxy :
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
Conclusion
Nous avons mis en place le cluster à 3 nœuds de la charge Percona XtraDB équilibrée par HAproxy. Il s'agit d'une configuration similaire à celle de l'article de la semaine dernière avec MariaDB et Galera, mais avec le moteur de stockage Percona et sans WordPress. Cette configuration Percona peut être utilisée pour héberger une très grande variété d'ensembles de données, entre autres, vous pouvez à nouveau l'utiliser avec WordPress, comme dans notre article précédent. Sur ce, nous concluons cet article, merci d'avoir lu et bonne journée.