Comment configurer le cluster Galera de MariaDB sur Ubuntu 20.04

L’équilibrage des charges et le clustering sont très importants dans un environnement de production pour obtenir une haute disponibilité pour ton système de base de données. MariaDB Galera Cluster offre une solution de clustering multi-maître et prend en charge les moteurs de stockage XtraDB/InnoDB. Un cluster multi-maître permet de lire et d’écrire sur n’importe quel nœud du cluster. Si tu modifies des données sur un nœud, elles sont répliquées sur tous les autres nœuds. Le cluster Galera prend également en charge les environnements cloud et WAN pour construire un cluster distribué à travers les pays et les continents.

Dans ce billet, nous allons montrer comment configurer un cluster MariaDB Galera à trois nœuds sur un serveur Ubuntu 20.04.

Conditions préalables

  • Trois serveurs exécutant Ubuntu 20.04.
  • Un mot de passe root est configuré sur le serveur.

Démarrage

Avant de commencer, tu dois mettre à jour tes paquets système à la dernière version. Tu peux les mettre à jour à l’aide de la commande suivante :

apt-get update -y

Une fois que ton serveur est mis à jour, tu peux passer à l’étape suivante.

Installer le serveur MariaDB

Tout d’abord, tu devras installer le serveur MariaDB sur tous les nœuds. Tu peux l’installer en exécutant la commande suivante :

apt-get install mariadb-server -y

Une fois l’installation terminée, démarre le service MariaDB et active-le pour qu’il démarre au redémarrage du système :

systemctl start mariadb
systemctl status mariadb

Ensuite, tu devras sécuriser l’installation de MariaDB et définir un mot de passe root MariaDB sur chaque nœud. Tu peux le faire avec la commande suivante :

mysql_secure_installation

Il te sera demandé de définir un mot de passe racine MariaDB comme indiqué ci-dessous :

Enter current password for root (enter for none): 
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Une fois que ton serveur MariaDB est sécurisé, tu peux passer à l’étape suivante.

Configurer le Cluster Galera

Ensuite, tu devras créer un fichier de configuration Galera sur chaque nœud afin que chaque nœud puisse communiquer avec les autres.

Sur le premier nœud, crée un fichier galera.cnf à l’aide de la commande suivante :

nano /etc/mysql/conf.d/galera.cnf

Ajoute les lignes suivantes :

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node1-ip-address"
wsrep_node_name="node1"

Enregistre et ferme le fichier lorsque tu as terminé.

Sur le deuxième nœud, crée un fichier galera.cnf à l’aide de la commande suivante :

nano /etc/mysql/conf.d/galera.cnf

Ajoute les lignes suivantes :

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node2-ip-address"
wsrep_node_name="node2"

Sauvegarde et ferme le fichier lorsque tu as terminé.

Sur le troisième nœud, crée un fichier galera.cnf à l’aide de la commande suivante :

nano /etc/mysql/conf.d/galera.cnf

Ajoute les lignes suivantes :

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node3-ip-address"
wsrep_node_name="node3"

Sauvegarde et ferme le fichier lorsque tu as terminé.

Initialise le Cluster Galera

À ce stade, tous les nœuds sont configurés pour communiquer entre eux.

Ensuite, tu devras arrêter le service MariaDB sur tous les nœuds. Tu peux exécuter la commande suivante pour arrêter le service MariaDB :

systemctl stop mariadb

Sur le premier nœud, initialise le cluster MariaDB Galera avec la commande suivante :

galera_new_cluster

Maintenant, vérifie l’état du cluster avec la commande suivante :

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

Tu devrais voir le résultat suivant :

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

Sur le deuxième nœud, démarre le service MariaDB avec la commande suivante :

systemctl start mariadb

Ensuite, vérifie l’état du cluster MariaDB Galera avec la commande suivante :

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

Tu devrais voir le résultat suivant :

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

Sur le troisième nœud, démarre le service MariaDB avec la commande suivante :

systemctl start mariadb

Ensuite, vérifie l’état du cluster MariaDB Galera avec la commande suivante :

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

Tu devrais voir le résultat suivant :

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

À ce stade, le cluster MariaDB Galera est initialisé. Tu peux maintenant passer à l’étape suivante.

Vérifier la réplication du cluster

Ensuite, tu devras vérifier si la réplication fonctionne ou non.

Sur le premier nœud, connecte-toi à MariaDB avec la commande suivante :

mysql -u root -p

Une fois que tu es connecté, crée une base de données avec la commande suivante :

MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;

Ensuite, quitte la MariaDB avec la commande suivante :

MariaDB [(none)]> exit;

Ensuite, va sur le deuxième nœud et connecte-toi à MariaDB avec la commande suivante :

mysql -u root -p

Ensuite, exécute la commande suivante pour afficher toutes les bases de données :

MariaDB [(none)]> show databases;

Tu devrais voir que les deux bases de données que nous avons créées sur le premier nœud sont répliquées sur le deuxième nœud :

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Ensuite, va sur le troisième nœud et connecte-toi à MariaDB avec la commande suivante :

mysql -u root -p

Ensuite, exécute la commande suivante pour afficher toutes les bases de données :

MariaDB [(none)]> show databases;

Tu devrais voir que les deux bases de données que nous avons créées sur le premier nœud sont répliquées sur le troisième nœud :

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Conclusion

Dans le guide ci-dessus, nous avons appris à configurer un cluster MariaDB Galera à trois nœuds sur un serveur Ubuntu 20.04. Tu peux maintenant ajouter facilement d’autres nœuds au cluster MariaDB Galera. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...