Questo articolo è stato aggiornato per coprire l'installazione di GlusterFS® 7 su CentOS® 7 e Ubuntu® 18.04. Tutto il lavoro originale in questo documento è lo stesso, ad eccezione del passaggio in cui crei il volume con la replica parola chiave.
Prima di iniziare a utilizzare GlusterFS, devi decidere quale tipo di volume ti serve per il tuo ambiente. I seguenti metodi vengono utilizzati più spesso per ottenere risultati diversi.
Volume replicato
Questo tipo di volume fornisce la replica dei file su più mattoni. È la scelta migliore per gli ambienti che richiedono disponibilità elevata, affidabilità elevata e storage scalabile. Questo tipo di volume funziona bene se prevedi di montare automaticamente il volume GlusterFS, ad esempio, come root del documento del server Web (/var/www
) o simili in cui tutti i file devono risiedere su quel nodo. Il valore passato a replica è lo stesso numero di nodi nel volume.
I file vengono copiati in ogni mattone del volume, in modo simile a un array ridondante di dischi indipendenti (RAID-1). Tuttavia, puoi avere tre o più mattoni o un numero dispari di mattoni. Lo spazio utilizzabile ha le dimensioni di un mattone e tutti i file scritti su un mattone vengono replicati su tutti gli altri. I volumi di questo tipo offrono anche prestazioni di lettura migliorate nella maggior parte degli ambienti e sono il tipo più comune di volume utilizzato quando i client sono esterni ai nodi GlusterFS stessi.
Volume distribuito con replica
Simile a un RAID-10, è necessario utilizzare un numero pari di mattoni. Lo spazio utilizzabile è la dimensione dei mattoni combinati passati alla replica valore. Ad esempio, se sono presenti quattro mattoni da 20 Gigabyte (GB) e superi la replica 2 alla creazione, i tuoi file vengono distribuiti su due nodi (40 GB) e replicati su due nodi. Con sei mattoncini da 20 GB e replica 3 , i tuoi file vengono distribuiti su tre nodi (60 GB) e replicati su tre nodi. Se hai utilizzato la replica 2, vengono quindi distribuiti su due nodi (40 GB) e replicati su quattro nodi in coppia. Questa distribuzione e replica vengono utilizzate quando i client sono esterni al cluster, non automontanti locali.
Prerequisiti
- Due o più server con storage separato. Gli esempi in questo articolo sono basati sui server CentOS 7 e Ubuntu 18.04.
- Una rete privata tra server. Gli esempi in questo articolo usano
192.168.0.0/24
.
Impostazione build
La build descritta in questo documento utilizza la seguente configurazione:
- Quattro immagini del server Rackspace Cloud con un
/dev/xvde
partizione pronta all'uso per ogni mattone - Una rete privata cloud su
192.168.0.0/24
per la comunicazione GlusterFS - GlusterFS 7.1 installato dal repository del pacchetto del fornitore
Preparazione dei server
Eseguire la configurazione e le installazioni seguenti per preparare i server:
- Configura
/etc/hosts
. - Installa gli aggiornamenti del sistema operativo (OS).
- Installa il software GlusterFS.
- Configura l'accesso alla rete.
- Collega i nodi GlusterFS.
Configura /etc/hosts per la comunicazione intra-nodo
Invece di usare il DNS, prepara /etc/hosts
su ogni server e assicurarsi che i server possano comunicare tra loro. Tutti i server hanno il nome glusterN come nome host, quindi usa glusN per il livello di comunicazione privato tra i server.
# vi /etc/hosts
192.168.0.1 glus-01
192.168.0.2 glus-02
192.168.0.3 glus-03
192.168.0.4 glus-04
# ping -c2 glus-01; ping -c2 glus-02; ping -c2 glus-03; ping -c2 glus-04
Installa i pacchetti
Esegui i comandi in questa sezione per eseguire i seguenti passaggi:
- Installa gli aggiornamenti del sistema operativo.
- Installa il repository GlusterFS e i pacchetti GlusterFS.
CentOS
yum update -y
yum install -y centos-release-gluster7
yum install -y glusterfs-server
Sistema operativo Ubuntu
Il repository Ubuntu predefinito ha GlusterFS 3.13.2 installato. Utilizzare i seguenti comandi per installare 7.1:
apt update
apt upgrade -y
add-apt-repository -y ppa:gluster/glusterfs-7
apt install -y glusterfs-server
Configura l'accesso alla rete
CentOS
Utilizza i seguenti comandi per consentire il traffico Gluster tra i tuoi nodi e consentire i montaggi dei client:
firewall-cmd --add-service=glusterfs
firewall-cmd --add-service=glusterfs --permanent
Sistema operativo Ubuntu
Utilizza i seguenti comandi per consentire a tutto il traffico sul tuo segmento di rete privata di facilitare la comunicazione Gluster:
ufw enable
ufw allow from 192.168.0.0/24
Prepara i mattoni
Esegui i comandi in questa sezione per eseguire i seguenti passaggi:
- Dispositivi di blocco delle partizioni.
- Crea la base del gestore del volume logico (LVM).
- Prepara i mattoncini volumetrici.
I mattoni sottostanti sono un file system standard e un punto di montaggio. Monta ogni mattone in modo tale da scoraggiare qualsiasi utente dal passare alla directory e scrivere sui mattoni sottostanti stessi.
Avviso: Scrivere direttamente su un mattone danneggia il volume.
I mattoni devono essere univoci per nodo e dovrebbe esserci una directory all'interno del punto di montaggio da utilizzare nella creazione del volume. Il tentativo di creare un volume replicato utilizzando il livello superiore dei punti di montaggio genera un errore con le istruzioni per utilizzare una sottodirectory.
Tutti i nodi
parted -s -- /dev/xvde mktable gpt
parted -s -- /dev/xvde mkpart primary 2048s 100%
parted -s -- /dev/xvde set 1 lvm on
pvcreate /dev/xvde1
vgcreate vgglus-01 /dev/xvde1
lvcreate -l 100%VG -n gbrick1 vgglus-01
mkfs.xfs /dev/vgglus-01/gbrick1
echo '/dev/vgglus-01/gbrick1 /var/lib/gvol0 xfs defaults 0 0' >> /etc/fstab
mkdir /var/lib/gvol0
mount /var/lib/gvol0
-
glus-01
mkdir /var/lib/gvol0/brick1
-
glus-02
mkdir /var/lib/gvol0/brick2
-
glus-03
mkdir /var/lib/gvol0/brick3
-
glus-04
mkdir /var/lib/gvol0/brick4
Imposta GlusterFS
Utilizzare i passaggi seguenti per eseguire l'installazione di GlusterFS.
Avvia il demone glusterfsd
Puoi riavviare il demone in fase di esecuzione utilizzando i seguenti comandi:
systemctl enable glusterd
systemctl start glusterd
Crea un gruppo di pari
Un gruppo di peer è noto come pool di archiviazione attendibile in GlusterFS.
-
glus-01
gluster peer probe glus-02 gluster peer probe glus-03 gluster peer probe glus-04 gluster peer status
-
glus-02
gluster peer status
-
glus-03
gluster peer status
-
glus-04
gluster peer status
Ora puoi verificare lo stato del tuo nodo e del pool di server gluster:
[root@gluster1 ~]# gluster pool list
UUID Hostname State
734aea4c-fc4f-4971-ba3d-37bd5d9c35b8 glus-04 Connected
d5c9e064-c06f-44d9-bf60-bae5fc881e16 glus-03 Connected
57027f23-bdf2-4a95-8eb6-ff9f936dc31e glus-02 Connected
e64c5148-8942-4065-9654-169e20ed6f20 localhost Connected
Crea il volume
Per impostazione predefinita, glusterd NFS consente la lettura/scrittura globale durante la creazione del volume, quindi è necessario impostare restrizioni di autorizzazione di base solo per la sottorete privata. glusterd
avvia automaticamente NFSd su ciascun server ed esporta il volume attraverso di esso da ciascuno dei nodi. La ragione di questo comportamento è che per utilizzare il client nativo Filesystem in Userspace (FUSE) per montare il volume sui client, i client devono eseguire esattamente la stessa versione dei pacchetti GlusterFS. Se le versioni sono diverse, potrebbero esserci differenze negli algoritmi di hashing utilizzati da server e client e i client non saranno in grado di connettersi.
Volume replicato
L'esempio seguente crea la replica su tutti e quattro i nodi. Ogni nodo contiene una copia di tutti i dati e la dimensione del volume è la dimensione di un singolo mattone. Nota che l'output mostra 1 x 4 = 4
.
Un solo nodo :
gluster volume create gvol0 replica 4 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Volume distribuito-replicato
Questo esempio crea una replica distribuita su nodi 2x2. Ogni coppia di nodi contiene i dati e la dimensione del volume è la dimensione di due mattoni. Nota che l'output mostra 2 x 2 = 4
.
Un solo nodo :
gluster volume create gvol0 replica 2 transport tcp \
glus-01:/var/lib/gvol0/brick1 \
glus-02:/var/lib/gvol0/brick2 \
glus-03:/var/lib/gvol0/brick3 \
glus-04:/var/lib/gvol0/brick4
gluster volume start gvol0
[root@gluster1 ~]# gluster volume info gvol0
Volume Name: gvol0
Type: Distributed-Replicate
Volume ID: b2ddd34b-ffb4-4fd8-ae60-b90adbd4c2ab
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Elimina il volume
Dopo esserti assicurato che nessun client (locale o remoto) stia montando il volume, puoi arrestare il volume ed eliminarlo utilizzando i seguenti comandi:
gluster volume stop gvol0
gluster volume delete gvol0
Pulizia dei mattoni
Se i mattoni vengono utilizzati in un volume e devono essere rimossi, puoi utilizzare uno dei seguenti metodi:
GlusterFS imposta un attributo nelle sottodirectory brick. Se cancelli questo attributo, i mattoni possono essere riutilizzati.
-
glus-01:
setfattr -x trusted.glusterfs.volume-id /var/lib/gvol0/brick1/setfattr -x trusted.gfid /var/lib/gvol0/brick1rm -rf /var/lib/gvol0/brick1/.glusterfs
-
glus-02:
setfattr -x trusted.glusterfs.volume-id /var/lib/gvol0/brick2/setfattr -x trusted.gfid /var/lib/gvol0/brick2rm -rf /var/lib/gvol0/brick2/.glusterfs
-
glus-03:
setfattr -x trusted.glusterfs.volume-id /var/lib/gvol0/brick3/setfattr -x trusted.gfid /var/lib/gvol0/brick3rm -rf /var/lib/gvol0/brick3/.glusterfs
-
glus-04:
setfattr -x trusted.glusterfs.volume-id /var/lib/gvol0/brick4/setfattr -x trusted.gfid /var/lib/gvol0/brick4rm -rf /var/lib/gvol0/brick4/.glusterfs
In alternativa, puoi eliminare le sottodirectory e poi ricrearle.
-
glus-01
rm -rf /var/lib/gvol0/brick1mkdir /var/lib/gvol0/brick1
-
glus-02:
rm -rf /var/lib/gvol0/brick2mkdir /var/lib/gvol0/brick2
-
glus-03:
rm -rf /var/lib/gvol0/brick3mkdir /var/lib/gvol0/brick3
-
glus-04:
rm -rf /var/lib/gvol0/brick4mkdir /var/lib/gvol0/brick4
Aggiungi mattoni
Puoi aggiungere più mattoni a un volume in esecuzione. Aggiungi un mattone aggiuntivo al nostro esempio di volume replicato sopra utilizzando il comando seguente:
gluster volume add-brick gvol0 replica 5 gluster5:/var/lib/gvol0/brick5
Puoi usare il add-brick
comando per modificare il layout del volume, ad esempio per modificare un volume distribuito a due nodi in un volume replicato distribuito a quattro nodi. Dopo tale operazione, è necessario ribilanciare il volume. I nuovi file vengono creati automaticamente sui nuovi nodi, ma i vecchi non vengono spostati.
gluster volume add-brick gvol0 replica 2 \
gluster5:/var/lib/gvol0/brick5 ;
gluster6:/var/lib/gvol0/brick6
gluster volume rebalance gvol0 start
gluster volume rebalance gvol0 status
## If needed (something didn't work right)
gluster volume rebalance gvol0 stop
Opzioni volume
Per visualizzare le opzioni del volume configurate, eseguire il comando seguente:
gluster volume info gvol0
Quello che segue è un esempio di output:
Volume Name: gvol0
Type: Replicate
Volume ID: 8d12cb5a-77ad-43a3-bdd1-ab48405ff1da
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glus-01:/var/lib/gvol0/brick1
Brick2: glus-02:/var/lib/gvol0/brick2
Brick3: glus-03:/var/lib/gvol0/brick3
Brick4: glus-04:/var/lib/gvol0/brick4
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
performance.client-io-threads: off
Per impostare un'opzione per un volume, usa il set parola chiave come segue:
gluster volume set gvol0 performance.write-behind off
volume set: success
Per ripristinare l'impostazione predefinita di un'opzione per un volume, utilizza il ripristino parola chiave come segue:
gluster volume reset gvol0 performance.read-ahead
volume reset: success: reset volume successful
Client monta
Il metodo preferito per un client per montare un volume GlusterFS consiste nell'usare il client FUSE nativo. I supporti NFS sono possibili quando GlusterFS viene distribuito in tandem con NFS-Ganesha®.
Client FUSE
Il client FUSE consente che il montaggio avvenga con una connessione in stile "round robin" GlusterFS. In /etc/fstab , viene utilizzato il nome di un nodo. Tuttavia, i meccanismi interni consentono a quel nodo di fallire e i client passano ad altri nodi connessi nel pool di archiviazione attendibile.
CentOS :
yum install -y centos-release-gluster7
yum install -y glusterfs-fuse
Ubuntu :
add-apt-repository -y ppa:gluster/glusterfs-7
apt install glusterfs-client
Comune :
vi /etc/hosts
192.168.0.2 glus-01
192.168.0.4 glus-02
192.168.0.1 glus-03
192.168.0.3 glus-04
`modprobe fuse
echo 'glus-01:/gvol0 /mnt/gluster/gvol0 glusterfs _netdev 0 0' >> /etc/fstab
mkdir -p /mnt/gluster/gvol0
mount /mnt/gluster/gvol0`
Riferimenti
- https://www.gluster.org/announcing-gluster-7-0/
- https://docs.gluster.org/en/latest/
- https://wiki.centos.org/HowTos/GlusterFSonCentOS
- https://kifarunix.com/install-and-setup-glusterfs-on-ubuntu-18-04/
- https://launchpad.net/~gluster
Articolo successivo
Risoluzione dei problemi di GlusterFS