**Ceci est une ancienne révision du document !**
Mise en place d'un volume GlusterFS
Cette page a pour but la mise en place d’un volume partagé utilisant GlusterFS.
Picasoft n’utilise plus de volume GlusterFS dans son infrastructure pour des raisons de performances. Cette page est conservée à titre de tutoriel uniquement et ne reflète pas l’état de l’infrastructure.
Préparation d'un disque logique
Ajouter un autre disque à la VM
Afin de stocker les données, nous devons créer un disque dédié au volume GlusterFS. Pour se faire, il faut aller (sur l’interface proxmox) sur la VM pour laquelle on veut ajouter un disque, puis aller dans la rubrique “Hardware” puis sélectionner l’option “Add”, en haut a gauche du cadrant. On clique dessus et on clique sur l’option “Hard disk”. On configure ce disque de telle sorte a ce qu’il ai une capacité de 15G, au format raw, avec un “storage” local (qui correspond en fait au ssd). On monte le disque dur en SATA.
Le disque devrait être bien ajouté a la liste de composants hardware de la VM. Toutefois, il apparaît en rouge. Pour qu’il soit bien pris en compte et rattaché à la VM, il est nécessaire de la relancer.
Une fois que le disque dur est bien prit en compte par la VM, il est nécessaire d’executer les commandes suivantes dans la VM:
- Verifier que le disque a bien été ajouté/est détectable par l’OS: $ fdisk -l
- On ajoute le “physical volume” avec pvcreate pour le rendre visible au niveau de LVM. Ainsi on pourra lui ajouter un volume group par dessus $ pvcreate /dev/sdb
- On créer un volume groupe data $ vgcreate vg01 /dev/sdb
Volume LVM
C’est ce volume qui sera ensuite partagé avec les différents serveurs sur le réseau.
$ vgs VG #PV #LV #SN Attr VSize VFree vg00 1 2 0 wz--n- 39,76g 0 vg01 1 0 0 wz--n- 15,00g 15,00g
Sur la machine virtuelle, j’ai donc ajouté un nouveau disque d’une taille de 15G ici ajouté sur un groupe logique vg01. Je créé ensuite un volume logique (lv) à partir de ce vg et qui va prendre tout l’espace disponible
$ lvcreate -l 100%FREE -n data vg01
On peux maintenant formater ce disque et le monter sur la machine:
$ mkfs -t ext4 /dev/mapper/vg01-data. $ echo "/dev/mapper/vg01-data /gluster-data ext4 defaults 0 2" >> /etc/fstab $ mkdir /gluster-data && mount -a
Volume GlusterFS
Une fois le volume monté, il faut maintenant créer un volume de plus haut niveau à l’aide de glusterFS. Cela permettra aux différentes machines de notre cluster d’accéder à un volume de données partagé et répliqué automatiquement entre les nœuds. Cela signifie qu’en cas de panne, le nœud restant sera toujours en mesure de fournir le service évitant ainsi l’interruption de service.
La première chose à faire et de s’assurer que les différentes machines du cluster se connaissent les unes les autres:
$ cat /etc/hosts 127.0.0.1 localhost 91.224.148.57 pica01 pica01.picasoft.net 91.224.148.60 pica02 pica02.picasoft.net
Il faut ajouter les clés du repo ainsi que le repo contenant les packages
$ wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.9/rsa.pub | apt-key add - $ echo deb http://download.gluster.org/pub/gluster/glusterfs/3.9/LATEST/Debian/jessie/apt jessie main > /etc/apt/sources.list.d/gluster.list $ apt-get update $ apt-get -y install glusterfs-server
Ensuite, on ajoute le second serveur à partir du premier noeud du cluster. Ici, on lance donc sur pica01
$ gluster peer probe pica02 $ gluster peer status Number of Peers: 1 Hostname: pica02 Uuid: 36530258-860b-4403-85b3-3de1fd6bb47a State: Peer in Cluster (Connected)
On peut maintenant créer un volume répliqué que l’on va configurer en mirroring afin d’avoir une copie parfaite des données entre les noeuds.
$ gluster volume create gluster-data replica 2 transport tcp pica01:/gluster-data pica02:/gluster-data force $ gluster volume start gluster-data
Une fois le volume créé, on peut vérifier l’état de celui-ci via la commande:
$ gluster volume info Volume Name: gluster-data Type: Replicate Volume ID: 24ec2dcb-84fe-4981-9e01-1a5614cd209b Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: pica01:/gluster-data Brick2: pica02:/gluster-data
Afin d’éviter que n’importe qui puisse accéder à notre volume et faire des écriture, on doit limiter les droits en écriture aux machines pica01/02
$ gluster volume set gluster-data auth.allow pica02
On peut maintenant ajouter une ligne au fichier fstab pour lancer le montage automatique du volume. À noter qu’il faut adapter le point de montage en fonction de la machine
$ echo "pica01:/gluster-data /DATA glusterfs defaults,_netdev 0 0" >> /etc/fstab $ mkdir /DATA && mount -a
Pour le moment, le montage automatique au boot de la machine ne fonctionne pas. Pour palier à ce problème, j’ai ajouté les lignes suivante a la fin du fichier /etc/rc.local (avant l’instruction exit 0 bien sûr)
systemctl start glusterfs-server mount -a
Augmentation de la taille d'un volume GlusterFS
L’augmentation de la taille d’un volume GlusterFS se fait de manière transparente en augmentant l’espace utile au niveau de lvm.
- Augmenter la taille du disque au niveau de l’hyperviseur. Sur Proxmox, lorsque l’on clique sur une VM puis dans la partie hardware, on peut après avoir cliqué sur un disque le resize via le menu en haut. Il faut ensuite rescanner la table de partition pour que la modification soit prise en compte sur le système d’exploitation. Un reboot permet aussi de rescanner cette table de partition. On peut vérifier l’ajout d’espace à l’aide de la commande fdisk <code>root@pica02:~# fdisk -l /dev/sdb Disque /dev/sdb : 30 GiB, 32212254720 octets, 62914560 secteurs </code>
- Augmenter le physical volume. Sur notre installation, un disque est dédié au glusterfs, il n’y a donc aucun problème pour augmenter la taille du physical volume associé (attention, lorsqu’un OS est sur un disque, cette opération peut mener à la corruption du système). <code> pvresize /dev/sdb root@pica02:~# pvs PV VG Fmt Attr PSize PFree /dev/sda5 vg00 lvm2 a– 39,76g 0 /dev/sdb vg01 lvm2 a– 30,00g 0 </code>
- Augmentation des logical volumes où XX correspond au nombre de gigaoctets à ajouter <code> lvextend -L+XXG /dev/vg01/data root@pica02:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg00 -wi-ao—- 37,90g swap vg00 -wi-ao—- 1,86g data vg01 -wi-ao—- 30,00g </code>
- Au niveau des volumes logiques, on voit bien le nouveau volume, mais le système de fichier ne voit pas encore tous ces nouveaux octets. On peut s’en convaincre avec un
df -h
. Il faut donc dire au système de fichier de prendre en compte ces nouveaux octets ajoutés. <code>resize2fs /dev/vg01/data root@pica02:~# df -h | grep data /dev/mapper/vg01-data 30G 4,2G 24G 15% /gluster-data pica02:/gluster-data 30G 4,2G 24G 15% /DATA </code>
Une fois ces opérations réalisées sur les 2 noeuds, glusterfs va augmenter automatiquement le volume disponible. On peut vérifier cela avec la commande:
gluster volume status gluster-data detail Status of volume: gluster-data ------------------------------------------------------------------------------ Brick : Brick pica01:/gluster-data TCP Port : 49152 RDMA Port : 0 Online : Y Pid : 2699 File System : ext4 Device : /dev/mapper/vg01-data Mount Options : rw,relatime,data=ordered Inode Size : 256 Disk Space Free : 25.2GB Total Disk Space : 29.4GB Inode Count : 1966080 Free Inodes : 1881903 ------------------------------------------------------------------------------ Brick : Brick pica02:/gluster-data TCP Port : 49152 RDMA Port : 0 Online : Y Pid : 2340 File System : ext4 Device : /dev/mapper/vg01-data Mount Options : rw,relatime,data=ordered Inode Size : 256 Disk Space Free : 25.2GB Total Disk Space : 29.4GB Inode Count : 1966080 Free Inodes : 1881903