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 14:27]
equemene
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 765: Ligne 804:
  
 <​code>​ <​code>​
-  
 Volume Name: MyGlusterRAID0 Volume Name: MyGlusterRAID0
 Type: Stripe Type: Stripe
Ligne 795: Ligne 833:
 </​code>​ </​code>​
  
 +Si nous regardons les MD5 dans ''/​media/​MyGlusterRAID0/''​ et sur les deux serveurs **peer1** et **peer2** dans ''/​MyGlusterRAID0/'',​ nous constatons uniquement des fichiers de taille nulle sont sur **peer2** et les mêmes signature sur **peer1** : ceci est dû à la taille au delà de laquelle les données sont découpées.
  
-Rajout d'une brique ​+En effet, la commande ​''ssh root@peer1 gluster volume get MyGlusterRAID0 all | grep stripe-block-size''​ 
 +<​code>​ 
 +cluster.stripe-block-size ​              ​128KB ​                                   
 +</​code>​
  
-===== Création d'un volume ​de type ''​replica''​ (équivalent ​''​RAID1''​) =====+Essayons avec 10 fichiers ​de 1MB générés aléatoirement pour dépasser cette limite 
 +<​code>​ 
 +rm /​media/​MyGlusterRAID0/​File.* 
 +seq -w 10 | /​usr/​bin/​time xargs -P 10 -I '{}' ​bash -c "​base64 /​dev/​urandom | head -c 1048576 > /​media/​MyGlusterRAID0/​File.'{}'
 +</​code>​
  
-Objectif : création et manipulation d'un volume redondé sur 4 disques.+<​code>​ 
 +ls /​media/​MyGlusterRAID0/​File.* | xargs -P 10 -I '{}' md5sum '​{}'​ | sort 
 +ssh root@peer1 "ls /​MyGlusterRAID0/​File.* | xargs -I '​{}'​ md5sum '​{}'"​ | sort 
 +ssh root@peer2 "ls /​MyGlusterRAID0/​File.* | xargs -I '​{}'​ md5sum '​{}'"​ | sort 
 +</​code>​
  
