Cet article est mis à jour pour couvrir l'installation de GlusterFS® 7 sur CentOS® 7 et Ubuntu® 18.04. Tout le travail original dans ce document est le même, à l'exception de l'étape où vous créez le volume avec la réplique mot-clé.
Avant de commencer à utiliser GlusterFS, vous devez décider du type de volume dont vous avez besoin pour votre environnement. Les méthodes suivantes sont utilisées le plus souvent pour obtenir des résultats différents.
Volume répliqué
Ce type de volume permet la réplication de fichiers sur plusieurs briques. C'est le meilleur choix pour les environnements nécessitant une haute disponibilité, une haute fiabilité et un stockage évolutif. Ce type de volume fonctionne bien si vous prévoyez de monter vous-même le volume GlusterFS, par exemple, en tant que racine du document du serveur Web (/var/www
) ou similaire où tous les fichiers doivent résider sur ce nœud. La valeur transmise à réplica est le même nombre de nœuds dans le volume.
Les fichiers sont copiés sur chaque brique du volume, comme une matrice redondante de disques indépendants (RAID-1). Cependant, vous pouvez avoir trois briques ou plus ou un nombre impair de briques. L'espace utilisable correspond à la taille d'une brique et tous les fichiers écrits sur une brique sont répliqués sur toutes les autres. Les volumes de ce type offrent également des performances de lecture améliorées dans la plupart des environnements et sont le type de volumes le plus couramment utilisé lorsque les clients sont externes aux nœuds GlusterFS eux-mêmes.
Volume distribué-répliqué
Semblable à un RAID-10, un nombre pair de briques doit être utilisé. L'espace utilisable est la taille des briques combinées transmises à la réplique évaluer. Par exemple, s'il y a quatre briques de 20 gigaoctets (Go) et vous passez réplique 2 à la création, vos fichiers sont distribués sur deux nœuds (40 Go) et répliqués sur deux nœuds. Avec six briques de 20 Go et réplique 3 , vos fichiers sont distribués sur trois nœuds (60 Go) et répliqués sur trois nœuds. Si vous avez utilisé le réplica 2, ils sont ensuite distribués sur deux nœuds (40 Go) et répliqués sur quatre nœuds par paires. Cette distribution et cette réplication sont utilisées lorsque vos clients sont externes au cluster, et non des auto-montages locaux.
Prérequis
- Deux serveurs ou plus avec stockage séparé. Les exemples de cet article sont basés sur les serveurs CentOS 7 et Ubuntu 18.04.
- Un réseau privé entre les serveurs. Les exemples de cet article utilisent
192.168.0.0/24
.
Configuration de la compilation
Le build décrit dans ce document utilise la configuration suivante :
- Quatre images de serveur Rackspace Cloud avec un
/dev/xvde
partition prête à l'emploi pour chaque brique - Un réseau privé cloud sur
192.168.0.0/24
pour la communication GlusterFS - GlusterFS 7.1 installé à partir du référentiel de packages du fournisseur
Préparation des serveurs
Effectuez la configuration et les installations suivantes pour préparer les serveurs :
- Configurer
/etc/hosts
. - Installez les mises à jour du système d'exploitation (OS).
- Installez le logiciel GlusterFS.
- Configurer l'accès au réseau.
- Connectez les nœuds GlusterFS.
Configurer /etc/hosts pour la communication intra-nœud
Au lieu d'utiliser DNS, préparez /etc/hosts
sur chaque serveur et assurez-vous que les serveurs peuvent communiquer entre eux. Tous les serveurs ont le nom glusterN comme nom d'hôte, utilisez donc glusN pour la couche de communication privée entre les serveurs.
# vi /etc/hosts
192.168.0.1 glus-01
192.168.0.2 glus-02
192.168.0.3 glus-03
192.168.0.4 glus-04
# ping -c2 glus-01; ping -c2 glus-02; ping -c2 glus-03; ping -c2 glus-04
Installer des packages
Exécutez les commandes de cette section pour effectuer les étapes suivantes :
- Installer les mises à jour du système d'exploitation.
- Installez le référentiel GlusterFS et les packages GlusterFS.
CentOS
yum update -y
yum install -y centos-release-gluster7
yum install -y glusterfs-server
Système d'exploitation Ubuntu
Le référentiel Ubuntu par défaut a GlusterFS 3.13.2 installé. Utilisez les commandes suivantes pour installer 7.1 :
apt update
apt upgrade -y
add-apt-repository -y ppa:gluster/glusterfs-7
apt install -y glusterfs-server
Configurer l'accès au réseau
CentOS
Utilisez les commandes suivantes pour autoriser le trafic Gluster entre vos nœuds et autoriser les montages client :
firewall-cmd --add-service=glusterfs
firewall-cmd --add-service=glusterfs --permanent
Système d'exploitation Ubuntu
Utilisez les commandes suivantes pour autoriser tout le trafic sur votre segment de réseau privé afin de faciliter la communication Gluster :
ufw enable
ufw allow from 192.168.0.0/24
Préparer les briques
Exécutez les commandes de cette section pour effectuer les étapes suivantes :
- Périphériques de bloc de partition.
- Créer la base du gestionnaire de volumes logiques (LVM).
- Préparez les briques de volume.
Les briques sous-jacentes sont un système de fichiers standard et un point de montage. Montez chaque brique de manière à décourager tout utilisateur de changer de répertoire et d'écrire lui-même dans les briques sous-jacentes.
Avertissement : Écrire directement sur une brique corrompt le volume.
Les briques doivent être uniques par nœud et il doit y avoir un répertoire dans le point de montage à utiliser lors de la création de volume. Tenter de créer un volume répliqué en utilisant le niveau supérieur des points de montage entraîne une erreur avec des instructions pour utiliser un sous-répertoire.
Tous les nœuds
parted -s -- /dev/xvde mktable gpt
parted -s -- /dev/xvde mkpart primary 2048s 100%
parted -s -- /dev/xvde set 1 lvm on
pvcreate /dev/xvde1
vgcreate vgglus-01 /dev/xvde1
lvcreate -l 100%VG -n gbrick1 vgglus-01
mkfs.xfs /dev/vgglus-01/gbrick1
echo '/dev/vgglus-01/gbrick1 /var/lib/gvol0 xfs defaults 0 0' >> /etc/fstab
mkdir /var/lib/gvol0
mount /var/lib/gvol0
-
glu-01
mkdir /var/lib/gvol0/brick1
-
glu-02
mkdir /var/lib/gvol0/brick2
-
glu-03
mkdir /var/lib/gvol0/brick3
-
glu-04
mkdir /var/lib/gvol0/brick4
Configurer GlusterFS
Suivez les étapes ci-dessous pour exécuter la configuration de GlusterFS.
Démarrer le démon glusterfsd
Vous pouvez redémarrer le démon au moment de l'exécution en utilisant les commandes suivantes :
systemctl enable glusterd
systemctl start glusterd
Créer un groupe de pairs
Un groupe de pairs est appelé pool de stockage de confiance dans GlusterFS.
-
glu-01
gluster peer probe glus-02 gluster peer probe glus-03 gluster peer probe glus-04 gluster peer status
-
glu-02
gluster peer status
-
glu-03
gluster peer status
-
glu-04
gluster peer status
Vous pouvez maintenant vérifier l'état de votre nœud et du pool de serveurs gluster :
[root@gluster1 ~]# gluster pool list
UUID Hostname State
734aea4c-fc4f-4971-ba3d-37bd5d9c35b8 glus-04 Connected
d5c9e064-c06f-44d9-bf60-bae5fc881e16 glus-03 Connected
57027f23-bdf2-4a95-8eb6-ff9f936dc31e glus-02 Connected
e64c5148-8942-4065-9654-169e20ed6f20 localhost Connected
Créer le volume
Par défaut, glusterd NFS autorise la lecture/écriture globale lors de la création du volume, vous devez donc configurer des restrictions d'autorisation de base uniquement pour le sous-réseau privé. glusterd
démarre automatiquement NFSd sur chaque serveur et exporte le volume via celui-ci à partir de chacun des nœuds. La raison de ce comportement est que pour utiliser le système de fichiers client natif dans l'espace utilisateur (FUSE) pour monter le volume sur les clients, les clients doivent exécuter exactement la même version des packages GlusterFS. Si les versions sont différentes, il pourrait y avoir des différences dans les algorithmes de hachage utilisés par les serveurs et les clients, et les clients ne pourront pas se connecter.
Volume répliqué
L'exemple suivant crée une réplication sur les quatre nœuds. Chaque nœud contient une copie de toutes les données et la taille du volume correspond à la taille d'une seule brique. Notez que la sortie affiche 1 x 4 = 4
.
Un seul nœud :
gluster volume create gvol0 replica 4 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Volume distribué-répliqué
Cet exemple crée une réplication distribuée sur des nœuds 2x2. Chaque paire de nœuds contient les données et la taille du volume est la taille de deux briques. Notez que la sortie affiche 2 x 2 = 4
.
Un seul nœud :
gluster volume create gvol0 replica 2 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Distributed-Replicate
Volume ID: b2ddd34b-ffb4-4fd8-ae60-b90adbd4c2ab
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Supprimer le volume
Après vous être assuré qu'aucun client (local ou distant) ne monte le volume, vous pouvez arrêter le volume et le supprimer à l'aide des commandes suivantes :
gluster volume stop gvol0
gluster volume delete gvol0
Effacer les briques
Si des briques sont utilisées dans un volume et qu'elles doivent être supprimées, vous pouvez utiliser l'une des méthodes suivantes :
GlusterFS définit un attribut sur les sous-répertoires de la brique. Si vous désactivez cet attribut, les briques peuvent être réutilisées.
-
glu-01 :
setfattr -x trust.glusterfs.volume-id /var/lib/gvol0/brick1/setfattr -x trust.gfid /var/lib/gvol0/brick1rm -rf /var/lib/gvol0/brick1/.glusterfs
-
glu-02 :
setfattr -x trust.glusterfs.volume-id /var/lib/gvol0/brick2/setfattr -x trust.gfid /var/lib/gvol0/brick2rm -rf /var/lib/gvol0/brick2/.glusterfs
-
glu-03 :
setfattr -x trust.glusterfs.volume-id /var/lib/gvol0/brick3/setfattr -x trust.gfid /var/lib/gvol0/brick3rm -rf /var/lib/gvol0/brick3/.glusterfs
-
glu-04 :
setfattr -x trust.glusterfs.volume-id /var/lib/gvol0/brick4/setfattr -x trust.gfid /var/lib/gvol0/brick4rm -rf /var/lib/gvol0/brick4/.glusterfs
Alternativement, vous pouvez supprimer les sous-répertoires puis les recréer.
-
glu-01
rm -rf /var/lib/gvol0/brick1mkdir /var/lib/gvol0/brick1
-
glu-02 :
rm -rf /var/lib/gvol0/brick2mkdir /var/lib/gvol0/brick2
-
glu-03 :
rm -rf /var/lib/gvol0/brick3mkdir /var/lib/gvol0/brick3
-
glu-04 :
rm -rf /var/lib/gvol0/brick4mkdir /var/lib/gvol0/brick4
Ajouter des briques
Vous pouvez ajouter plus de briques à un volume en cours d'exécution. Ajoutez une brique supplémentaire à notre exemple de volume répliqué ci-dessus en utilisant la commande suivante :
gluster volume add-brick gvol0 replica 5 gluster5:/var/lib/gvol0/brick5
Vous pouvez utiliser le add-brick
pour modifier la disposition de votre volume, par exemple, pour transformer un volume distribué à deux nœuds en un volume distribué et répliqué à quatre nœuds. Après une telle opération, vous devez rééquilibrer votre volume. De nouveaux fichiers sont automatiquement créés sur les nouveaux nœuds, mais les anciens ne sont pas déplacés.
gluster volume add-brick gvol0 replica 2 \
gluster5:/var/lib/gvol0/brick5 ;
gluster6:/var/lib/gvol0/brick6
gluster volume rebalance gvol0 start
gluster volume rebalance gvol0 status
## If needed (something didn't work right)
gluster volume rebalance gvol0 stop
Options de volume
Pour afficher les options de volume configurées, exécutez la commande suivante :
gluster volume info gvol0
Voici un exemple de sortie :
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Pour définir une option pour un volume, utilisez la commande set mot-clé comme suit :
gluster volume set gvol0 performance.write-behind off
volume set: success
Pour effacer une option sur un volume par défaut, utilisez la réinitialisation mot-clé comme suit :
gluster volume reset gvol0 performance.read-ahead
volume reset: success: reset volume successful
Montages clients
La méthode préférée d'un client pour monter un volume GlusterFS consiste à utiliser le client FUSE natif. Les montages NFS sont possibles lorsque GlusterFS est déployé en tandem avec NFS-Ganesha®.
Client FUSE
Le client FUSE permet au montage de se produire avec une connexion de style "round robin" GlusterFS. Dans /etc/fstab , le nom d'un nœud est utilisé. Cependant, des mécanismes internes permettent à ce nœud d'échouer et les clients basculent vers d'autres nœuds connectés dans le pool de stockage approuvé.
CentOS :
yum install -y centos-release-gluster7
yum install -y glusterfs-fuse
Ubuntu :
add-apt-repository -y ppa:gluster/glusterfs-7
apt install glusterfs-client
Commun :
vi /etc/hosts
192.168.0.2 glus-01
192.168.0.4 glus-02
192.168.0.1 glus-03
192.168.0.3 glus-04
`modprobe fuse
echo 'glus-01:/gvol0 /mnt/gluster/gvol0 glusterfs _netdev 0 0' >> /etc/fstab
mkdir -p /mnt/gluster/gvol0
mount /mnt/gluster/gvol0`
Références
- https://www.gluster.org/annonce-gluster-7-0/
- https://docs.gluster.org/en/latest/
- https://wiki.centos.org/HowTos/GlusterFSonCentOS
- https://kifarunix.com/install-and-setup-glusterfs-on-ubuntu-18-04/
- https://launchpad.net/~gluster
Article suivant
Dépannage de GlusterFS