Skip to main content

[Debian] GlusterFS

Introduction

GlusterFS permet de créer des espaces de données partagées ce qui peut servir pour faire répliquer deux partitions identiques entre deux serveurs distants.

Source

Installation du cluster

Pour la haute disponibilité il est recommandé d'utiliser au moins trois instances sur lesquels nous aurons notre partitions partagée.

Pour le tutoriel nous utiliserons trois machines sur Debian 11.

  •  Tout d'abord, toutes les machines du cluster doivent posséder un hostname, pour cela on définit le hostname avec la commande suivante :
hostnamectl set-hostname <FQDN>

Puis ajoutez les entrées dans le fichier /etc/hosts dans le format suivant :

<IP> <FQDN>

Vérifiez que le ping fonctionne en utilisant les noms d'hôtes.

Ensuite, nous devons préparer la partition qui va accueillir les données sur les trois machines (notre disque sera /dev/sdb) :

apt install -y parted
parted /dev/sdb mklabel gpt mkpart SHARE ext4 1MiB 100%

Maintenant, nous devons préparer le dossier qui va accueillir le point de montage (ici /share) :

mkdir /share

Puis ajoutez cela dans le /etc/fstab pour être persistant après redémarrage :

/dev/sdb1    /share    ext4    defaults    0 1

Pour appliquer les changements et détecter les erreurs :

mount -a

Ne laissez pas d'erreur, sinon vous risquez de ne pas pouvoir démarrer au prochain redémarrage du système !

 Créer le dossier /share/brick0 qui va accueillir les fichiers partagés :

mkdir -p /share/brick0

Désormais, nous pouvons installer le serveur GlusterFS sur nos trois machines :

apt install -y gnupg2 apt-transport-https software-properties-common curl && curl https://download.gluster.org/pub/gluster/glusterfs/10/rsa.pub | gpg --dearmor > /usr/share/keyrings/glusterfs-archive-keyring.gpg && DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"') && DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+') && DEBARCH=$(dpkg --print-architecture) && echo "deb [signed-by=/usr/share/keyrings/glusterfs-archive-keyring.gpg] https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main" | sudo tee /etc/apt/sources.list.d/gluster.list && apt update && apt install -y glusterfs-server

Activer le service et démarrez le :

systemctl enable --now glusterd
systemctl enable glusterd

On peut initialiser le cluster depuis le premier noeud (Node 1) du cluster avec la commande suivante :

gluster peer probe <FQDN_NODE_2> && gluster peer probe <FQDN_NODE_3>

 On peut vérifier que les noeuds ont bien rejoins le cluster avec la commande gluster pool list  .

On peut vérifier l'état du cluster avec la commande gluster peer status .

On peut maintenant créer un premier volume partagé 

gluster volume create <VOL_NAME> replica 3 <FQDN_NODE_1>:/share/brick0 <FQDN_NODE_2>:/share/brick0 <FQDN_NODE_3>:/share/brick0

On démarrer le volume :

gluster volume start <VOL_NAME>

On peut afficher les informations du volume avec la commande gluster volume info .

Montage côté client

Comme on le ferait avec un partage réseau type NFS ou Samba par exemple, nous allons monter notre volume glusterfs sur notre ou nos clients.

Pour cela, on installe d'abord le paquet glusterfs-client :

apt install -y glusterfs-client

On peut créer le point de montage :

mkdir -p /mnt/share

Et on monte le volume :

mount.glusterfs <FQDN_NODE_1>:/<VOL_NAME> /mnt/share

Pour un partage persistant, on ajoute une entrée dans le /etc/fstab :

<FQDN_NODE_1>:<VOL_NAME> /mnt/share glusterfs defaults,_netdev 0 0

Puis :

mount -a

Le volume distribué est prêt et tolère la panne pour supporter la HA !