Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
formation:anfbigdata [2016/12/14 14:51] – [Résilience de l'accès au serveur] equemene | formation:anfbigdata [2025/05/14 07:38] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Travaux pratiques GlusterFS ====== | + | ====== Travaux pratiques GlusterFS |
- | GlusterFS ou la quête | + | Support |
+ | ===== CQQCOQP (Comment ? Quoi ? Qui, Combien ? Où ? Quand ? Pourquoi ?) ===== | ||
+ | |||
+ | * **Pourquoi ?** Survoler les principales fonctionnalités de GlusterFS et se faire sa propre idée | ||
+ | * **Quoi ?** Tester au travers d' | ||
+ | * **Quand ?** Jeudi 15 décembre de 9h à 12h | ||
+ | * **Combien ?** 12GB d' | ||
+ | * **Où ?** Sur une machine unique, dans en environnement VirtualBox | ||
+ | * **Qui ?** Pour des admin' | ||
+ | * **Comment ?** En appliquant une série de commandes simples au travers d'un terminal | ||
===== Objectif de la séance ===== | ===== Objectif de la séance ===== | ||
+ | C'est de donner un aperçu des différentes fonctionnalités de GlusterFS dans un environnement propre, en insistant sur sa simplicité d' | ||
===== Préparation de la séance ===== | ===== Préparation de la séance ===== | ||
Ligne 591: | Ligne 600: | ||
</ | </ | ||
- | Cette commande prend autour de 50 secondes | + | Cette commande prend un peu moins d'une minute |
Lançons maintenant une lecture tout aussi parallèle | Lançons maintenant une lecture tout aussi parallèle | ||
Ligne 598: | Ligne 607: | ||
</ | </ | ||
- | Cette commande prend autour de 12 secondes. | + | Cette commande |
Il est possible de voir comment sont distribués les fichiers sur les différents serveurs : | Il est possible de voir comment sont distribués les fichiers sur les différents serveurs : | ||
Ligne 672: | Ligne 681: | ||
< | < | ||
ssh root@peer1 gluster volume rebalance MyGlusterLinear status | ssh root@peer1 gluster volume rebalance MyGlusterLinear status | ||
+ | </ | ||
+ | Nous avons une sortie comparable à ce qui suit : | ||
+ | < | ||
Node Rebalanced-files | Node Rebalanced-files | ||
| | ||
Ligne 685: | Ligne 697: | ||
</ | </ | ||
- | </code> | + | < |
- | root@peer2: | + | root@peer2: |
root@peer1: 335 | root@peer1: 335 | ||
- | root@peer4: ls: impossible d' | ||
root@peer4: 0 | root@peer4: 0 | ||
+ | root@peer4: ls: impossible d' | ||
root@peer3: 318 | root@peer3: 318 | ||
</ | </ | ||
Ligne 695: | Ligne 707: | ||
La redistribution n'est pas parfaite, mais elle reste correcte ! | La redistribution n'est pas parfaite, mais elle reste correcte ! | ||
- | Replaçons | + | Supprimons |
< | < | ||
- | ssh root@peer2 gluster volume | + | ssh root@peer2 gluster volume |
</ | </ | ||
+ | Le message suivant indique que la procédure a démarré | ||
< | < | ||
- | volume | + | volume |
+ | ID: 92c17fc7-9980-4c73-83fd-fd011a8be530 | ||
+ | </ | ||
+ | |||
+ | Contrôlons la progression de la migration des données issues de la demande de suppression : | ||
+ | < | ||
+ | ssh root@peer2 gluster volume remove-brick | ||
+ | </ | ||
+ | |||
+ | Une fois terminé, nous avons pour la même commande précédente : | ||
+ | < | ||
+ | Node Rebalanced-files | ||
+ | | ||
+ | peer1.gluster.zone | ||
+ | </ | ||
+ | |||
+ | Relançons la commande pour voir la distribution sur les différents serveurs | ||
+ | < | ||
+ | clush -w root@peer[1-4] 'ls / | ||
+ | </ | ||
+ | Nous obtenons : | ||
+ | < | ||
+ | root@peer1: 0 | ||
+ | root@peer1: ls: impossible d' | ||
+ | root@peer4: 0 | ||
+ | root@peer4: ls: impossible d' | ||
+ | root@peer2: 347 | ||
+ | root@peer3: 653 | ||
+ | </ | ||
+ | Les fichiers ont bien disparu de **peer1** et se sont retrouvés sur **peer3** ! | ||
+ | |||
+ | Validons la suppression | ||
+ | < | ||
+ | ssh root@peer2 'echo y | gluster volume remove-brick MyGlusterLinear peer1:/ | ||
+ | </ | ||
+ | |||
+ | Un petit message nous invite à la prudence, pour, au pire, restaurer les données : | ||
+ | < | ||
+ | Removing brick(s) can result in data loss. Do you want to Continue? (y/n) volume remove-brick commit: success | ||
+ | Check the removed bricks to ensure all files are migrated. | ||
+ | If files with data are found on the brick path, copy them via a gluster mount point before re-purposing the removed brick. | ||
</ | </ | ||
Ligne 712: | Ligne 765: | ||
Status: Started | Status: Started | ||
Snapshot Count: 0 | Snapshot Count: 0 | ||
- | Number of Bricks: | + | Number of Bricks: |
Transport-type: | Transport-type: | ||
Bricks: | Bricks: | ||
Brick1: peer2:/ | Brick1: peer2:/ | ||
- | Brick2: peer4:/ | ||
Brick3: peer3:/ | Brick3: peer3:/ | ||
Options Reconfigured: | Options Reconfigured: | ||
Ligne 723: | Ligne 775: | ||
nfs.disable: | nfs.disable: | ||
</ | </ | ||
- | |||
- | Si nous regardons la répartitions des fichiers avec | ||
- | < | ||
- | clush -w root@peer[1-4] 'ls / | ||
- | </ | ||
- | Nous avons : | ||
- | < | ||
- | root@peer3: 318 | ||
- | root@peer1: 347 | ||
- | root@peer2: 335 | ||
- | root@peer4: 347 | ||
- | </ | ||
- | Nous voyons que la " | ||
- | |||
Effaçons ces fichiers et démontons le volume monté sur le client : | Effaçons ces fichiers et démontons le volume monté sur le client : | ||
Ligne 743: | Ligne 781: | ||
sudo umount / | sudo umount / | ||
</ | </ | ||
+ | |||
+ | <note important> | ||
===== Création d’un volume de type '' | ===== Création d’un volume de type '' | ||
Ligne 993: | Ligne 1033: | ||
Objectif : filtrer l' | Objectif : filtrer l' | ||
+ | |||
+ | Démontons le volume du client | ||
+ | < | ||
+ | sudo umount / | ||
+ | </ | ||
Détermination de l'IP des machines | Détermination de l'IP des machines | ||
- | Restriction à uniquement les serveurs | + | Les serveurs |
- | ssh root@peer1 gluster volume set distonet | + | Restriction à uniquement les serveurs du pool avec l' |
+ | < | ||
+ | ssh root@peer1 gluster volume set MyGlusterRAID1 | ||
+ | </ | ||
+ | < | ||
gluster volume info | gluster volume info | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Volume Name: MyGlusterRAID1 | ||
+ | Type: Distributed-Replicate | ||
+ | Volume ID: 7bb3b6dd-a82c-45bd-bb28-5f9545438d84 | ||
+ | Status: Started | ||
+ | Snapshot Count: 0 | ||
+ | Number of Bricks: 2 x 2 = 4 | ||
+ | Transport-type: | ||
+ | Bricks: | ||
+ | Brick1: peer1:/ | ||
+ | Brick2: peer3:/ | ||
+ | Brick3: peer2:/ | ||
+ | Brick4: peer4:/ | ||
+ | Options Reconfigured: | ||
+ | auth.allow: 10.20.16.1, | ||
+ | nfs.disable: | ||
+ | performance.readdir-ahead: | ||
+ | transport.address-family: | ||
+ | </ | ||
+ | |||
+ | Lançons la commande de montage sur le client | ||
+ | < | ||
+ | sudo mount -t glusterfs peer1: | ||
+ | </ | ||
+ | |||
+ | La commande s' | ||
+ | |||
+ | Si nous rajoutons l'IP du client **10.20.16.254**, | ||
+ | < | ||
+ | ssh root@peer1 gluster volume set MyGlusterRAID1 auth.allow 10.20.16.1, | ||
+ | </ | ||
+ | Nous pouvons monter le volume '' | ||
+ | |||
+ | Pour réinitialiser une valeur, nous utilisons : la commande '' | ||
+ | < | ||
+ | ssh root@peer1 gluster volume reset MyGlusterRAID1 auth.allow | ||
+ | </ | ||
+ | |||
+ | |||
+ | Démontage du volume du client par '' | ||
==== Chiffrement de la communication ==== | ==== Chiffrement de la communication ==== | ||
Objectif : assurer une confidentialité forte sur l' | Objectif : assurer une confidentialité forte sur l' | ||
+ | |||
+ | Démontage de | ||
Création de la clé OpenSSL, des certificats serveurs et client | Création de la clé OpenSSL, des certificats serveurs et client | ||
< | < | ||
openssl genrsa -out glusterfs.key 1024 | openssl genrsa -out glusterfs.key 1024 | ||
- | openssl req -new -x509 -days 3650 -key glusterfs.key -subj / | + | openssl req -new -x509 -days 3650 -key glusterfs.key -subj / |
- | seq 4 | xargs -I ' | + | seq 4 | xargs -I '{}' openssl req -new -x509 -days 3650 -key glusterfs.key -subj / |
</ | </ | ||
< | < | ||
- | cat glusterfs.pem | + | cat peer* >> glusterfs.ca |
</ | </ | ||
< | < | ||
- | seq 4 | xargs -I ' | + | seq 4 | xargs -I '{}' scp glusterfs.key |
- | seq 4 | xargs -I ' | + | seq 4 | xargs -I '{}' scp glusterfs.ca |
</ | </ | ||
< | < | ||
- | ssh root@peer1 gluster volume set MyGlusterLinear | + | ssh root@peer1 gluster volume set MyGlusterRAID1 |
- | ssh root@peer1 gluster volume set MyGlusterLinear | + | ssh root@peer1 gluster volume set MyGlusterRAID1 |
- | ssh root@peer1 gluster volume set MyGlusterLinear | + | ssh root@peer1 gluster volume set MyGlusterRAID1 |
</ | </ | ||
+ | |||
< | < | ||
- | ssh root@peer1 "echo y | gluster volume stop MyGlusterLinear" | + | Volume Name: MyGlusterRAID1 |
- | ssh root@peer1 gluster volume start MyGlusterLinear | + | Type: Distributed-Replicate |
+ | Volume ID: 7bb3b6dd-a82c-45bd-bb28-5f9545438d84 | ||
+ | Status: Started | ||
+ | Snapshot Count: 0 | ||
+ | Number of Bricks: 2 x 2 = 4 | ||
+ | Transport-type: | ||
+ | Bricks: | ||
+ | Brick1: | ||
+ | Brick2: peer3:/ | ||
+ | Brick3: peer2:/ | ||
+ | Brick4: peer4:/ | ||
+ | Options Reconfigured: | ||
+ | ssl.own-cert: | ||
+ | server.ssl: on | ||
+ | client.ssl: on | ||
+ | nfs.disable: | ||
+ | performance.readdir-ahead: | ||
+ | transport.address-family: | ||
</ | </ | ||
+ | Création des points de montage & montage sur les serveurs : | ||
+ | < | ||
+ | clush -w root@peer[1-4] mkdir / | ||
+ | clush -w root@peer[1-4] mount -t glusterfs peer1: | ||
+ | </ | ||
+ | |||
+ | Normalement, | ||
+ | < | ||
+ | root@peer2: Mount failed. Please check the log file for more details. | ||
+ | clush: root@peer2: exited with exit code 1 | ||
+ | root@peer4: Mount failed. Please check the log file for more details. | ||
+ | clush: root@peer4: exited with exit code 1 | ||
+ | root@peer3: Mount failed. Please check the log file for more details. | ||
+ | clush: root@peer3: exited with exit code 1 | ||
+ | root@peer1: Mount failed. Please check the log file for more details. | ||
+ | clush: root@peer1: exited with exit code 1 | ||
+ | </ | ||
+ | Il est en effet nécessaire d' | ||
+ | < | ||
+ | ssh root@peer1 "echo y | gluster volume stop MyGlusterRAID1" | ||
+ | ssh root@peer1 gluster volume start MyGlusterRAID1 | ||
+ | </ | ||
+ | |||
+ | Après cette opération : | ||
+ | < | ||
+ | clush -w root@peer[1-4] mount -t glusterfs peer1: | ||
+ | clush -w root@peer[1-4] df | grep MyGlusterRAID1 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | root@peer1: peer1: | ||
+ | root@peer3: peer1: | ||
+ | root@peer4: peer1: | ||
+ | root@peer2: peer1: | ||
+ | </ | ||
+ | |||
+ | Essayons maintenant de monter le volume chiffré sur le client : | ||
+ | < | ||
+ | sudo mount -t glusterfs peer1: | ||
+ | </ | ||
+ | Le message d' | ||
+ | < | ||
+ | Mount failed. Please check the log file for more details. | ||
+ | </ | ||
+ | Si vous regardons les logs d' | ||
+ | < | ||
+ | [2016-12-14 15: | ||
+ | </ | ||
+ | |||
+ | Ceci est dû au fait que, lorsque nous avons agrégé les certificats (commande '' | ||
+ | |||
+ | Effectuons les opérations suivantes : | ||
+ | < | ||
+ | # Demontage des volumes montes | ||
+ | clush -w root@peer[1-4] umount / | ||
+ | # Arret du volume MyGlusterRAID1 | ||
+ | ssh root@peer1 "echo y | gluster volume stop MyGlusterRAID1" | ||
+ | # Creation du nouvel agregat de certificats | ||
+ | cat peer*pem gluster-client.pem >> glusterfs.ca | ||
+ | # Diffusion de l' | ||
+ | seq 4 | xargs -I ' | ||
+ | # Copie locale de la clé dans le bon dossier | ||
+ | sudo cp glusterfs.key /etc/ssl | ||
+ | # Copie locale de l' | ||
+ | sudo cp glusterfs.ca /etc/ssl | ||
+ | # Demarrage du volume MyGlusterRAID1 | ||
+ | ssh root@peer1 gluster volume start MyGlusterRAID1 | ||
+ | </ | ||
+ | |||
+ | Nous pouvons (enfin) monter le volume de manière chiffrée : | ||
+ | < | ||
+ | sudo mount -t glusterfs peer1: | ||
+ | </ | ||
+ | Et vérifier son accès : | ||
+ | < | ||
+ | md5sum / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | e0cebe0d913746ff4b506a4da55f986c | ||
+ | e49e69ae967bc7bc0ffad0aa8e713300 | ||
+ | 6e34c25900be11e3ed58ddee62f3d241 | ||
+ | de5256d745e9edcd0b006303fd7a9f7f | ||
+ | fa748e331d8c0fd6fd87f7b7f9299cc3 | ||
+ | 407a43d7a3fa120faff14357c2724503 | ||
+ | cb5432658b53aa208fcd9289bffb7106 | ||
+ | 93949c9c1b1f685a2feff0572afff008 | ||
+ | eefcff95428ca6d18fdaf0562a43b33e | ||
+ | 0130dc26e947eb016197bad4a8f6d0ee | ||
+ | </ | ||
===== Fonctionnalités avancées ==== | ===== Fonctionnalités avancées ==== | ||
Ligne 1034: | Ligne 1235: | ||
< | < | ||
- | clush -w peer[1-4] mkdir / | + | clush -w root@peer[1-4] mkdir / |
ssh root@peer1 gluster volume create MyGlusterReplica replica 2 transport tcp peer1:/ | ssh root@peer1 gluster volume create MyGlusterReplica replica 2 transport tcp peer1:/ | ||
ssh root@peer1 gluster volume start MyGlusterReplica | ssh root@peer1 gluster volume start MyGlusterReplica | ||
ssh root@peer1 gluster volume info | ssh root@peer1 gluster volume info | ||
- | ssh peer1 gluster volume tier MyGlusterReplica attach replica 2 peer2:/ | + | </ |
- | ssh root@peer1 gluster tier status | + | < |
+ | Volume Name: MyGlusterReplica | ||
+ | Type: Replicate | ||
+ | Volume ID: 93689088-b6b5-413f-8a4b-3b395f6b965c | ||
+ | Status: Started | ||
+ | Snapshot Count: 0 | ||
+ | Number of Bricks: 1 x 2 = 2 | ||
+ | Transport-type: | ||
+ | Bricks: | ||
+ | Brick1: peer1:/ | ||
+ | Brick2: peer3:/ | ||
+ | Options Reconfigured: | ||
+ | transport.address-family: | ||
+ | performance.readdir-ahead: | ||
+ | nfs.disable: | ||
+ | </ | ||
+ | |||
+ | Activation du //tiering// sur les deux autres pairs **peer2** et **peer4** : | ||
+ | < | ||
+ | ssh root@peer1 gluster volume tier MyGlusterReplica attach replica 2 peer2:/ | ||
+ | </ | ||
+ | < | ||
+ | Tiering Migration Functionality: | ||
+ | ID: f1084e85-f5cb-475e-8457-fe258dca4533 | ||
+ | </ | ||
+ | < | ||
+ | ssh root@peer1 gluster | ||
+ | </ | ||
+ | < | ||
+ | ssh root@peer1 gluster volume tier MyGlusterReplica status | ||
+ | Node | ||
+ | --------- | ||
+ | localhost | ||
+ | peer4 0 0 in progress | ||
+ | peer3 0 0 in progress | ||
+ | peer2 0 0 in progress | ||
+ | Tiering Migration Functionality: | ||
+ | </ | ||
+ | < | ||
ssh root@peer1 gluster volume info | ssh root@peer1 gluster volume info | ||
</ | </ | ||
Ligne 1069: | Ligne 1308: | ||
</ | </ | ||
+ | Montage du volume sur le client | ||
+ | < | ||
+ | sudo mkdir / | ||
+ | sudo mount -t glusterfs -o noatime peer1: | ||
+ | sudo chmod 777 / | ||
+ | sudo chmod o+t / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | seq -w 1000 | / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | clush -w root@peer[1-4] 'ls / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | root@peer1: 1000 | ||
+ | root@peer3: 1000 | ||
+ | root@peer4: 1000 | ||
+ | root@peer2: 1000 | ||
+ | </ | ||
Résilience des disques | Résilience des disques | ||