GlusterFS
GlusterFS est un service très populaire permettant de faire du HAS (High-Availability Storage) ou stockage de haute disponibilité entre deux ou plusieurs serveurs.
Imaginons que vous ayez une application tournant en cluster (simultanément sur deux ou plusieurs nœuds ), cette appli aura besoin de générer des fichiers de temps à autres. Sans un système de synchronisation de fichiers, ladite appli ne fonctionnera pas correctement, car les fichiers de ses différents nœuds n'aurons pas exactement les mêmes informations.
Pour régler ce problème, mieux vaut utiliser un système de synchronisation de fichiers. Rsync et CEPH sont des alternatives à GlusterFS, qui, contrairement à Hadoop, GlusterFS n'a pas besoin de serveur de métadonnées pour fonctionner et offre en même temps un traitement de volumes très importants de données de différentes arborescences du système. En résumé, GlusterFS assure trois choses :
- La tolérance aux pannes car les données sont réécrites sur tous les nœuds du cluster ;
- La haute disponibilité ainsi que la performance dans la lecture ;
- La facilité dans l'extension du cluster de stockage.
Le volume distribué
/image%2F3625927%2F20240102%2Fob_e85119_1.png)
Le volume répliqué
/image%2F3625927%2F20240102%2Fob_269249_2.png)
Mise en œuvre
Changer le nom d'hôte des machines
Machine 1 : 192.168.10.69 (db1.local)
Machine 2 : 192.168.10.172 (db2.local)
Faire la résolution DNS locale sur les deux VMs
# nano /etc/hosts
192.168.10.69 db1.local db1
192.168.10.172 db2.local db2
/image%2F3625927%2F20240103%2Fob_aa2dfa_3.png)
Installation de glusterFS
# apt update ; apt upgrade -y
# apt install glusterfs-server -y
# systemctl start glusterd && systemctl enable glusterd
Créer un point de référence sur les deux VMs
# mkdir /data1
Faire une liaison des deux nœuds, le faire uniquement sur un seul
/image%2F3625927%2F20240103%2Fob_6a3127_4.png)
Créer un partage que je vais appeler volume1 et le démarrer
# gluster volume create volume1 replica 2 transport tcp db1.local:/data1/volume1 db2.local:/data1/volume1 force
# gluster volume start volume1
Pour afficher l'ensemble des infos concernant le volume, ...
Sur db1
/image%2F3625927%2F20240103%2Fob_bd249f_6.png)
Sur db2
/image%2F3625927%2F20240103%2Fob_113b12_7.png)
Pour afficher le statut du volume et d'autres infos sur les briques
/image%2F3625927%2F20240103%2Fob_b995e4_8.png)
Installation du point de réplication
Sur les deux nœuds :
# mkdir /mnt/glusterfs
Monter ensuite le système de fichiers sur /mnt/glusterfs
Sur db1
# mount.glusterfs db2.local:volume1 /mnt/glusterfs/
Sur db2
# mount.glusterfs db1.local:volume1 /mnt/glusterfs/
/image%2F3625927%2F20240103%2Fob_980dbf_9.png)
Vérifions si la syncho est bien faite
/image%2F3625927%2F20240103%2Fob_7b9eda_10.png)
C'est clair !!!!!
Mise en place d'un montage persistant
Sur db1
/image%2F3625927%2F20240103%2Fob_4daa49_11.png)
Sur db2
/image%2F3625927%2F20240103%2Fob_caa131_12.png)
Administration
Pour casser une liaison, il faut tout d'abord :
- Supprimer le volume de partage : gluster volume delete nom_volume
- Maintenant casser la liaison proprement dite :
gluster peer detach nom_du_peer
Pour d'autres commandes d'administration, rendez-vous ici
GlusterFS est très pratique et simple d'implémentation car la grande partie de la configuration ne se fait pas en full-mesh, à partir d'un seul nœud, nous pouvons monter la synchro. Il est aussi très utile dans une application déployée en cluster.