GlusterFS: Parte 1 – Un po’ di teoria

eat-in-front-of-computers“This guide can easily be done in a lunch break, and still gives you time to have a quick bite to eat.”

Questo si legge nella guida ufficiale di GlusterFS… non so quanto siano lunghe le pause pranzo degli sviluppatori di GlusterFS, ma posso confermare che in una mattinata si riesce ad apprenderne i principi fondamentali di funzionamento e a fare i primi esperimenti. Poi da qui a mettere dei server in produzione un pochino ne passa! Ma il risultato ottenuto sarà sicuramente più che soddisfacente.

Che cosa è Gluster?

Gluster è un files System condiviso tra più server, capace di scalare in orizzontale, tramite l’aggiunta di nuovi nodi. Può essere ridondato e/o distribuito e non prevede un single point of failure: non c’è un server centrale che comanda tutti gli altri; ogni nodo ha tutte le informazioni circa il resto della rete.

Ad essere pignoli non è un vero e proprio files system, ma è un aggregatore di più files system, presenti su host diversi, in un unico grande, replicato e/o distribuito files system… In pratica, su più server si mette a disposizione una porzione di disco che non deve essere formattata in “Gluster”, ma con uno dei files system utilizzati su Linux. Viene consigliato XFS, ma nulla vieta di utilizzare EXT4. I client potranno montare questo files system logico in NFS, SMB/CIFS o con un client Gluster.

Al contrario di altri sistemi ogni nodo sa esattamente dove trovare ogni singolo file, anche se fisicamente non è presente sui propri dischi; questo garantisce un accesso ai files veramente parallelizzato e le performance possono scalare in modo (quasi) lineare.

Perché Gluster? 

Perché avevo bisogno di sincronizzare dei files su più server, in modo semplice e automatico. Un altro enorme valore aggiunto è che anche utilizzando hardware semplice (il cosiddetto commodity hardware) si può creare una infrastruttura di storage veloce ed affidabile, a costi estremamente ridotti.

Che cosa non fa Gluster?

Gluster non può essere utilizzato come storage per database server o comunque per dati “strutturati”. I databases server utilizzano dei files all’interno dei quali ci sono dati strutturati. Quando una query SQL modifica alcuni dei dati contenuti in una tabella, Gluster intercetta la modifica sul file e lo replica per intero, con ovvi svantaggi prestazionali. Per risolvere i problemi di replica di database conviene sicuramente affidarsi a soluzioni proprietarie del DB (vedi replica o cluster di MySQL).

Capiamoci sui termini!

Un nodo è una macchina, virtuale o fisica, che fa girare il software Glusterd e che mette a disposizione una porzione del suo disco. Questa porzione di disco è chiamata brick. Il brick o i bricks sono fisicamente presenti su un mount point del nodo; questo mount point viene chiamato export. Più nodi formano un trusted pool. I bricks in un trusted pool vengono messi “insieme” logicamente da Gluster, in un oggetto chiamato Gluster Volume.

Prima di iniziare: che ore sono???

Non vedevo l’ora di dirlo: sincronizziamo gli orologi ! Come prima di un colpo in banca, prima di lavorare con il nostro Gluster Volume sincronizziamo gli orologi: è fondamentale che tutti i nodi del trusted pool siano sincronizzati, quindi installare ed avviare il server NTP.

Non dimentichiamo la fiducia!

Ok, i firewall servono, vanno messi ovunque, ma se evitiamo di metterli nel trusted pool è meglio! Scherzi a parte l’attività di rete tra i nodi, come è facile capire, è elevata e un firewall nel mezzo che analizza ogni singolo pacchetto scambiato tra i nodi potrebbe creare degli inutili rallentamenti. Se i nodi sono fisici è bene realizzare un segmento di rete a 1GBit dedicato allo scambio di dati all’interno del trusted pool. Se le macchine sono virtuali è sufficiente un virtual switch dedicato… se poi abbondiamo di schede di rete possiamo mettere il virtual switch su un pool di schede di rete dedicate. Molto dipende da quanti dati si muovo sul gluster volume.

Attenzione a cosa clonate!

Se per fare i test volete usare delle macchine virtuali, accertatevi di clonarle PRIMA di aver installato gluster. In fase di installazione gluster genera un identificativo univoco del server e se clonate il server dopo l’installazione, l’identificativo non sarà più univoco! Certo questo è Linux, l’identificativo è scritto dentro un file, quindi si può cambiare, ma ci vuole talmente poco ad installare Gluster e a fargli generare il suo ID che non vale la pena di perdere tempo.

Scalabilità

Probabilmente l’avete già capito, ma è bene ribadirlo: tramite GlusterFS riesco ad avere un’elevata scalabilità sia in termini di performace, aggreggando più nodi, sia in termini di capacità di archiviazione aumentando il numero di brick facenti parte del volume.

Flessibilità

Tramite gluster posso creare dei volumi replicati in modo “sincrono” all’interno dello stesso datacenter o in modo “asincrono” sfruttando un datacenter esterno.

Facilità di installazione configurazione

Configurare e gestire Gluster è veramente molto semplice. Gluster lavoro nello user space, quindi non è necessario ricompilare il kernel con complesse patch o risolvere lunghe catene di dipendenze di moduli. E’ un semplice daemon.

  Passiamo alla parte pratica!

 

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *