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
- NetBSD 9.3, installation minimale avec ntp et ntpd au démarrage (c'est obligatoire !), pkgin et SSH.
- Il est recommandé de créer une partition séparée pour /var/log a minima
- 3 serveurs a minima (noms d'hôtes NET-1, NET-2, NET-3), avec une IP configurée (par exemple NET-1 : 10.10.10.1, NET-2 : 10.10.10.2 et NET-3 : 10.10.10.3)
- 2 supports de stockage par serveur : l'un pour l'OS, le second pour le stockage distribué. Même taille pour chaque serveur. ça peut être du stockage SATA ou USB. Les brancher/connecter avant de configurer.
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