Préparation de l'Environnement
Pour cette configuraton, nous partons d'un environnement existant avec un nœud ProxySQL unique qui gère un cluster MGR. Notre objectif est d'étendre cette architecture en ajoutant plusieurs nœuds ProxySQL pour créer un cluster haute disponibilité.
L'architecture globale comprend trois niveaux :
- Un équilibreur de charge avec keepalived + nginx pour distribuer le trafic aux nœuds ProxySQL
- Le cluster ProxySQL multi-nœuds qui reçoit le trafic et le redirige vers le back end MySQL
- Le cluster MySQL MGR qui effectue le traitement des données
Cet article se concentre sur la mise en place du niveau 2 : le cluster ProxySQL multi-nœuds.
La configuration /etc/hosts pour notre environnement est la suivante :
#IP Nom d'hôte
10.53.207.20 10.53.207.20 # mgr (déployé)
10.53.207.21 10.53.207.21 # mgr (déployé)
10.53.207.22 10.53.207.22 # mgr (déployé)
10.53.207.24 10.53.207.24 # proxysql (déployé)
10.53.207.23 10.53.207.23 # proxysql (à déployer et configurer)
Mise en Place du Cluster
Il existe deux approches pour configurer un cluster ProxySQL :
- Démarrer tous les nœuds avec le même fichier de configuration (/etc/proxysql.cnf) - adapté pour une nouvelle installation
- Configurer un nœud, puis copier son fichier de base de données proxysql.db vers les autres nœuds - adapté pour l'extension d'un cluster existant
Comme nous avons déjà un nœud ProxySQL fonctionnel, nous utiliserons la deuxième approche.
Étape 1 : Configuration du nœud existant (10.53.207.24)
Configuration du compte de communication du cluster : Ce compte doit exister dans la liste des administrateurs admin-admin_credentials.
set admin-cluster_username='cluster_admin';
set admin-cluster_password='cluster_secure_pass';
load admin variables to runtime;
save admin variables to disk;
Ajout des nœuds du cluster : La table proxysql_servers contient les informations de chaque nœud ProxySQL.
insert into proxysql_servers(hostname,port,comment)
values
("10.53.207.23",6032,"proxy_node_23"),
("10.53.207.24",6032,"proxy_node_24");
load proxysql servers to runtime;
save proxysql servers to disk;
Étape 2 : Installation du nouveau nœud (10.53.207.23)
Installer ProxySQL sur le nouveau nœud mais ne pas encore démarrer le service.
Étape 3 : Copie du fichier de base de données
Copier le fichier proxysql.db du nœud configuré (10.53.207.24) vers le nouveau nœud (10.53.207.23) dans le répertoire /var/lib/proxysql/. Si un fichier proxysql.db existe déjà sur le nouveau nœud, le supprimer avant la copie.
Étape 4 : Ajustement des permissions
Modifier les permissions du fichier de base de données sur le nouveau nœud :
# Modification du groupe
chgrp proxysql proxysql.db
# Modification du propriétaire
chown proxysql proxysql.db
# Permissions de lecture/écriture
chmod 660 proxysql.db
Étape 5 : Démarrage et vérification du nouveau nœud
Démarrer le service ProxySQL sur le nouveau nœud :
# Redémarrage du service
service proxysql start ou service proxysql restart
Se connecter au nouveau nœud pour vérifier sa configuration :
# Connexion
mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt='ProxySQL> '
Vérifier la cohérence des données avec l'autre nœud :
select * from global_variables;
select * from proxysql_servers;
Examiner les informations du cluster :
select hostname,port,comment,Uptime_s,last_check_ms from stats_proxysql_servers_metrics;
La colonne Uptime_s indique le temps de fonctionnement de chaque nœud dans le cluster.
Validation de l'Environnement
Vérification des opérations sur les données : Se connecter aux nœuds 10.53.207.23 et 10.53.207.24 pour effectuer des requêtes et modifications de données. Toutes les opérations devraient s'exécuter normalement.
Vérification du cluster ProxySQL : Arrêter le service sur le nœud 23 et vérifier sur le nœud 24 que le temps de fonctionnement Uptime_s du nœud 23 ne plus augmenter. Redémarrer le nœud 23 et vérifeir que Uptime_s recommence à augmenter depuis zéro.
Modifier une variable sur le nœud 23 (n'oubliez pas de charger et de sauvegarder les modifications) :
set admin-stats_credentials='stats_user:stats_pass;hstats_user:hstats_pass';
load admin variables to runtime;
save admin variables to disk;
Vérifier sur le nœud 24 que les modifications ont été synchronisées et persistées :
select @@admin-stats_credentials;
La synchronisation des configurations entre les nœuds est confirmée, et chaque nœud peut fournir normalement le service de proxy de base de données. Le cluster haute disponibilité est opérationnel !