Configuration d’un serveur de stockage haute disponibilité à l’aide de GlusterFS
12 mars 2013
par Lubos Rendek
Introduction
Que vous administriez un petit réseau domestique ou un réseau d’entreprise pour une grande entreprise, le stockage des données est toujours une préoccupation. Il peut s’agir d’un manque d’espace disque ou d’une solution de sauvegarde inefficace. Dans les deux cas, GlusterFS peut être le bon outil pour résoudre votre problème, car il vous permet de faire évoluer vos ressources horizontalement et verticalement. Dans ce guide, nous allons configurer le stockage des données distribuées et répliquées/miroirs. Comme son nom l’indique, le mode de stockage distribué d’un GlusterFS vous permettra de redistribuer uniformément vos données sur plusieurs nœuds de réseau, tandis qu’un mode répliqué s’assurera que toutes vos données sont mises en miroir sur tous les nœuds du réseau.
Qu’est-ce que GlusterFS
Après avoir lu l’introduction, vous devriez déjà avoir une bonne idée de ce qu’est GlusterFS. Vous pouvez le considérer comme un service d’agrégation pour tout votre espace disque vide sur l’ensemble de votre réseau. Il connecte tous les nœuds avec l’installation de GlusterFS via TCP ou RDMA, créant ainsi une ressource de stockage unique combinant tout l’espace disque disponible en un seul volume de stockage (mode distribué) ou utilise le maximum d’espace disque disponible sur toutes les notes pour refléter vos données (mode répliqué). Par conséquent, chaque volume se compose de plusieurs nœuds, que la terminologie de GlusterFS appelle des briques.
Hypothèses préliminaires
Bien que GlusterFS puisse être installé et utilisé sur n’importe quelle distribution Linux, cet article utilisera principalement Ubuntu Linux. Cependant, vous devriez être en mesure d’utiliser ce guide sur n’importe quelle distribution Linux comme RedHat, Fedora, SuSe, etc. La seule partie qui sera différente sera le processus d’installation de GlusterFS.
De plus, ce guide utilisera 3 exemples de noms d’hôtes :
- storage.server1 – Serveur de stockage GlusterFS
- storage.server2 – Serveur de stockage GlusterFS
- storage.client – Client de stockage GlusterFS
Utilisez le serveur DNS ou le fichier /etc/hosts pour définir vos noms d’hôtes et ajuster votre scénario à ce guide.
Installation de GlusterFS
Le serveur GlusterFS doit être installé sur tous les hôtes que vous souhaitez ajouter à votre volume de stockage final. Dans notre cas, il s’agira de storage.server1 et storage.server2. Vous pouvez utiliser GlusterFS comme serveur unique et une connexion client pour agir comme un serveur NFS. Cependant, la véritable valeur de GlusterFS réside dans l’utilisation de plusieurs hôtes de serveur pour agir comme un seul. Utilisez la commande linux suivante sur les deux serveurs pour installer le serveur GlusterFS :
storage.server1 $ sudo apt-get install glusterfs-serveret
storage.server2 $ sudo apt-get install glusterfs-serverLes commandes ci-dessus installeront et démarreront glusterfs-server sur les deux systèmes. Vérifiez que les deux serveurs s’exécutent avec :
sudo service glusterfs-server statusConfiguration du stockage distribué
Tout d’abord, nous allons créer un volume distribué GlusterFS. En mode distribué, GlusterFS répartira uniformément toutes les données sur toutes les briques connectées. Par exemple, si les clients écrivent les fichiers file1, file2, file3 et file4 dans un répertoire monté GlusterFS, server.storage1 contiendra file1 et file2 et server.storage2 obtiendra file3 et file4. Ce scénario est illustré à l’aide du diagramme ci-dessous.
Sonde homologue
Tout d’abord, nous devons faire en sorte que les deux serveurs GlusterFS communiquent entre eux, ce qui signifie que nous créons effectivement un pool de serveurs de confiance.
storage.server1 $ sudo gluster peer probe storage.server2
Probe successful La commande ci-dessus ajoute storage.server2 à un pool de serveurs approuvés. Ces paramètres sont répliqués sur tous les serveurs connectés, de sorte que vous n’avez pas besoin d’exécuter la commande ci-dessus sur d’autres serveurs. À présent, les deux serveurs auront le fichier de configuration de l’homologue disponible similaire à celui ci-dessous :
cat /etc/glusterd/peers/951b8732-42f0-42e1-a32f-0e1c4baec4f1
uuid=951b8732-42f0-42e1-a32f-0e1c4baec4f1
state=3
hostname1=storage.server2Créer un volume de stockage
Ensuite, nous pouvons utiliser les deux serveurs pour définir un nouveau volume de stockage composé de deux briques, une pour chaque serveur.
storage.server1 $ sudo gluster volume create dist-vol storage.server1:/dist-data \
storage.server2:/dist-data
Creation of volume dist-vol has been successful. Please start the volume to access data.La commande ci-dessus a créé un nouveau volume appelé dist-vol composé de deux briques. Si le répertoire /dist-data n’existe pas, il sera également créé sur les deux serveurs par la commande ci-dessus. Comme il a déjà été mentionné précédemment, vous ne pouvez ajouter qu’une seule brique au volume et ainsi faire en sorte que le serveur ClusterFS agisse comme un serveur NFS. Vous pouvez vérifier si votre nouveau volume a été créé par :
sudo gluster volume info dist-vol
Volume Name: dist-vol
Type: Distribute
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/dist-data
Brick2: storage.server2:/dist-dataDémarrer le volume de stockage
Maintenant, nous sommes prêts à commencer votre nouveau volume :
storage.server1 $ sudo gluster volume start dist-vol
Starting volume dist-vol has been successful
storage.server1 $ sudo gluster volume info dist-vol
Volume Name: dist-vol
Type: Distribute
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/dist-data
Brick2: storage.server2:/dist-dataCeci conclut une configuration du serveur de données GlusterFS en mode distribué. Le résultat final doit être un nouveau volume distribué appelé dist-vol composé de deux briques.
Configuration du client
Maintenant que nous avons créé un nouveau volume GlusterFS, nous pouvons utiliser le client GlusterFS pour monter ce volume sur n’importe quel hôte. Connectez-vous à l’hôte client et installez le client GlusteFS :
storage.client $ sudo apt-get install glusterfs-clientEnsuite, créez un point de montage sur lequel vous monterez votre nouveau volume dist-vol GlusterFS, par exemple export-dist :
storage.client $ sudo mkdir /export-distMaintenant, nous pouvons monter le volume dist-vol GlusterFS avec la commande mount :
storage.client $ sudo mount -t glusterfs storage.server1:dist-vol /export-distTous crient, soyez prêts. Utilisez la commande mount pour voir si vous avez correctement monté le volume GlusterFS :
mount | grep glusterfTest de la configuration distribuée de GlusterFS
Tout est prêt pour que nous puissions commencer quelques tests. Côté client, crate 4 fichiers dans le répertoire monté GlusterFS :
storage.client $ touch /export-dist/file1 file2 file3 file4Le GlusterFS va maintenant prendre tous les fichiers et les redistribuer uniformément entre toutes les briques du volume dist-vol. Par conséquent, storage.server1 contiendra :
storage.server1 $ ls /dist-data/
file3 file4et storage.server2 contiendra :
storage.server2 $ ls /dist-data
file1 file2Bien sûr, vos résultats peuvent être différents.
Configuration du stockage répliqué
La procédure de création d’un volume GlusterFS répliqué est similaire à celle du volume distribué expliqué précédemment. En fait, la seule différence est la façon dont le volume ClusterFS est créé. Mais recommençons depuis le début :
Sonde homologue
Tout d’abord, nous devons faire en sorte que les deux serveurs GlusterFS communiquent entre eux, ce qui signifie que nous créons effectivement un pool de serveurs de confiance.
storage.server1 $ sudo gluster peer probe storage.server2
Probe successfulSi cela est déjà fait, vous pouvez sauter cette étape.
Créer un volume de stockage
Dans cette étape, nous devons créer un volume de réplica.
sudo gluster volume create repl-vol replica 2 \
storage.server1:/repl-data storage.server2:/repl-data
Creation of volume repl-vol has been successful. Please start the volume to access data.
La traduction de base de la commande ci-dessus pourrait être que nous avons créé un volume répliqué ( replica ) appelé repl-vol . Le chiffre 2 de la commande indique le nombre de bandes, ce qui signifie que lors de l’expansion de ce volume, nous devons toujours ajouter le nombre de briques égal au multiple du nombre de bandes de volume (2, 4, 8, 16, etc.).
Volume de stockage de démarrage
Il est temps de démarrer notre nouveau volume répliqué :
sudo gluster volume start repl-vol
Starting volume repl-vol has been successfulVérifiez l’état :
storage.server1 $ sudo gluster volume info repl-vol
Volume Name: repl-vol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/repl-data
Brick2: storage.server2:/repl-dataConfiguration du client
La configuration du client est la même que lors de la configuration du client pour le montage du volume distribué.
Client d’installation :
storage.client $ sudo apt-get install glusterfs-clientCréez un point de montage :
storage.client $ sudo mkdir /export-replMontez le volume repl-vol GlusterFS avec la commande mount :
storage.client $ sudo mount -t glusterfs storage.server1:repl-vol /export-replTous les cris sont maintenant prêts. Utilisez la commande mount pour voir si vous avez correctement monté le volume GlusterFS :
mount | grep glusterfTest de la configuration répliquée de GlusterFS
L’intérêt du volume GlusterFS répliqué est que les données seront mises en miroir de manière transparente sur tous les nœuds. Ainsi, lors de la création de fichiers dans /export-repl/
touch /export-repl/file1 file2 file3 file4Tous les fichiers seront disponibles sur les deux serveurs :
storage.server1 $ ls /repl-data/
file1 file2 file3 file4et
storage.server2 $ ls /repl-data/
file1 file2 file3 file4Augmentation des volumes de GlusterFS
Dans le cas où vous devez augmenter votre stockage de données pour inclure des briques supplémentaires, le processus est simple :
sudo gluster volume add-brick rep-vol storage.server3:/repl-vol storage.server4:repl-vol /export-replCela ajoutera deux autres briques de stockage à votre repl-vol. Une fois que vous avez ajouté de nouvelles briques, vous devrez peut-être rééquilibrer l’ensemble du volume avec :
sudo gluster volume rebalance repl-vol fix-layout startet synchroniser/migrer toutes les données avec :
sudo gluster volume rebalance repl-vol migrate-data startDe plus, vous pouvez vérifier la progression du rééquilibrage avec
sudo gluster volume rebalance vol0 statusParamètres de sécurité
En plus de la configuration ci-dessus, vous pouvez renforcer la sécurité de l’ensemble du volume en autorisant uniquement certains hôtes à rejoindre le pool de confiance. Par exemple, si nous voulons que seul l’hôte avec 10.1.1.10 soit autorisé à participer au volume repl-vol, nous utilisons la commande linux suivante :
sudo gluster volume set repl-vol auth.allow 10.1.1.10Dans le cas où nous avons besoin de l’ensemble du sous-réseau, utilisez simplement l’astérisque :
sudo gluster volume set repl-vol auth.allow 10.1.1.*Conclusion
GlusterFS est un puissant logiciel sous licence GPL3. On peut également l’utiliser comme un RAID 1 logiciel rapide en définissant deux briques de périphérique physiques distinctes sur l’hôte unique dans le volume GlusterFS répliqué. Bien sûr, il serait préférable d’utiliser le raid logiciel pour ce travail, mais la possibilité est toujours là. J’ai trouvé GlusterFS facile à utiliser et à configurer.
Appendice
Ici, je vais juste énumérer quelques erreurs et réponses que j’ai rencontrées en jouant avec GlusterFS :
Nombre incorrect de briques
Incorrect number of bricks supplied 1 for type REPLICATE with count 2Si vous avez créé un volume avec un nombre de bandes de 2, vous devez ajouter au moins 2 briques supplémentaires à ce moment-là.
L’hôte storage.server1 n’est pas un ami
Host storage.server1 not a friendAjoutez d’abord le serveur GlusterFS au pool de confiance avant d’essayer de l’inclure dans le volume.

