====== GlusterFS ======
* [[https://docs.gluster.org/|Gluster documentation]]
Articles:
* [[https://medium.com/search?q=glusterfs|GlusterFS sur medium.com]]
===== Install =====
* [[https://www.scaleway.com/en/docs/how-to-configure-storage-with-glusterfs-on-ubuntu/|Configure a High-Availability Storage with GlusterFS on Ubuntu 18.04 LTS]]
* [[https://www.octopuce.fr/glusterfs-systeme-de-fichier-reseau-synchronise-redondant/|GlusterFS, système de fichier réseau synchronisé & redondant]]
* [[https://docs.gluster.org/en/latest/Install-Guide/Install/|Install-Guide]].
* [[https://docs.gluster.org/en/latest/CLI-Reference/cli-main/|gluster (cli) command reference]]
* glusterfs-01: Scaleway DEV1-S, 2 x vCPU, 2 GB, 20 GB NVMe, 200 Mbit/s
* glusterfs-02: OVH B2-7, 2 x vCPU, 7 GB, 50 GB SSD, 250 Mbit/s
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 ====
* firewall
* like ''iptables -I INPUT -i eth0 -s 192.168.0.0/16 -j ACCEPT''
* SSL transport
* https://docs.gluster.org/en/latest/Administrator-Guide/SSL/
* Enabling TLS on the Management Path
* ''sudo touch /var/lib/glusterd/secure-access''
===== 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 full''.