Créer un stockage distribué avec GlusterFS sous NetBSD 9.3/10.0

Introduction

L'idée est de créer un stockage répliqué simultanément sur 3 serveurs (3 noeuds) grâce à GlusterFS, minimisant ainsi le risque de voir les données perdues si jamais l'un des noeuds tombe.

Dans ce tuto, je reste très basique, je suis d'aussi près que possible le Quick Start de la page officielle de GlusterFS.
Néanmoins, il faut l'adapter à NetBSD... ce que nous allons faire.

Voici comment


Pré-requis

On se logue en root pour toutes les opérations :


Les opérations suivantes sont à faire sur TOUS LES NOEUDS

1) Installer GlusterFS

pkgin -y in glusterfs

2) Configurer NetBSD pour GlusterFS

(copiez/collez via SSH)

printf '\n' >> /etc/sysctl.conf ; echo '# GLUSTERFS' >> /etc/sysctl.conf ; echo 'kern.sbmax=4194304' >> /etc/sysctl.conf ; echo 'net.inet.tcp.sendbuf_max=1048576' >> /etc/sysctl.conf ; echo 'net.inet.tcp.recvbuf_max=1048576' >> /etc/sysctl.conf ; echo 'vfs.ffs.extattr_autocreate=1024' >> /etc/sysctl.conf ; ln -s /usr/pkg/sbin/mount_glusterfs /sbin/mount_glusterfs ; reboot

La commande ci-dessus ajoute les lignes suivantes au fichier /etc/sysctl.conf et créée un lien symbolique pour le montage de glusterfs, puis redémarre le serveur pour les changements prennent effet.

# GLUSTERFS
kern.sbmax=4194304
net.inet.tcp.sendbuf_max=1048576
net.inet.tcp.recvbuf_max=1048576
vfs.ffs.extattr_autocreate=1024

3) Activer glusterd au démarrage du serveur

cp /usr/pkg/share/examples/rc.d/* /etc/rc.d/ ; echo 'glusterd=YES' >> /etc/rc.conf

4) Préparer les disques pour gluster

On repère le disque de stockage ajouté sur le serveur :

sysctl hw.disknames

On peut aussi repérer le disque et l'identifier grâce à des informations comme sa taille via

dmesg | less

(mon disque ajouté est sd1, nous allons donc manipuler rsd1)
(si mon dique ajouté avait été wd1, nous aurions manipulé rwd1)

On crée une table GPT sur le disque en supprimant une éventuelle table MBR précédente puis une partition de type FFS

gpt create -f /dev/rsd1 ; gpt add -t ffs /dev/rsd1

A ce moment s'affiche un volume logique créé.. du type dkX (pour moi : dk2).
S'il ne s'affiche pas expressement, on peut le retrouver avec la commande suivante :

dmesg | grep sd1

Créer le système de fichiers FFSv1 (attention, il semblerait que la FFSv2 ne soit pas compatible avec GlusterFS sur NetBSD)

newfs -O1 /dev/dk2

5) Monter la partition

Créer un point de montage :

mkdir -p /data/brick1

Monter la partition :

mount -o extattr /dev/dk2 /data/brick1

A ce moment-là, une erreur survient sur NetBSD 9. Il semblerait qu'elle ait été corrigée sur NetBSD 10 puisqu'en refaisant la procédure, je n'ai pas eu d'erreur.
Pour celles et ceux qui rencontreraient une erreur, c'est normal, pas de panique !
La partition se monte, mais sans les attributs étendus.
Pour utiliser les extattr, il nous faut créer des dossiers supplémentaires désormais :

mkdir -p /data/brick1/.attribute/system ; mkdir -p /data/brick1/.attribute/user

Démonter la partition :

umount -f /data/brick1

A présent, la remonter :

mount -o extattr /dev/dk2 /data/brick1

Cette fois, il n'y a pas d'erreur au montage ! Les attributs étendus se créent.

6) Lancer le service glusterd

service glusterd start

7) Ajouter les autres noeuds au fichier /etc/hosts de chaque noeud

Les correspondances suivantes entre les IP de chaque noeud et les hostname doivent se trouver dans les fichiers /etc/hosts de TOUS LES NOEUDS !

10.10.10.1 NET-1
10.10.10.2 NET-2
10.10.10.3 NET-3

L'opération suivante est à faire uniquement sur UN SEUL NOEUD (NET-1 par exemple)

8) Ajouter les autres noeuds

gluster peer probe NET-2

gluster peer probe NET-3

L'opération suivante est à faire sur TOUS LES NOEUDS

9) Créer le dossier de la partition glusterFS

mkdir /data/brick1/gv0

Les opérations suivantes sont à faire uniquement sur UN SEUL NOEUD (NET-1 par exemple)

10) Créer le volume gv0 sur tous les noeuds simultanément

gluster volume create gv0 replica 3 NET-1:/data/brick1/gv0 NET-2:/data/brick1/gv0 NET-3:/data/brick1/gv0

11) Démarrer le volume gv0 créé

gluster volume start gv0

L'opération suivante est à faire sur TOUS LES NOEUDS

12) Créer un point de montage et monter gv0 dessus

mkdir /SFTP

mount -t glusterfs NET-1:/gv0 /SFTP

Les opérations suivantes sont à faire uniquement sur UN SEUL NOEUD (NET-1 par exemple)

13) Tester le volume GlusterFS depuis NET-1

Créer un simple fichier texte depuis NET-1 :

touch /SFTP/coucou.txt

Vérifier à présent s'il est présent sur les autres serveurs dans /SFTP



↑ Haut de page