Table des matières

GlusterFS

Articles:

Install

Debian 10 (Buster)

root@glusterfs-01:~# ping -c 6 glusterfs-02
--- glusterfs-02 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 13ms
rtt min/avg/max/mdev = 6.097/6.221/6.390/0.122 ms
 
debian@glusterfs-02:~$ ping -c 6 glusterfs-01
--- glusterfs-01 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 13ms
rtt min/avg/max/mdev = 6.112/6.355/6.783/0.219 ms

À faire sur les 2 machines

Setup NTP on each of these servers to get the proper functioning of many applications on top of filesystem. This is an important requirement.

# Mise à jour
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install software-properties-common -y
 
# Dépot GlusterFS
# "LATEST" remplacé par "9" pour trouver "rsa.pub"
$ wget -O - https://download.gluster.org/pub/gluster/glusterfs/9/rsa.pub | sudo apt-key add -
$ DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"')
$ DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+')
$ DEBARCH=$(dpkg --print-architecture)
$ echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main | sudo tee /etc/apt/sources.list.d/gluster.list
 
# Install server & client
$ sudo apt update
$ sudo apt install glusterfs-server glusterfs-client
 
# Démarrer et activer le service
$ sudo systemctl start glusterd
$ sudo systemctl enable glusterd
 
$ sudo mkdir -p /glusterfs/distributed

Si le gluster-server est sur localhost il faut l'indiquer dans /etc/hosts.

# Sur glusterfs-01 chez Scaleway
127.0.0.1 glusterfs-01 glusterfs-01
# glusterfs-02 chez Ovh
xxx.xxx.xxx.xxx glusterfs-02
 
# Sur glusterfs-02 chez Ovh
127.0.1.1 glusterfs-02 glusterfs-02
# glusterfs-01 chez Scaleway
xxx.xxx.xxx.xxx glusterfs-01

À faire sur une machine (ici glusterfs-01) as root

gluster peer probe glusterfs-02
gluster peer status
gluster peer list
 
# Create a "replica" volume "vol01"
gluster volume create vol01 replica 2 transport tcp glusterfs-01:/glusterfs/distributed glusterfs-02:/glusterfs/distributed force
# Start volume
gluster volume start vol01

Le status du volume:

gluster volume status
Status of volume: vol01
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick glusterfs-01:/glusterfs/distributed   49152     0          Y       1029 
Brick glusterfs-02:/glusterfs/distributed   49152     0          Y       715  
Self-heal Daemon on localhost               N/A       N/A        Y       1046 
Self-heal Daemon on glusterfs-02            N/A       N/A        Y       732  
 
Task Status of Volume vol01
------------------------------------------------------------------------------
There are no active volume tasks

Monter le volume :

# le client glusterfs-client doit être installé
$ sudo mount -t glusterfs glusterfs-02:/vol01 /mnt/glusterfs

TODO

Résolution de problèmes

Les ''bricks'' ne sont pas synchro

En cas de coupure réseau, redémarrage d'un serveur, la resynchronisation se fait tout seule au rétablissement (pro-active self-healing daemon does this).

Mais il peut y avoir des cas où il faudrait forcer une synchro. La commande est :

$ sudo gluster volume heal vol01 full
Launching heal operation to perform full self heal on volume vol01 has been successful 
Use heal info commands to check status.

Pour essayer, il suffit d'écrire un fichier directement dans une brick, ce qui n'ai jamais à faire, puis de lancer la commande volume heal <VOL> full.