Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
formation:anfbigdata [2016/12/14 16:02]
equemene [Contrôle d'accès par adresse]
formation:anfbigdata [2016/12/15 18:43]
equemene
Ligne 1: Ligne 1:
-====== Travaux pratiques GlusterFS ======+====== Travaux pratiques GlusterFS ​pour ANF Bigdata ​======
  
-GlusterFS ou la quête ​de la simplicité ​+Support ​de Travaux pratiques dans le cadre de [[https://​indico.mathrice.fr/​event/​5/​|Des données au BigData : exploitez le stockage distribué]]
  
 +===== 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'​exemples simples en appliquant le modèles STNPPNFP
 +  * **Quand ?** Jeudi 15 décembre de 9h à 12h
 +  * **Combien ?** 12GB d'​espace disque, 3GB de RAM, 5 VM 
 +  * **Où ?** Sur une machine unique, dans en environnement VirtualBox
 +  * **Qui ?** Pour des admin'​sys soucieux d'​expérimenter rapidement
 +  * **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'​installation,​ de configuration,​ d'​administration.
 ===== Préparation de la séance ===== ===== Préparation de la séance =====
    
Ligne 685: Ligne 694:
 </​code>​ </​code>​
  
-</code>+<​code>​
 root@peer2: 494 root@peer2: 494
 root@peer1: 335 root@peer1: 335
Ligne 695: Ligne 704:
 La redistribution n'est pas parfaite, mais elle reste correcte ! La redistribution n'est pas parfaite, mais elle reste correcte !
  
-Replaçons ​maintenant la brique issue de **peer2** par celle disponible ​de **peer4** :+Supprimons ​maintenant la brique issue de **peer1** à partir ​de **peer2** :
 <​code>​ <​code>​
-ssh root@peer2 gluster volume ​replace-brick MyGlusterLinear peer1:/​MyGlusterLinear ​peer4:/​MyGlusterLinear+ssh root@peer2 gluster volume ​remove-brick MyGlusterLinear peer1:/​MyGlusterLinear ​start
 </​code>​ </​code>​
  
 +Le message suivant indique que la procédure a démarré
 <​code>​ <​code>​
-volume ​replace-brick: ​successreplace-brick commit ​force operation successful+ 
 +</​code>​ 
 + 
 +Contrôlons la progression de la migration des données issues de la demande de suppression : 
 +<​code>​ 
 +ssh root@peer2 gluster ​volume ​remove-brick ​MyGlusterLinear peer1:/​MyGlusterLinear status 
 +</​code>​ 
 + 
 +Nous distinguons que le processus est en cours : 
 +<​code>​ 
 +</​code>​ 
 + 
 +Une fois terminé, nous avons pour la même commande précédente : 
 +<​code>​ 
 + 
 +</​code>​ 
 + 
 +Relançons la commande pour voir la distribution sur les différents serveurs 
 +<​code>​ 
 + 
 +</​code>​ 
 + 
 +Validons la suppression 
 +<​code>​ 
 +ssh root@peer2 gluster volume remove-brick ​MyGlusterLinear peer1:/​MyGlusterLinear ​commit 
 +</​code>​ 
 + 
 +Un petit message nous invite à la prudence, pour, au pire, restaurer les données : 
 +<​code>​ 
 </​code>​ </​code>​
  
Ligne 1050: Ligne 1089:
 </​code>​ </​code>​
  
 +
 +Démontage du volume du client par ''​sudo umount /​media/​MyGlusterRAID1''​
  
 ==== Chiffrement de la communication ==== ==== Chiffrement de la communication ====
  
 Objectif : assurer une confidentialité forte sur l'​accès et le transit ​ Objectif : assurer une confidentialité forte sur l'​accès et le transit ​
 +
 +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
 <​code>​ <​code>​
 openssl genrsa -out glusterfs.key 1024 openssl genrsa -out glusterfs.key 1024
-openssl req -new -x509 -days 3650 -key glusterfs.key -subj /​CN=gluster-client -out glusterfs.pem +openssl req -new -x509 -days 3650 -key glusterfs.key -subj /​CN=gluster-client -out gluster-client.pem 
-seq 4 | xargs -I ' ​ ' openssl req -new -x509 -days 3650 -key glusterfs.key -subj /​CN=peer' ​ ' -out peer' ​ '.pem+seq 4 | xargs -I '{}' openssl req -new -x509 -days 3650 -key glusterfs.key -subj /​CN=peer'​{}' -out peer'{}'.pem
 </​code>​ </​code>​
 <​code>​ <​code>​
-cat glusterfs.pem ​peer* >> glusterfs.ca+cat peer* >> glusterfs.ca
 </​code>​ </​code>​
 <​code>​ <​code>​
-seq 4 | xargs -I ' ​ ' scp glusterfs.key peer' ​ ':/​etc/​ssl +seq 4 | xargs -I '{}' scp glusterfs.key ​root@peer'{}':/​etc/​ssl 
-seq 4 | xargs -I ' ​ ' scp glusterfs.ca peer' ​ ':/​etc/​ssl+seq 4 | xargs -I '{}' scp glusterfs.ca ​root@peer'{}':/​etc/​ssl
 </​code>​ </​code>​
 <​code>​ <​code>​
-ssh root@peer1 gluster volume set MyGlusterLinear ​client.ssl on +ssh root@peer1 gluster volume set MyGlusterRAID1 ​client.ssl on 
-ssh root@peer1 gluster volume set MyGlusterLinear ​server.ssl on +ssh root@peer1 gluster volume set MyGlusterRAID1 ​server.ssl on 
-ssh root@peer1 gluster volume set MyGlusterLinear ​ssl.own-cert /​etc/​ssl/​glusterfs.ca+ssh root@peer1 gluster volume set MyGlusterRAID1 ​ssl.own-cert /​etc/​ssl/​glusterfs.ca
 </​code>​ </​code>​
 +
 <​code>​ <​code>​
-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:​ tcp 
 +Bricks: 
 +Brick1: ​peer1:/​MyGlusterRAID1 
 +Brick2: peer3:/​MyGlusterRAID1 
 +Brick3: peer2:/​MyGlusterRAID1 
 +Brick4: peer4:/​MyGlusterRAID1 
 +Options Reconfigured:​ 
 +ssl.own-cert:​ /​etc/​ssl/​glusterfs.ca 
 +server.ssl: on 
 +client.ssl: on 
 +nfs.disable:​ on 
 +performance.readdir-ahead:​ on 
 +transport.address-family:​ inet
 </​code>​ </​code>​
  
 +Création des points de montage & montage sur les serveurs :
 +<​code>​
 +clush -w root@peer[1-4] mkdir /​media/​MyGlusterRAID1
 +clush -w root@peer[1-4] mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1
 +</​code>​
 +
 +Normalement,​ cela ne fonctionne pas et cela donne les messages suivants :
 +<​code>​
 +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
 +</​code>​
 +Il est en effet nécessaire d'​arrêter et redémarrer le volume GlusterFS pour permettre l'​accès au volume chiffré :
 +<​code>​
 +ssh root@peer1 "echo y | gluster volume stop MyGlusterRAID1"​
 +ssh root@peer1 gluster volume start MyGlusterRAID1
 +</​code>​
 +
 +Après cette opération :
 +<​code>​
 +clush -w root@peer[1-4] mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1
 +clush -w root@peer[1-4] df | grep MyGlusterRAID1
 +</​code>​
 +
 +<​code>​
 +root@peer1: peer1:​MyGlusterRAID1 ​    ​3903488 1730432 ​   1934592 ​ 48% /​media/​MyGlusterRAID1
 +root@peer3: peer1:​MyGlusterRAID1 ​    ​3903488 1730432 ​   1934592 ​ 48% /​media/​MyGlusterRAID1
 +root@peer4: peer1:​MyGlusterRAID1 ​    ​3903488 1730432 ​   1934592 ​ 48% /​media/​MyGlusterRAID1
 +root@peer2: peer1:​MyGlusterRAID1 ​    ​3903488 1730432 ​   1934592 ​ 48% /​media/​MyGlusterRAID1
 +</​code>​
 +
 +Essayons maintenant de monter le volume chiffré sur le client :
 +<​code>​
 +sudo mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1
 +</​code>​
 +Le message d'​erreur est sans équivoque
 +<​code>​
 +Mount failed. Please check the log file for more details.
 +</​code>​
 +Si vous regardons les logs d'​erreurs,​ nous trouvons :
 +<​code>​
 +[2016-12-14 15:​16:​13.200191] E [dht-helper.c:​1666:​dht_inode_ctx_time_update] (-->/​usr/​lib/​x86_64-linux-gnu/​glusterfs/​3.8.4/​xlator/​cluster/​replicate.so(+0x4b19a) [0x7fa7a4b3c19a] -->/​usr/​lib/​x86_64-linux-gnu/​glusterfs/​3.8.4/​xlator/​cluster/​distribute.so(+0x33d09) [0x7fa7a489cd09] -->/​usr/​lib/​x86_64-linux-gnu/​glusterfs/​3.8.4/​xlator/​cluster/​distribute.so(+0xa464) [0x7fa7a4873464] ) 0-MyGlusterRAID1-dht:​ invalid argument: inode [Argument invalide]
 +</​code>​
 +
 +Ceci est dû au fait que, lorsque nous avons agrégé les certificats (commande ''​cat peer*.pem >> glusterfs.ca'',​ nous avons omis celui du client ''​gluster-client.pem''​.
 +
 +Effectuons les opérations suivantes :
 +<​code>​
 +# Demontage des volumes montes
 +clush -w root@peer[1-4] umount /​media/​MyGlusterRAID1
 +# 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'​agregat de certificats
 +seq 4 | xargs -I '​{}'​ scp glusterfs.ca root@peer'​{}':/​etc/​ssl
 +# Copie locale de la clé dans le bon dossier
 +sudo cp glusterfs.key /etc/ssl
 +# Copie locale de l'​agregat de certificat
 +sudo cp glusterfs.ca /etc/ssl
 +# Demarrage du volume MyGlusterRAID1
 +ssh root@peer1 gluster volume start MyGlusterRAID1
 +</​code>​
 +
 +Nous pouvons (enfin) monter le volume de manière chiffrée :
 +<​code>​
 +sudo mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1
 +</​code>​
 +Et vérifier son accès :
 +<​code>​
 +md5sum /​media/​MyGlusterRAID1/​File.*
 +</​code>​
 +
 +<​code>​
 +e0cebe0d913746ff4b506a4da55f986c ​ /​media/​MyGlusterRAID1/​File.01
 +e49e69ae967bc7bc0ffad0aa8e713300 ​ /​media/​MyGlusterRAID1/​File.02
 +6e34c25900be11e3ed58ddee62f3d241 ​ /​media/​MyGlusterRAID1/​File.03
 +de5256d745e9edcd0b006303fd7a9f7f ​ /​media/​MyGlusterRAID1/​File.04
 +fa748e331d8c0fd6fd87f7b7f9299cc3 ​ /​media/​MyGlusterRAID1/​File.05
 +407a43d7a3fa120faff14357c2724503 ​ /​media/​MyGlusterRAID1/​File.06
 +cb5432658b53aa208fcd9289bffb7106 ​ /​media/​MyGlusterRAID1/​File.07
 +93949c9c1b1f685a2feff0572afff008 ​ /​media/​MyGlusterRAID1/​File.08
 +eefcff95428ca6d18fdaf0562a43b33e ​ /​media/​MyGlusterRAID1/​File.09
 +0130dc26e947eb016197bad4a8f6d0ee ​ /​media/​MyGlusterRAID1/​File.10
 +</​code>​
 ===== Fonctionnalités avancées ==== ===== Fonctionnalités avancées ====
  
Ligne 1083: Ligne 1234:
  
 <​code>​ <​code>​
-clush -w peer[1-4] mkdir /​MyGlusterReplica+clush -w root@peer[1-4] mkdir /​MyGlusterReplica
 ssh root@peer1 gluster volume create MyGlusterReplica replica 2 transport tcp peer1:/​MyGlusterReplica peer3:/​MyGlusterReplica force ssh root@peer1 gluster volume create MyGlusterReplica replica 2 transport tcp peer1:/​MyGlusterReplica peer3:/​MyGlusterReplica force
 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:/​MyGlusterReplica peer4:/​MyGlusterReplica force +</​code>​ 
-ssh root@peer1 gluster tier status+<​code>​ 
 +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:​ tcp 
 +Bricks: 
 +Brick1: peer1:/​MyGlusterReplica 
 +Brick2: peer3:/​MyGlusterReplica 
 +Options Reconfigured:​ 
 +transport.address-family:​ inet 
 +performance.readdir-ahead:​ on 
 +nfs.disable:​ on 
 +</​code>​ 
 + 
 +Activation du //tiering// sur les deux autres pairs **peer2** et **peer4** : 
 +<​code>​ 
 +ssh root@peer1 gluster volume tier MyGlusterReplica attach replica 2 peer2:/​MyGlusterReplica peer4:/​MyGlusterReplica force 
 +</​code>​ 
 +<​code>​ 
 +Tiering Migration Functionality:​ MyGlusterReplica:​ success: Attach tier is successful on MyGlusterReplica. use tier status to check the status. 
 +ID: f1084e85-f5cb-475e-8457-fe258dca4533 
 +</​code>​ 
 +<​code>​ 
 +ssh root@peer1 gluster ​volume ​tier status 
 +</​code>​ 
 +<​code>​ 
 +ssh root@peer1 gluster volume tier MyGlusterReplica status 
 +Node                 ​Promoted files       ​Demoted files        Status ​              
 +--------- ​           --------- ​           --------- ​           --------- ​           
 +localhost ​           0                    0                    in progress ​         
 +peer4                0                    0                    in progress ​         
 +peer3                0                    0                    in progress ​         
 +peer2                0                    0                    in progress ​         
 +Tiering Migration Functionality:​ MyGlusterReplica:​ success 
 +</​code>​ 
 +<​code>​
 ssh root@peer1 gluster volume info ssh root@peer1 gluster volume info
 </​code>​ </​code>​
Ligne 1118: Ligne 1307:
 </​code>​ </​code>​
  
 +Montage du volume sur le client
 +<​code>​
 +sudo mkdir /​media/​MyGlusterReplica
 +sudo mount -t glusterfs -o noatime peer1:​MyGlusterReplica /​media/​MyGlusterReplica
 +sudo chmod 777 /​media/​MyGlusterReplica
 +sudo chmod o+t /​media/​MyGlusterReplica
 +</​code>​
 +
 +<​code>​
 +seq -w 1000 | /​usr/​bin/​time xargs -P 1000 -I '​{}'​ bash -c "echo Hello File '​{}'​ > /​media/​MyGlusterReplica/​File.'​{}'"​
 +</​code>​
 +
 +<​code>​
 +clush -w root@peer[1-4] 'ls /​MyGlusterReplica/​File.* | wc -l'
 +</​code>​
 +
 +<​code>​
 +root@peer1: 1000
 +root@peer3: 1000
 +root@peer4: 1000
 +root@peer2: 1000
 +</​code>​
 Résilience des disques ​ Résilience des disques ​
  
formation/anfbigdata.txt · Dernière modification: 2016/12/15 18:59 par equemene