-Etapes : +Nous voyons que les sommes MD5 ne sont pas identiques... En cas de plantage ​de GlusterFS, il n'y a pas possibilité ​de récupérer les informations en allant les chercher "à la main". 
-  - création d'une racine ​de volume ​GlusterFS de nom MyGlusterRAID1 + 
-  - création & démarrage et visualisation ​d'un volume de nom MyGlusterRAID1 ​avec une redondance de +===== Création ​dun volume de type ''​replica''​ (équivalent RAID1) ===== 
-  - montage du volume MyGlusterRAID1 sur le client + 
-  écriture parallèle ​de 1000 fichiers de signatures différentes +<​code>​ 
-  vérification de la cohérence et redondance des fichiers +clush -w root@peer[1-4] mkdir /MyGlusterRAID1 
-  vérification ​de la distribution ​des données +</​code>​ 
-  - application du mécanisme de balance + 
-  - vérification du mécanisme de balance +<​code>​ 
-   +ssh root@peer1 gluster volume create MyGlusterRAID1 replica ​peer1:/​MyGlusterRAID1 peer3:/​MyGlusterRAID1 force 
-Création ​d'​une ​racine de volume ​GlusterFS ​+ssh root@peer1 gluster ​volume ​start MyGlusterRAID1 
 +</​code>​ 
 + 
 +<​code>​ 
 +volume create: MyGlusterRAID1:​ success: please start the volume to access data 
 +volume start: MyGlusterRAID1:​ success 
 +</​code>​ 
 + 
 +<​code>​ 
 +ssh root@peer3 gluster volume info MyGlusterRAID1 
 +</​code>​ 
 + 
 +<​code>​ 
 +Volume Name: MyGlusterRAID1 
 +Type: Replicate 
 +Volume ID: 7bb3b6dd-a82c-45bd-bb28-5f9545438d84 
 +Status: Started 
 +Snapshot Count: 0 
 +Number of Bricks: 1 x 2 = 2 
 +Transport-type:​ tcp 
 +Bricks: 
 +Brick1: peer1:/​MyGlusterRAID1 
 +Brick2: peer3:/​MyGlusterRAID1 
 +Options Reconfigured:​ 
 +transport.address-family:​ inet 
 +performance.readdir-ahead:​ on 
 +nfs.disable:​ on 
 +</​code>​ 
 + 
 +Montage ​sur le client ​& réglages de droits d'​accès 
 +<​code>​ 
 +mkdir /​media/​MyGlusterRAID1 
 +sudo mount -t glusterfs -o noatime peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1 
 +sudo chmod 777 /​media/​MyGlusterRAID1 
 +sudo chmod o+t /​media/​MyGlusterRAID1 
 +</​code>​ 
 + 
 +Ecriture ​de données & cohérence des données  
 +<​code>​ 
 +seq -w 1000 | /​usr/​bin/​time xargs -P 1000 -I '​{}'​ bash -c "echo Hello File '​{}'​ > /​media/​MyGlusterRAID1/​File.'​{}'"​ 
 +</​code>​ 
 + 
 +<​code>​ 
 +ls /​media/​MyGlusterRAID1/​File.* | xargs -P 1000 -I '​{}'​ md5sum '​{}'​ | sort | awk '{ print $1 }' > /​tmp/​Gluster.md5 
 +ssh root@peer1 "ls /​MyGlusterRAID1/​File.* | xargs -P 1000 -I '​{}'​ md5sum '​{}'"​ | sort | awk '{ print $1 }' > /​tmp/​GlusterPeer1.md5 
 +ssh root@peer3 "ls /​MyGlusterRAID1/​File.* | xargs -P 1000 -I '​{}'​ md5sum '​{}'"​ | sort | awk '{ print $1 }' > /​tmp/​GlusterPeer3.md5 
 +</​code>​ 
 + 
 +<​code>​ 
 +md5sum /​tmp/​Gluster.md5 /​tmp/​GlusterPeer1.md5 /​tmp/​GlusterPeer3.md5  
 +</​code>​ 
 + 
 +<​code>​ 
 +521e443b0dd9b639f7610c0a7e0dd001 ​ /​tmp/​Gluster.md5 
 +521e443b0dd9b639f7610c0a7e0dd001 ​ /​tmp/​GlusterPeer1.md5 
 +521e443b0dd9b639f7610c0a7e0dd001 ​ /​tmp/​GlusterPeer3.md5 
 +</​code>​ 
 + 
 +Essayons avec 10 fichiers de 1MB générés aléatoirement pour dépasser cette limite 
 +<​code>​ 
 +rm /​media/​MyGlusterRAID1/​File.* 
 +seq -w 10 | /​usr/​bin/​time xargs -P 10 -I '​{}'​ bash -c "​base64 /​dev/​urandom | head -c 1048576 > /​media/​MyGlusterRAID1/​File.'​{}'"​ 
 +</​code>​ 
 + 
 +<​code>​ 
 +ls /​media/​MyGlusterRAID1/​File.* | xargs -P 10 -I '​{}'​ md5sum '​{}'​ | sort 
 +ssh root@peer1 "ls /​MyGlusterRAID1/​File.* | xargs -I '​{}'​ md5sum '​{}'"​ | sort 
 +ssh root@peer3 "ls /​MyGlusterRAID1/​File.* | xargs -I '​{}'​ md5sum '​{}'"​ | sort 
 +</​code>​ 
 + 
 +Même pour des fichiers ​de taille plus importante, ​la cohérence ​des données ​est respectée. 
 + 
 + 
 +AJout d'une brique sur le replica : 
 + 
 +Etant donné que nous sommes en mode ''​replica'',​ il est nécessaire ​d'associer ​une brique contenant deux espaces : 
 +<​code>​ 
 +ssh root@peer1 gluster ​volume ​add-brick MyGlusterRAID1 replica 2 peer2:/​MyGlusterRAID1 peer4:/​MyGlusterRAID1 force 
 +</​code>​ 
 + 
 +Le ''​gluster volume info MyGlusterRAID1''​ fournit : 
 +<​code>​ 
 +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:​ tcp 
 +Bricks: 
 +Brick1: peer1:/​MyGlusterRAID1 
 +Brick2: peer3:/​MyGlusterRAID1 
 +Brick3: peer2:/​MyGlusterRAID1 
 +Brick4: peer4:/​MyGlusterRAID1 
 +Options Reconfigured:​ 
 +transport.address-family:​ inet 
 +performance.readdir-ahead:​ on 
 +nfs.disable:​ on 
 +</​code>​ 
 + 
 +Lançons un ''​rebalance''​ sur le volume ''​ssh root@peer4 gluster volume rebalance MyGlusterRAID1 start''​ 
 +<​code>​ 
 +volume rebalance: MyGlusterRAID1:​ success: Rebalance on MyGlusterRAID1 has been started successfully. Use rebalance status command to check status of the rebalance process. 
 +ID: 12d11627-146d-4057-b1f7-e041f9b1b218 
 +</​code>​ 
 + 
 +<​code>​ 
 +ssh root@peer4 gluster volume rebalance MyGlusterRAID1 status 
 +</​code>​ 
 +<​code>​ 
 +                                    Node Rebalanced-files ​         size       ​scanned ​     failures ​      ​skipped ​              ​status ​ run time in h:m:s 
 +                               ​--------- ​     ----------- ​  ​----------- ​  ​----------- ​  ​----------- ​  ​----------- ​        ​------------ ​    ​-------------- 
 +                               ​localhost ​               0        0Bytes ​            ​0 ​            ​0 ​            ​0 ​           completed ​       0:0:0 
 +                      peer1.gluster.zone ​               4         ​4.0MB ​           10             ​0 ​            ​0 ​           completed ​       0:0:1 
 +                                   ​peer3 ​               0        0Bytes ​            ​0 ​            ​0 ​            ​0 ​           completed ​       0:0:0 
 +                                   ​peer2 ​               0        0Bytes ​            ​0 ​            ​0 ​            ​0 ​           completed ​       0:0:1 
 +volume rebalance: MyGlusterRAID1:​ success 
 +</​code>​
  
 ===== Eléments de sécurité sous GlusterFS ===== ===== Eléments de sécurité sous GlusterFS =====
