Recherche de site Web

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-server

et

storage.server2 $ sudo apt-get install glusterfs-server

Les 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 status

Configuration 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.server2

Cré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-data

Dé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-data

Ceci 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-client

Ensuite, 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-dist

Maintenant, nous pouvons monter le volume dist-vol GlusterFS avec la commande mount :

storage.client $ sudo mount -t glusterfs storage.server1:dist-vol /export-dist

Tous crient, soyez prêts. Utilisez la commande mount pour voir si vous avez correctement monté le volume GlusterFS :

mount | grep glusterf

Test 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 file4

Le 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  file4

et storage.server2 contiendra :

storage.server2 $ ls /dist-data
file1  file2

Bien 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 successful

Si 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 successful

Vé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-data

Configuration 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-client

Créez un point de montage :

storage.client $ sudo mkdir /export-repl

Montez le volume repl-vol GlusterFS avec la commande mount :

storage.client $ sudo mount -t glusterfs storage.server1:repl-vol /export-repl

Tous les cris sont maintenant prêts. Utilisez la commande mount pour voir si vous avez correctement monté le volume GlusterFS :

mount | grep glusterf

Test 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 file4

Tous les fichiers seront disponibles sur les deux serveurs :

storage.server1 $ ls /repl-data/
file1  file2  file3  file4

et

storage.server2 $ ls /repl-data/
file1  file2  file3  file4

Augmentation 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-repl

Cela 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 start

et synchroniser/migrer toutes les données avec :

sudo gluster volume rebalance repl-vol  migrate-data start

De plus, vous pouvez vérifier la progression du rééquilibrage avec

sudo gluster volume rebalance vol0 status

Paramè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.10

Dans 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 2

Si 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 friend

Ajoutez d’abord le serveur GlusterFS au pool de confiance avant d’essayer de l’inclure dans le volume.

Articles connexes: