GNU/Linux >> Tutoriels Linux >  >> Debian

Installer et configurer GlusterFS sur Ubuntu 16.04 / Debian 8

Dans le monde de la technologie, il est toujours crucial de garder les données hautement disponibles pour s'assurer qu'elles sont accessibles à l'application/à l'utilisateur. La haute disponibilité est obtenue ici en distribuant les données sur plusieurs volumes/nœuds.

Les machines/utilisateurs clients peuvent accéder au stockage comme au stockage local. Chaque fois que l'utilisateur crée des données sur le stockage Gluster, les données seront mises en miroir/distribuées vers d'autres nœuds de stockage.

Qu'est-ce que GlusterFS ?

GlusterFS est un système de fichiers réseau open source et évolutif adapté aux charges de travail à forte intensité de données telles que le streaming multimédia, le stockage dans le cloud et le CDN (Content Delivery Network). GlusterFS a été initialement développé par Gluster Inc, puis par Redhat, à la suite de l'acquisition.

Terminologie :

Vous trouverez ci-dessous les terminologies importantes que nous utilisons tout au long de cet article.

Brique – est le stockage de base (répertoire) sur un serveur du pool de stockage approuvé.

Volume – est une suite logique de briques.

Cluster – est un groupe d'ordinateurs liés, travaillant ensemble comme un seul ordinateur.

Système de fichiers distribué – Un système de fichiers dans lequel les données sont réparties sur plusieurs nœuds de stockage et permet aux clients d'y accéder via un réseau.

Client – est une machine qui monte le volume.

Serveur – est une machine où est hébergé le système de fichiers réel dans lequel les données seront stockées.

Répliquer – Faire plusieurs copies de données pour obtenir une redondance élevée.

Fusible – est un module de noyau chargeable qui permet aux utilisateurs non privilégiés de créer leurs propres systèmes de fichiers sans modifier le code du noyau.

glusterd – est un démon qui s'exécute sur tous les serveurs du pool de stockage approuvé.

RAID – Redundant Array of Inexpensive Disks (RAID) est une technologie qui offre une fiabilité de stockage accrue grâce à la redondance.

Volume :

Comme dit précédemment, le volume est la collection de briques, et la plupart des opérations de gluster telles que la lecture et l'écriture se produisent sur le volume. GlusterFS prend en charge différents types de volumes en fonction des besoins ; adapté à la mise à l'échelle de la taille de stockage ou à l'amélioration des performances ou aux deux.

Dans cet article, nous allons configurer le volume GlusterFS répliqué sur Ubuntu 16.04 / Debian 8. Ce guide devrait également fonctionner sur les versions précédentes d'Ubuntu telles que Ubuntu 14.04 / Ubuntu 12.04.

Volume Glusterfs répliqué est comme un RAID 1 , et le volume conserve des copies exactes des données sur toutes les briques. Vous pouvez décider du nombre de répliques lors de la création du volume, vous aurez donc besoin d'au moins deux briques pour créer un volume avec deux répliques ou trois briques pour créer un volume de 3 répliques.

Ce volume offre une meilleure fiabilité des données et une redondance des données.

Pourquoi ne pas en savoir plus sur les types de volumes GlusterFS restants.

Exigences :

Ici, nous allons configurer le volume GlusterFS avec deux répliques. Assurez-vous d'avoir deux systèmes 64 bits (virtuels ou physiques) avec 1 Go de mémoire et un disque dur de rechange sur chaque système.

Nom d'hôte Adresse IP SE Mémoire Disque Objectif
gluster1.itzgeek.local 192.168.12.16 Ubuntu 16.04 LTS 1 Go /dev/sdb (5 Go) Nœud de stockage 1
gluster2.itzgeek.local 192.168.12.17 Debian 8 1 Go /dev/sdb (5 Go) Nœud de stockage 2
client.itzgeek.local 192.168.12.8 CentOS 7 / Debian NA NA Ordinateur client
Pour une démonstration, j'utilise ici une distribution Linux différente pour chaque nœud de stockage. Je vous recommande d'utiliser une seule distribution Linux sur le cluster, ce qui vous permettra de résoudre plus facilement les problèmes qui surviennent en production.

Configurer DNS :

Les composants GlusterFS utilisent DNS pour les résolutions de noms, alors configurez DNS ou configurez une entrée d'hôtes. Si vous n'avez pas de DNS sur votre environnement, modifiez le fichier /etc/hosts et mettez-le à jour en conséquence.

sudo vi /etc/hosts

192.168.12.16  gluster1.itzgeek.local  gluster1
192.168.12.17  gluster2.itzgeek.local  gluster2
192.168.12.20 client.itzgeek.local client

Ajouter un référentiel GlusterFS :

Avant de procéder à l'installation, nous devons configurer le référentiel GlusterFS sur les deux nœuds de stockage. Suivez les instructions pour ajouter le référentiel à votre système.

Debian :

Installez le package de support pour les transactions https.

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

Ajoutez la clé publique pour le dépôt GlusterFS.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add -
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list

Ubuntu 16.04 / 14.04 :

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-3.8

Installez GlusterFS :

Une fois que vous avez ajouté le référentiel sur vos systèmes, nous sommes prêts à installer GlusterFS.

Mettez à jour le cache du référentiel.

sudo apt-get update

Installez le package GlusterFS à l'aide de la commande suivante.

sudo apt-get install -y glusterfs-server

Démarrez le service glusterfs-server sur tous les nœuds gluster.

sudo service glusterfs-server start

Vérifiez que le service glusterfs fonctionne correctement.

raj@gluster1:~$ sudo service glusterfs-server status

● glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1570 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 1664 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS)
    Tasks: 7 (limit: 512)
   Memory: 25.5M
      CPU: 3.552s
   CGroup: /system.slice/glusterfs-server.service
           └─1673 /usr/sbin/glusterd -p /var/run/glusterd.pid

Sep 24 21:47:16 gluster1.itzgeek.local systemd[1]: Starting LSB: GlusterFS server...
Sep 24 21:47:16 gluster1.itzgeek.local glusterfs-server[1664]:  * Starting glusterd service glusterd
Sep 24 21:47:20 gluster1.itzgeek.local glusterfs-server[1664]:    ...done.
Sep 24 21:47:20 gluster1.itzgeek.local systemd[1]: Started LSB: GlusterFS server.

Configurer le pare-feu :

Vous devrez soit désactiver le pare-feu, soit configurer le pare-feu pour autoriser toutes les connexions au sein d'un cluster.

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

Ajouter un espace de stockage :

En supposant que vous avez un disque dur de rechange sur votre machine, /dev/sdb est celui que je vais utiliser ici pour une brique. Créez une seule partition sur le disque dur de secours illustré ci-dessous.

Vous devrez effectuer les étapes ci-dessous sur les deux nœuds.

sudo fdisk /dev/sdb

Formatez la partition créée avec le système de fichiers de votre choix.

sudo mkfs.ext4 /dev/sdb1

Montez le disque dans un répertoire appelé /data/gluster .

sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster

Ajouter une entrée à /etc/fstab pour garder le montage persistant lors du redémarrage.

echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Configurer GlusterFS sur Ubuntu 16.04 :

Avant de créer un volume, nous devons créer un pool de stockage de confiance en ajoutant gluster2.itzgeek.local . Vous pouvez exécuter les commandes de configuration GlusterFS sur n'importe quel serveur du cluster et exécutera la même commande sur tous les autres serveurs.

Ici, je vais exécuter toutes les commandes GlusterFS dans gluster1.itzgeek.local nœud.

raj@gluster1:~$ sudo gluster peer probe gluster2.itzgeek.local
peer probe: success.

Vérifiez l'état du pool de stockage approuvé.

raj@gluster1:~$ sudo gluster peer status

Number of Peers: 1

Hostname: gluster2.itzgeek.local
Uuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bd
State: Peer in Cluster (Connected)

Répertorier le pool de stockage.

raj@gluster1:~$ sudo gluster pool list

UUID                                    Hostname                State
51470928-dfa8-42e1-a221-d7bbcb8c13bd    gluster2.itzgeek.local  Connected
dc7c1639-d21c-4adf-b28f-5150229e6980    localhost               Connected

Configurer le volume GlusterFS :

Créez une brique (répertoire) appelée "gvol0 ” dans le système de fichiers monté sur les deux nœuds.

sudo mkdir -p /data/gluster/gvol0

Puisque nous allons utiliser le volume répliqué, créez donc le volume nommé "gvol0 ” avec deux répliques.

raj@gluster1:~$ sudo gluster volume create gvol0 replica 2 gluster1.itzgeek.local:/data/gluster/gvol0 gluster2.itzgeek.local:/data/gluster/gvol0
volume create: gvol0: success: please start the volume to access data

Démarrez le volume.

raj@gluster1:~$ sudo gluster volume start gvol0
volume start: gvol0: success

Vérifiez l'état du volume créé.

raj@gluster1:~$ sudo gluster volume info gvol0

Volume Name: gvol0
Type: Replicate
Volume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1.itzgeek.local:/data/gluster/gvol0
Brick2: gluster2.itzgeek.local:/data/gluster/gvol0
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on

Configurer le client GlusterFS :

Installez glusterfs-client package pour prendre en charge le montage des systèmes de fichiers GlusterFS. Exécutez toutes les commandes en tant que root utilisateur.

$ su -

### CentOS / RHEL ###
yum install -y glusterfs-client

### Ubuntu / Debian ###
apt-get install -y glusterfs-client

Créez un répertoire pour monter le système de fichiers GlusterFS.

mkdir -p /mnt/glusterfs

Maintenant, montez le système de fichiers GlusterFS sur /mnt/glusterfs en utilisant la commande suivante.

mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt/glusterfs

Vous pouvez également utiliser gluster2.itzgeek.local au lieu de gluster1.itzgeek.com dans la commande ci-dessus.

Vérifiez le système de fichiers GlusterFS monté.

[root@client ~]# df -hP /mnt/glusterfs
Filesystem                     Size  Used Avail Use% Mounted on
gluster1.itzgeek.local:/gvol0  4.8G   11M  4.6G   1% /mnt/glusterfs

Vous pouvez également utiliser la commande ci-dessous pour vérifier le système de fichiers GlusterFS.

[root@client ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=490448k,nr_inodes=122612,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
/dev/mapper/centos-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=100136k,mode=700 0 0
gluster1.itzgeek.local:/gvol0 /mnt/glusterfs fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0

Ajoutez l'entrée ci-dessous à /etc/fstab pour un montage automatique lors du démarrage du système.

gluster1.itzgeek.local:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

Testez la réplication et la haute disponibilité de GlusterFS :

Côté serveur GlusterFS :

Pour vérifier la réplication, montez le volume GlusterFS créé sur le même nœud de stockage.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
raj@gluster2:~$ sudo mount -t glusterfs gluster2.itzgeek.local:/gvol0 /mnt

Données à l'intérieur de /mnt répertoire des deux nœuds sera toujours le même (réplication).

Côté client GlusterFS :

Créons quelques fichiers sur le système de fichiers monté sur le client.itzgeek.local.

touch /mnt/glusterfs/file1
touch /mnt/glusterfs/file2

Vérifiez les fichiers créés.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2

Testez les deux nœuds GlusterFS s'ils ont les mêmes données dans /mnt .

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:52 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2


raj@gluster2:~$ ls -al /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 06:30 .
drwxr-xr-x 23 root root 4096 Sep 24 08:39 ..
-rw-r--r--  1 root root    0 Sep 26  2016 file1
-rw-r--r--  1 root root    0 Sep 26  2016 file2

Comme vous le savez, nous avons monté le volume GlusterFS à partir de gluster1.itzgeek.local sur client.itzgeek.local , il est maintenant temps de tester la haute disponibilité du volume en fermant le nœud.

raj@gluster1:~$ sudo poweroff

Testez maintenant la disponibilité des fichiers, vous verriez les fichiers que nous avons créés récemment même si le nœud est en panne.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
Vous pouvez rencontrer une lenteur dans l'exécution des commandes sur le système de fichiers GlusterFS monté en raison du basculement de GlusterFS vers gluster2.itzgeek.local lorsque le client.itzgeek.local ne peut pas atteindre gluster1.itzgeek.local .

Créez d'autres fichiers sur le système de fichiers GlusterFS pour vérifier la réplication.

touch /mnt/glusterfs/file3
touch /mnt/glusterfs/file4

Vérifiez le nombre de fichiers.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
-rw-r--r--. 1 root root 0 Sep 26 11:26 file3
-rw-r--r--. 1 root root 0 Sep 26 11:26 file4

Depuis le gluster1 est en panne, toutes vos données sont maintenant écrites sur gluster2.itzgeek.local en raison de la haute disponibilité. Allumez maintenant le node1 (gluster1.itzgeek.local ).

Vérifiez le /mnt du gluster1.itzgeekk.local; vous devriez voir les quatre fichiers dans le répertoire, cela confirme que la réplication fonctionne comme prévu.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
[sudo] password for raj:

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:59 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2
-rw-r--r--  1 root root    0 Sep 26 20:56 file3
-rw-r--r--  1 root root    0 Sep 26 20:56 file4

C'est tout.


Debian
  1. Comment installer et configurer docker sur Debian 11

  2. Comment installer et configurer Mariadb 10 dans Debian 11

  3. Comment installer et configurer MongoDB 5 sur Debian 11

  4. Comment installer et configurer Redis 6 sur Debian 11

  5. Installer et configurer Apache et PHP avec cgi sur Ubuntu ou Debian

Comment installer et configurer ELK Stack sur Ubuntu et Debian

Comment installer et configurer Git dans Debian 11

Installer et configurer OwnCloud sur Ubuntu 21 / Debian 11

Installer et configurer Virtualmin sur le serveur Ubuntu 20.04 / Debian 10

Comment installer et configurer Apache sur Debian 11 ?

Installer et configurer Fail2ban sur Debian 11