Ligne 818: Ligne 985:
 ==== Résilience de l'​accès au serveur ==== ==== Résilience de l'​accès au serveur ====
  
-Objectif : étudier et agir sur la disponibilité de l'accès au serveur.+Démontons le volume ​''​MyGlusterRAID1''​ sur le client :
 <​code>​ <​code>​
-mount -t glusterfs -obackup-volfile-servers=peer1:​peer2:​peer3:​peer4,​noatime peer1:/​MyGlusterRAID1 ​/media/MyGlusterRAID1+sudo umount ​/media/GlusterRAID1/​
 </​code>​ </​code>​
 +
 +Simulons une panne en arrêtant le démon ''​glusterd''​ sur **peer1** :
 +<​code>​
 +ssh root@peer1 systemctl stop glusterfs-server.service
 +</​code>​
 +
 +Essayons de remonter le volume ''​MyGlusterRAID1'':​
 +<​code>​
 +sudo mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1/​
 +</​code>​
 +Ca ne fonctionne pas avec le message :
 +<​code>​
 +Mount failed. Please check the log file for more details.
 +</​code>​
 +
 +En allant regarder dans les logs d'​erreur :
 +<​code>​
 + sudo cat /​var/​log/​glusterfs/​media-MyGlusterRAID1.log | grep ' E '
 +</​code>​
 +
 +<​code>​
 +[2016-12-14 14:​43:​55.901290] E [socket.c:​2309:​socket_connect_finish] 0-glusterfs:​ connection to 10.20.16.1:​24007 failed (Connexion refusée)
 +[2016-12-14 14:​43:​55.901332] E [glusterfsd-mgmt.c:​1902:​mgmt_rpc_notify] 0-glusterfsd-mgmt:​ failed to connect with remote-host:​ peer1 (Noeud final de transport n'est pas connecté)
 +</​code>​
 +
 +Etant donné que notre volume est reparti sur 4 serveurs dont 1 indisponible,​ nous pouvons monter le partage en utilisant l'​option ''​backup-volfile-servers''​ :
 +<​code>​
 +sudo mount -t glusterfs -obackup-volfile-servers=peer1:​peer2:​peer3:​peer4,​noatime peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1/​
 +</​code>​
 +
 +Le volume se monte et les données sont accessibles.
 +
 +Réactivons quand même le service GlusterFS sur **peer1** :
 +<​code>​
 +ssh root@peer1 systemctl start glusterfs-server.service
 +</​code>​
 +
 +Vérifions que le démon est bien opérationnel par ''​ssh root@peer1 gluster volume info MyGlusterRAID1''​
 +
  
 ==== Contrôle d'​accès par adresse ==== ==== Contrôle d'​accès par adresse ====
  
 Objectif : filtrer l'​accès au volume GlusterFS par adresse IP Objectif : filtrer l'​accès au volume GlusterFS par adresse IP
 +
 +Démontons le volume du client
 +<​code>​
 +sudo umount /​media/​MyGlusterRAID1
 +</​code>​
  
 Détermination de l'IP des machines Détermination de l'IP des machines
  
-Restriction à uniquement les serveurs ​du pool+Les serveurs ​disposent d'une adresse de **10.20.16.1** à **10.20.16.4**. ​
  
-ssh root@peer1 gluster volume set distonet ​auth.allow 10.20.16.0+Restriction à uniquement les serveurs du pool avec l'​attribut ''​auth.allow''​ définit à toutes les IP des serveurs de **peer1** à **peer4**. 
 +<​code>​ 
 +ssh root@peer1 gluster volume set MyGlusterRAID1 ​auth.allow 10.20.16.1,​10.20.16.2,​10.20.16.3,​10.20.16.4 
 +</​code>​
  
 +<​code>​
 gluster volume info gluster volume info
 +</​code>​
 +
 +<​code>​
 +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:​ tcp
 +Bricks:
 +Brick1: peer1:/​MyGlusterRAID1
 +Brick2: peer3:/​MyGlusterRAID1
 +Brick3: peer2:/​MyGlusterRAID1
 +Brick4: peer4:/​MyGlusterRAID1
 +Options Reconfigured:​
 +auth.allow: 10.20.16.1,​10.20.16.2,​10.20.16.3,​10.20.16.4
 +nfs.disable:​ on
 +performance.readdir-ahead:​ on
 +transport.address-family:​ inet
 +</​code>​
 +
 +Lançons la commande de montage sur le client
 +<​code>​
 +sudo mount -t glusterfs peer1:​MyGlusterRAID1 /​media/​MyGlusterRAID1/​
 +</​code>​
 +
 +La commande s'​exécute mais rien ne se monte : ''​df | grep MyGlusterRAID1''​ permet de s'en assurer...
 +
 +Si nous rajoutons l'IP du client **10.20.16.254**,​ avec la commande :
 +<​code>​
 +ssh root@peer1 gluster volume set MyGlusterRAID1 auth.allow 10.20.16.1,​10.20.16.2,​10.20.16.3,​10.20.16.4,​10.20.16.254
 +</​code>​
 +Nous pouvons monter le volume ''​MyGlusterRAID1''​.
 +
 +Pour réinitialiser une valeur, nous utilisons : la commande ''​reset''​ sur l'​attribut,​ ici ''​auth.allow''​
 +<​code>​
 +ssh root@peer1 gluster volume reset MyGlusterRAID1 auth.allow
 +</​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 867: 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 902: 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