Section précédente
Ajouter et supprimer des serveurs GlusterFS
Cet article présente les méthodes suivantes pour récupérer lorsqu'un seul serveur tombe en panne :
-
Ajoutez un nouveau serveur, avec une nouvelle adresse IP, pour le remplacer (un correctif moins exigeant).
-
Ajoutez un nouveau serveur mais conservez l'adresse IP du serveur défaillant (une solution plus laborieuse).
Après avoir terminé l'article précédent, vous devriez avoir un tableau GlusterFS avec au moins deux nœuds et savoir comment ajouter et supprimer des nœuds.
Prérequis
Pour les besoins de cet article, vous devez exécuter sur un volume Gluster entièrement répliqué à quatre nœuds.
Remplissez votre tableau GlusterFS avec de fausses données pour les tests.
Ajouter un serveur de remplacement
Dans ce scénario, web03 échoue, mais vous ajoutez un nouveau nœud avec l'adresse IP 192.168.0.5 pour le remplacer. Cette méthode est plus simple que d'ajouter un nouveau serveur avec la même adresse IP que le serveur défaillant.
Cet article présente deux formes de reprise après sinistre :
- Un seul nœud est tombé en panne et vous ajoutez un nouveau nœud pour le remplacer.
- Un seul nœud est tombé en panne, a été reconstruit et a conservé l'adresse IP - cela s'avère être plus de travail à réparer
Ajouter un nœud de remplacement
Dans ce scénario, web03 redescendra, mais vous ajouterez un nouveau nœud à 192.168.0.5 pour le remplacer. Cette méthode est beaucoup plus simple.
-
À l'aide de l'un des serveurs en cours d'exécution, ajoutez le nouveau serveur au cluster :
root@matt:~# gluster peer probe 192.168.0.5 peer probe: success
-
Échangez la brique défaillante contre la nouvelle :
root@matt:~# gluster volume replace-brick www 192.168.0.3:/srv/.bricks/www 192.168.0.5:/srv/.bricks/www commit force volume replace-brick: success: replace-brick commit successful
-
Guérir le système :
root@matt:~# gluster volume heal www full Launching Heal operation on volume www has been successful Use heal info commands to check status
-
Obtenir des informations sur la progression de la
heal
opération :root@matt:~# gluster volume heal www info Gathering Heal info on volume www has been successful ... Brick 192.168.0.4:/srv/.bricks/www Number of entries: 23 /wordpress/wp-admin/upload.php
-
Si vous exécutiez un système distribué, exécutez les commandes suivantes :
root@matt:~# gluster volume rebalance www fix-layout start volume rebalance: www: success: Starting rebalance on volume www has been successful. ID: 0a9719c1-cf04-4161-b3b0-cc6fd8dd9108 root@matt:~# gluster volume rebalance www status Node Rebalanced-files size scanned failures skipped status run time in secs --------- ----------- ----------- ----------- ----------- ----------- ------------ -------------- localhost 0 0Bytes 0 0 0 completed 1.00 localhost 0 0Bytes 0 0 0 completed 1.00 192.168.0.2 0 0Bytes 0 0 0 completed 1.00 192.168.0.4 0 0Bytes 0 0 0 completed 1.00 192.168.0.4 0 0Bytes 0 0 0 completed 1.00 192.168.0.5 0 0Bytes 0 0 0 completed 1.00 volume rebalance: www: success:
Conserver l'adresse IP
Dans ce scénario, le serveur web03, avec l'adresse IP 192.168.0.3, est tombé en panne et est complètement irrécupérable.
Pour récupérer, vous construisez un nouveau serveur, avec la même adresse IP , présentez-le à GlusterFS en tant que serveur défaillant et laissez-le s'auto-réparer. Vous rééquilibrez ensuite le volume dans le GlusterFS.
Reportez-vous aux articles précédents pour plus d'informations sur la création et la configuration du serveur de remplacement.
Déguiser le nouveau serveur web03 en serveur défaillant
-
Construisez le nouveau serveur, installez-y GlusterFS et préparez le disque pour la brique.
-
Donnez au serveur l'UUID homologue du serveur défaillant. Pour obtenir l'UUID, exécutez la commande suivante sur l'un des serveurs en cours d'exécution (tel que web01) :
root@web01:~# grep 192.168.0.3 /var/lib/glusterd/peers/*/var/lib/glusterd/peers/ba502dc2-447f-466a-a732-df989e71b551:hostname1=192.168.0.3
-
Copiez le nom du fichier (qui est l'UUID Web03 d'origine). Dans l'exemple précédent, il s'agit de :
ba502dc2-447f-466a-a732-df989e71b551
. -
Attribuez l'UUID du serveur défaillant au nouveau serveur.
-
Arrêtez le démon Gluster :
root@web03:~# service glusterfs-server stop glusterfs-server stop/waiting
-
Remplacez l'UUID du nœud généré par celui copié dans le
glusterd
fichier de configuration :root@web03:~# UUID=ba502dc2-447f-466a-a732-df989e71b551 root@web03:~# sed -i "s/\(UUID\)=\(.*\)/\1=$UUID/g" /var/lib/glusterd/glusterd.info root@web03:~# cat /var/lib/glusterd/glusterd.info UUID=ba502dc2-447f-466a-a732-df989e71b551 operating-version=2
Remarque : Le
ba502dc2-447f-466a-a732-df989e71b551
UUID est un exemple d'UUID ; vous devez le remplacer par l'UUID de votre serveur défaillant (mémorisé par web01). -
-
Redémarrez le serveur :
root@web03:~# service glusterfs-server start glusterfs-server start/running, process 10732
Reconfigurer les serveurs pairs
-
Sur le nouveau serveur, vérifiez que les autres serveurs sont visibles :
root@web03:~# gluster peer status peer status: No peers present
-
Si les serveurs pairs ne sont pas visibles, vous devez les ajouter explicitement :
root@web03:~# gluster peer probe 192.168.0.1 peer probe: success root@web03:~# gluster peer probe 192.168.0.2 peer probe: success root@web03:~# gluster peer probe 192.168.0.4 peer probe: success
-
Exécutez le
gluster peer status
commande à nouveau sur web03. La réponse doit être :State: Accepted peer request (Connected)
-
Redémarrez le démon une fois de plus, et les serveurs pairs devraient être visibles :
root@web03:~# service glusterfs-server restart glusterfs-server stop/waiting glusterfs-server start/running, process 9123 root@web03:~# gluster peer status Number of Peers: 3 Hostname: 192.168.0.2 Uuid: 177cd473-9421-4651-8d6d-18be3a7e1990 State: Peer in Cluster (Connected) Hostname: 192.168.0.1 Uuid: 8555eac6-de14-44f6-babe-f955ebc16646 State: Peer in Cluster (Connected) Hostname: 192.168.0.4 Uuid: 1681b266-dc31-42e1-ab82-4e220906eda1 State: Peer in Cluster (Connected)
Synchroniser les volumes
-
Vérifiez l'état du volume :
root@web03:~# gluster volume status No volumes present
-
Obtenez les volumes d'un serveur pair :
root@web03:~# gluster volume sync 192.168.0.2 all Sync volume may make data inaccessible while the sync is in progress. Do you want to continue? (y/n) y volume sync: success
-
Réglez le système de fichiers de la brique dans l'ordre. Dans l'exemple suivant, la brique est stockée dans /srv/.bricks/www :
root@web03:~# mkdir /srv/.bricks/www
-
Allez sur l'un des serveurs en cours d'exécution, installez
attr
et obtenez le bon ID de volume.root@web02:~# apt-get install attr -y ... root@web02:~# getfattr -n trusted.glusterfs.volume-id /srv/.bricks/www getfattr: Removing leading '/' from absolute path names # file: srv/.bricks/www trusted.glusterfs.volume-id=0s42V5HW+LSuyzqotW1jgAhA==
-
Copiez la chaîne d'ID de volume dans votre presse-papiers. Dans l'exemple, il s'agit de
0s42V5HW+LSuyzqotW1jgAhA==
. -
Sur le serveur de remplacement, appliquez cet attribut étendu :
root@web03:~# apt-get install attr -y ... root@web03:~# setfattr -n trusted.glusterfs.volume-id -v '0s42V5HW+LSuyzqotW1jgAhA==' /srv/.bricks/www
-
Redémarrez le serveur, puis réparez le système :
root@matt:~# service glusterfs-server restart glusterfs-server stop/waiting glusterfs-server start/running, process 13318 root@matt:~# gluster volume heal www full Launching Heal operation on volume www has been successful Use heal info commands to check status
-
Obtenir des informations sur la progression de la
heal
opération. Le nouveau serveur devrait fonctionner comme prévu.root@matt:~# gluster volume heal www info Gathering Heal info on volume www has been successful Brick 192.168.0.1:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.2:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.3:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.4:/srv/.bricks/www Number of entries: 0
Conclusion
Vous avez maintenant appris comment récupérer d'un serveur défaillant dans une baie GlusterFS.