GlusterFS – Parte 2: Installiamo!

GlusterFS

Prima di leggere questo articolo, ti consiglio di partire da un po’ di teoria: qualche concetto che è meglio conoscere, dei quali ho parlato qui.

Fatto ? Ok, iniziamo. Devi avere almeno due server linux, fisici o virtuali che siano. E’ sufficiente un’installazione base. Io utilizzo una CentOS 6, quindi gli esempi seguenti faranno riferimento a questa distribuzione.

Gluster ha bisogno di una partizione o di un disco tutto suo, sul quale memorizzerà i dati condivisi nel cluster. Su questa partizione sarà Gluster a scrivere i dati, non noi.

Il files system consigliato per questa partizione è XFS. Supponendo che la partizione sia la /dev/sdb1…

yum install xfsprogs xfsdump

mkfs.xfs -i size=512 /dev/sdb1

Bisogna creare un mount poit per questa partizione che – ripeto – non deve essere utilizzata direttamente, quindi meglio creare un nome che “scoraggi” eventuali operazioni dirette di scritta.

mkdir -p /gluster-disks/sdb1

mount /dev/sdb1 /gluster-disks/sdb1

mkdir -p /gluster-disks/sdb1/brick

echo “/dev/sdb1 /gluster-disks/sdb1 xfs defaults 0 0” >> /etc/fstab

La cartella “brick” è quella dove Gluster scriverà i suoi files.

Adesso installiamo gluster.

wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo

yum install glusterfs glusterfs-fuse glusterfs-geo-replication glusterfs-server

service glusterd start

chkconfig –add glusterd

chkconfig –level 345 glusterd on

Le operazioni fin qui descritte vanno eseguite su tutti i nodi del cluster.

Quando tutto è stato fatto è necessario impartire dei comandi su uno dei nodi, non è importante quale.

Per prima cosa, vanno aggiunti i nodi stessi. Il nodo sul quale si danno i comandi è “automaticamente” aggiunto quindi non è necessario inserirlo. Supponendo di avere 3 nodi (nodo1, nodo2, nodo3)  è sufficiente digitare i seguenti comandi:

gluster peer probe nodo2

gluster peer proble nodo3

Il comando “gluster peer status” ci da un’idea di cosa sta succedendo:

gluster peer status
Number of Peers: 2

Hostname: nodo2
Uuid: a96f29c0-f436-4092-ad70-ebf4d5b1bc27
State: Peer in Cluster (Connected)

Hostname: nodo3
Uuid: 07840aa3-e8d3-4591-8075-a6454c51ea2e
State: Peer in Cluster (Connected)

Se il comando peer probe dovesse ritornare il codice d’errore 107 (gluster peer probe failed probe returned with unknown errno 107), significa che c’è un problema di connettività tra i nodi:

– Verifica che il nome del nodo venga correttamente risolto (/etc/hosts o DNS)

– Verifica che sui nodi non sia attivo iptables o che sia correttamente configurato per lasciar passare il traffico di gluster

– Verifica che i nodi si vedano tra di loro (prova un ping), potrebbe essere un problema di gateway o di subnet mask sbagliata

– Insomma… Errore 107 significa problema di rete, quindi indaga!

Se tutti nodi rispondo all’appello, va creato il volume. Supponendo di voler creare un volume replicato su tutti i nodi del cluster, digitiamo il seguente comando:

gluster volume create gvolume replica 3 nodo1:/gluster-disks/sdb1/brick nodo2:/gluster-disks/sdb1/brick nodo3:/gluster-disks/sdb1/brick

Ok, cosa abbiamo fatto? Abbiamo detto a Gluster di creare un volume chiamato gvolume sui 3 nodi (nodo1, nodo2, nodo3), di archiviare i dati “fisicamente” nella cartella /gluster-disks/sdb1/brick

Il volume adesso va fatto “partire”:

gluster volume start gvolume

Adesso che abbiamo creato il volume… come minimo sarebbe il caso di usarlo. Come ho ribadito più volte, non possiamo scrivere direttamente sul brick, ma dobbiamo chiedere a gluster di farlo. Come? Semplice, montiamo il volume “virtuale” che gluster ci servirà prontamente:

/sbin/mount.glusterfs nodo1:/gvolume /export/www

Per fare in modo che il disco venga montato automaticamente all’avvio della macchina, è sufficiente inserire il comando nel file /etc/rc.local

Fatto! Finito! Funziona!

Provate a scrivere, cancellare, spostare, rinominale i files sul vostro gluster disk. Provate a spegnere un nodo, a riaccenderlo… non prenderete mai in castagna gluster!

Se il client sta utilizzando un nodo del cluster improvvisamente diventato offline, noterete solo un momento di “freeze” del sistema.

Un’ultima accortezza: gluster replica anche i permessi dei files, quindi è “ausipicabile” che ci sia una sincronizzazione degli utenti e dei gruppi tra le varie macchine.

NOTE del 04.09.2015

Non sono disponibili gli RPM della versione 3.7 per la CentOS. Per poter istruire yum a scaricare gli RPM della 3.6 il comando da lanciare è:

wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/3.6/LATEST/CentOS/glusterfs-epel.repo