Impostazione del file system
In questo articolo viene esaminata un'alternativa ai file system di tipo NFS o DFS. In confronto a questi, GlusterFS soffre di meno ritardi durante il cambio dei server. Questo file system è inoltre gratuito e se ne consiglia l'uso in caso di budget limitato. In altri termini, utilizzare 2 o 3 server non presenta alcun vantaggio rispetto a un controller hardware RAID e vi è la possibilità di collegare i server a quadri elettrici diversi, in modo da aumentare leggermente la tolleranza dell'intero sistema agli errori.
CommuniGate Pro implementa la distribuzione del carico, che garantisce non solo un carico uniforme sulla server-farm, ma anche la sostituzione automatica di server fuori servizio con altri funzionanti, con carico minimo. E se si ha bisogno di prenotare uno spazio per archiviazione file insieme ai dati delle caselle postali e alle impostazioni dei domini di posta? Si consiglia di usare a tal fine un file system distribuito (a cluster). In questo esempio è esaminata la procedura di impostazione di questo file system su due server. È possibile aggiungere facilmente un qualsiasi numero di server, secondo necessità.
In questo esempio per distribuire il file system a cluster GlusterFS viene utilizzato il sistema operativo Fedora 21.
Nell'esempio sono utilizzati i seguenti nomi di server:
- 192.168.0.100 data1.domain.com
- 192.168.0.101 data2.domain.com
Il disco rigido usato in questa operazione ha nome sdb.
Non ci sono requisiti particolari per il file system di questo disco, ma bisogna ricordare comunque che, ad esempio, ext4 usa una dimensione minima per blocco pari a 4 KB, mentre xfs usa 512B. Pertanto, utilizzando ext4 si perde una quantità notevole di spazio su disco.
Preparazione
I seguenti passi consentono di preparare partizioni per una successiva replicazione. Si consiglia di usare dischi rigidi separati da quelli su cui verrà installato il sistema operativo, ma è comunque possibile utilizzare una partizione separata dello stesso disco. In questo caso le prestazioni e la tolleranza agli errori saranno ridotte a causa dell'aumentato rischio di blocco del sistema operativo.
1. Creazione di una partizione sul secondo disco. Tutti i parametri devono essere inseriti in sequenza.
# fdisk /dev/sdb
- d - Elimina le eventuali partizioni precedentemente create.
- n - Crea una nuova partizione. Se si vuole lasciare l'intero spazio del disco su una partizione, è sufficiente premere 4 volte [Enter], e dunque rispondendo di sì a tutte le domande.
- w - Registrazione di tutte le modifiche sul disco. Successivamente l'esecuzione di fdisk verrà automaticamente terminata
2. Formattazione della partizione appena creata nel sistema di file xfs.
# mkfs.xfs -i size=512 /dev/sdb1
3. Creazione di una cartella e montaggio in essa della partizione appena formattata.
# mkdir -p /data/cluster && mount /dev/sdb1 /data
4. Impostazione del montaggio automatico della partizione nella cartella appena creata.
# echo "/dev/sdb1 /data xfs defaults 0 0" >> /etc/fstab
5. Installazione di ClusterFS.
# yum install glusterfs{,-server,-fuse,-geo-replication} -y
6. Le seguenti porte devono essere aperte:
- 24007 (TCP)
- 24008 (TCP)
- 49152, 49153 (TCP). Il numero di queste porte dipende dal numero di nodi del cluster. Ad esempio, per un cluster da tre nodi aprire 49152, 49153 e 49154.
- 38465-38467 (TCP)
- 2049 (TCP)
- 111 (TCP e UDP).
IMPORTANTE: Inizialmente si consiglia di aprire tutte le porte per facilitare la procedura di debugging.
7. Riavvio del servizio GlusterFS.
# service glusterd restart
8. Si consiglia di aggiungere registrazioni DNS (A) a ogni nodo del cluster.
# nano /etc/hosts
192.168.0.100 data1 data1.domain.com
192.168.0.101 data2 data2.domain.com
Configurazione del cluster.
La preparazione è completata e i server sono ora pronti per l'impostazione del file system.
Eseguire i seguenti passi solo su un nodo del cluster. In questo esempio il server usato è data1.domain.com.
9. Assegnare il ruolo peer.
# gluster peer probe data2.domain.com
10. Se l'operazione precedente è completata con successo, verrà visualizzato un messaggio di informazioni sul nodo data2.domain.com
# gluster peer status
11. Creazione di una partizione virtuale volume_data con l'indicazione dei server tra cui è effettuata la replicazione dei dati.
# gluster volume create volume_data replica 2 transport tcp data1.domain.com:/data/cluster data2.domain.com:/data/cluster
12. Avviare la partizione.
# gluster volume start volume_data
13. È ora necessario riavviare GlusterFS. Questa operazione va eseguita su entrambi i server.
# service glusterd restart
Configurazione del client.
In questa fase il cluster è già configurato e i dati sono replicati tra i nodi. È ora necessario configurare il client che potrà eseguire operazioni sui file.
Dato che questo si fa per i server CommuniGate Pro, è necessario montare su di esso i dischi di rete. Quanto descritto di seguito si applica solo nel caso in cui CGPro sia installato su un server Linux. Per Windows è necessario impostare ulteriori configurazioni del server Samba su entrambi i nodi.
Le seguenti operazioni sono effettuate su ogni server CommuniGate Pro.
14. Installazione della parte client di GlusterFS.
# yum install glusterfs{,-fuse}
15. Creazione di una cartella attraverso la quale sarà impostato l'accesso al cluster.
# mkdir /mail
16. Montaggio del cluster nella cartella appena creata.
# mount -t glusterfs data1.domain.com:/volume_data /mail
17. Registrare il montaggio del cluster all'avvio in fstab.
echo "data2.domain.msk:/volume_data /mail glusterfs defaults 0 0" >> /etc/fstab
A questo punto la configurazione di base del cluster di file è completata. È importante notare due particolarità in questo esempio.
1. Com'è possibile notare, il client richiede l'installazione del pacchetto glusterfs-fuse. Senza questo pacchetto non è possibile montare la partizione. Questa impostazione non incide in alcun modo sul funzionamento di CommunigatePro. Tuttavia, si consiglia di utilizzare Samba sui nodi del cluster per montare le partizioni sul protocollo smb.
2. Dall'attività di montaggio appare che i server vengono montati su un nodo specifico del cluster, il che rende il sistema abbastanza suscettibile a malfunzionamenti. Per risolvere questo problema è necessario configurare il pool di indirizzi DNS oppure un'interfaccia virtuale tra tutti i nodi del cluster.