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
formation:anfbigdata [2016/12/14 15:21]
equemene [Création d’un volume de type ''striped'' (équivalent RAID0)]
formation:anfbigdata [2016/12/15 18:59] (Version actuelle)
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 591: Ligne 600:
 </​code>​ </​code>​
  
-Cette commande prend autour de 50 secondes ​sur une machine lente.+Cette commande prend un peu moins d'une minute ​sur une machine lente.
  
 Lançons maintenant une lecture tout aussi parallèle Lançons maintenant une lecture tout aussi parallèle
Ligne 598: Ligne 607:
 </​code>​ </​code>​
  
-Cette commande prend autour de 12 secondes.+Cette commande ​ne prend quelques quelques ​secondes.
  
 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:
 <​code>​ <​code>​
 ssh root@peer1 gluster volume rebalance MyGlusterLinear status ssh root@peer1 gluster volume rebalance MyGlusterLinear status
 +</​code>​
 +Nous avons une sortie comparable à ce qui suit :
 +<​code>​
                                     Node Rebalanced-files ​         size       ​scanned ​     failures ​      ​skipped ​              ​status ​ run time in h:m:s                                     Node Rebalanced-files ​         size       ​scanned ​     failures ​      ​skipped ​              ​status ​ run time in h:m:s
                                ​--------- ​     ----------- ​  ​----------- ​  ​----------- ​  ​----------- ​  ​----------- ​        ​------------ ​    ​--------------                                ​--------- ​     ----------- ​  ​----------- ​  ​----------- ​  ​----------- ​  ​----------- ​        ​------------ ​    ​--------------
Ligne 685: Ligne 697:
 </​code>​ </​code>​
  
-</code> +<​code>​ 
-root@peer2: ​494+root@peer2: ​347
 root@peer1: 335 root@peer1: 335
 +root@peer4: 0
 root@peer4: ls: impossible d'​accéder à /​MyGlusterLinear/​File.*:​ Aucun fichier ou dossier de ce type root@peer4: ls: impossible d'​accéder à /​MyGlusterLinear/​File.*:​ Aucun fichier ou dossier de ce type
-root@peer4: 0 
 root@peer3: 318 root@peer3: 318
 </​code>​ </​code>​
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 ​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: success: ​replace-brick commit ​force operation successful+volume ​remove-brick ​start: success 
 +ID92c17fc7-9980-4c73-83fd-fd011a8be530 
 +</​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>​ 
 + 
 +Une fois terminé, nous avons pour la même commande précédente : 
 +<​code>​ 
 +                                    Node Rebalanced-files ​         size       ​scanned ​     failures ​      ​skipped ​              ​status ​ run time in h:m:s 
 +                               ​--------- ​     ----------- ​  ​----------- ​  ​----------- ​  ​----------- ​  ​----------- ​        ​------------ ​    ​-------------- 
 +                      peer1.gluster.zone ​             335         ​5.2KB ​          ​335 ​            ​0 ​            ​0 ​           completed ​       0:0:13 
 +</​code>​ 
 + 
 +Relançons la commande pour voir la distribution sur les différents serveurs 
 +<​code>​ 
 +clush -w root@peer[1-4] 'ls /​MyGlusterLinear/​File.* | wc -l' 
 +</​code>​ 
 +Nous obtenons : 
 +<​code>​ 
 +root@peer1: 0 
 +root@peer1: ls: impossible d'​accéder à /​MyGlusterLinear/​File.*:​ Aucun fichier ou dossier de ce type 
 +root@peer4: 0 
 +root@peer4: ls: impossible d'​accéder à /​MyGlusterLinear/​File.*:​ Aucun fichier ou dossier de ce type 
 +root@peer2: 347 
 +root@peer3: 653 
 +</​code>​ 
 +Les fichiers ont bien disparu de **peer1** et se sont retrouvés sur **peer3** ! 
 + 
 +Validons la suppression 
 +<​code>​ 
 +ssh root@peer2 'echo y | gluster volume remove-brick MyGlusterLinear peer1:/​MyGlusterLinear ​commit
 +</​code>​ 
 + 
 +Un petit message nous invite à la prudence, pour, au pire, restaurer les données : 
 +<​code>​ 
 +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. ​
 </​code>​ </​code>​
  
Ligne 712: Ligne 765:
 Status: Started Status: Started
 Snapshot Count: 0 Snapshot Count: 0
-Number of Bricks: ​3+Number of Bricks: ​2
 Transport-type:​ tcp Transport-type:​ tcp
 Bricks: Bricks:
 Brick1: peer2:/​MyGlusterLinear Brick1: peer2:/​MyGlusterLinear
-Brick2: peer4:/​MyGlusterLinear 
 Brick3: peer3:/​MyGlusterLinear Brick3: peer3:/​MyGlusterLinear
 Options Reconfigured:​ Options Reconfigured:​
Ligne 723: Ligne 775:
 nfs.disable:​ on nfs.disable:​ on
 </​code>​ </​code>​
- 
-Si nous regardons la répartitions des fichiers avec  
-<​code>​ 
-clush -w root@peer[1-4] 'ls /​MyGlusterLinear/​File.* | wc -l' 
-</​code>​ 
-Nous avons : 
-<​code>​ 
-root@peer3: 318 
-root@peer1: 347 
-root@peer2: 335 
-root@peer4: 347 
-</​code>​ 
-Nous voyons que la "​charge"​ de **peer1** a été transféré sur **peer4**. Cependant, en regardant la signature des fichiers, nous constatons qu'ils sont vides sur **peer1**. 
- 
  
 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 /​media/​MyGlusterLinear sudo umount /​media/​MyGlusterLinear
 </​code>​ </​code>​
 +
 +<note important>​Il ne faut utiliser la commande ''​replace-brick''​ **uniquement** dans le cadre d'un volume ''​replica''​ !</​note>​
  
 ===== Création d’un volume de type ''​striped''​ (équivalent RAID0) ===== ===== Création d’un volume de type ''​striped''​ (équivalent RAID0) =====
Ligne 896: Ligne 936:
  
  
-===== Création ​d'un volume de type ''​replica''​ (équivalent ''​RAID1''​) =====+AJout d'une brique sur le replica ​:
  
-Objectif : création et manipulation ​d'un volume ​redondé sur 4 disques.+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>​
  
-Etapes ​+Le ''​gluster volume info MyGlusterRAID1''​ fournit ​
-  création d'une racine de volume GlusterFS de nom MyGlusterRAID1 +<​code>​ 
-  création & démarrage et visualisation d'un volume ​de nom MyGlusterRAID1 ​avec une redondance de 2 +Volume Name: MyGlusterRAID1 
-  - montage du volume MyGlusterRAID1 ​sur le client +Type: Distributed-Replicate 
-  écriture parallèle de 1000 fichiers de signatures différentes +Volume ID: 7bb3b6dd-a82c-45bd-bb28-5f9545438d84 
-  ​vérification de la cohérence et redondance des fichiers +Status: Started 
-  ​vérification de la distribution des données +Snapshot Count: 0 
-  ​application du mécanisme de balance +Number of Bricks: 2 x 2 = 4 
-  - vérification du mécanisme de balance +Transport-type:​ tcp 
-   +Bricks: 
-Création d'une racine de volume ​GlusterFS ​+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 916: Ligne 986:
 ==== 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 965: Ligne 1235:
  
 <​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 1000: Ligne 1308:
 </​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.1481725260.txt.gz · Dernière modification: 2016/12/14 15:21 par equemene