GNU/Linux >> Linux Esercitazione >  >> Debian

Archiviazione ad alta disponibilità con GlusterFS 3.2.x su Debian Wheezy - Replica automatica dei file (mirror) su due server di archiviazione

Questo tutorial mostra come configurare uno storage ad alta disponibilità con due storage server (Debian Wheezy) che usano GlusterFS. Ciascun server di archiviazione sarà un mirror dell'altro server di archiviazione e i file verranno replicati automaticamente su entrambi i server di archiviazione. Il sistema client (anche Debian Wheezy) sarà in grado di accedere allo storage come se fosse un filesystem locale.GlusterFS è un filesystem in cluster in grado di scalare a diversi peta-byte. Aggrega vari blocchi di archiviazione su Infiniband RDMA o interconnessione TCP/IP in un unico file system di rete parallelo di grandi dimensioni. I mattoni di archiviazione possono essere realizzati con qualsiasi hardware di consumo come server x86_64 con RAID SATA-II e HBA Infiniband.

Non garantisco che questo funzionerà per te!

1 Nota preliminare

In questo tutorial utilizzo tre sistemi, due server e un client:

  • server1.example.com:indirizzo IP 192.168.0.100 (server)
  • server2.example.com:indirizzo IP 192.168.0.101 (server)
  • client1.example.com:indirizzo IP 192.168.0.102 (client)

Tutti e tre i sistemi dovrebbero essere in grado di risolvere i nomi host degli altri sistemi. Se ciò non può essere fatto tramite DNS, dovresti modificare il file /etc/hosts in modo che appaia come segue su tutti e tre i sistemi:

vi /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   client1.example.com     client1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

(È anche possibile utilizzare indirizzi IP invece di nomi host nella configurazione seguente. Se preferisci utilizzare indirizzi IP, non devi preoccuparti se i nomi host possono essere risolti o meno.)

2 Configurazione dei server GlusterFS

server1.example.com/server2.example.com:

GlusterFS è disponibile come pacchetto per Debian Wheezy, quindi possiamo installarlo come segue:

apt-get install glusterfs-server

Il comando

glusterfsd --version

ora dovrebbe mostrare la versione GlusterFS che hai appena installato (3.2.7 in questo caso):

[email protected]:~# glusterfsd --version
glusterfs 3.2.7 costruito il 12 novembre 2012 19:30:08
Revisione del repository:git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA.
È possibile ridistribuire copie di GlusterFS secondo i termini del GNU General Public License.
[email protected]:~#

Se utilizzi un firewall, assicurati che le porte TCP 111, 24007, 24008, 24009-(24009 + numero di mattoni su tutti i volumi) siano aperte su server1.example.com e server2.example.com.

Quindi dobbiamo aggiungere server2.example.com al pool di archiviazione attendibile (si noti che sto eseguendo tutti i comandi di configurazione GlusterFS da server1.example.com, ma puoi anche eseguirli da server2.example.com perché la configurazione è replicato tra i nodi GlusterFS - assicurati solo di utilizzare i nomi host o gli indirizzi IP corretti):

server1.example.com:

Su server1.example.com, esegui

gluster peer probe server2.example.com

[email protetta]:~# gluster peer probe server2.example.com
Esame riuscito
[email protetto]:~#

Lo stato del pool di archiviazione attendibile dovrebbe ora essere simile a questo:

gluster peer status

[email protetta]:~# stato del peer gluster
Numero di peer:1

Nome host:server2.example.com
Uuid:d19cb707-7b23-4d11-8e9c-183cd0a18d96
Stato:peer in cluster (connesso)
[email protected]:~#

Quindi creiamo la condivisione denominata testvol con due repliche (si noti che il numero di repliche è uguale al numero di server in questo caso perché vogliamo impostare il mirroring) su server1.example.com e server2.example.com nel /data directory (verrà creata se non esiste):

gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data

[email protected]:~# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
La creazione del volume testvol è riuscita. Avvia il volume per accedere ai dati.
[email protected]:~#

Avvia il volume:

gluster volume start testvol

È possibile che il comando precedente ti dica che l'azione non è andata a buon fine:

[email protected]:~# gluster volume start testvol
L'avvio di testvol volume non è riuscito
[email protected]:~#

In questo caso dovresti controllare l'output di...

server1.example.com/server2.example.com:

netstat -tap | grep glusterfsd

su entrambi i server.

Se ottieni un output in questo modo...

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24009*:*Ascolta 1548 /Glusterfsd
TCP 0 0 localhost.localdom:1019 localhost.localdo:24007 stabilito 1548 /glusterfsd
[e -mail protetto]:~ #

... va tutto bene, ma se non ottieni alcun output...

[email protetta]:~# netstat -tap | grep glusterfsd
[email protetta]:~#

... riavvia il demone GlusterFS sul server corrispondente (server2.example.com in questo caso):

server2.example.com:

/etc/init.d/glusterfs-server restart

Quindi controlla l'output di...

netstat -tap | grep glusterfsd

... di nuovo su quel server - ora dovrebbe apparire così:

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24010*:*Ascolta 1458 /Glusterfsd
TCP 0 0 localhost.localdom:1021 localhost.localdo:24007 stabilito 1458 /glusterfsd
[e -mail protetto]:~ #

Ora torniamo a server1.example.com:

server1.example.com:

Puoi controllare lo stato del volume con il comando

gluster volume info
[email protected]:~# gluster volume info

Nome volume:testvol
Tipo:replica
Stato:avviato
Numero di mattoni:2
Tipo di trasporto:tcp
Mattoni:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
[email protetta]:~#

Per impostazione predefinita, tutti i client possono connettersi al volume. Se desideri concedere l'accesso solo a client1.example.com (=192.168.0.102), esegui:

gluster volume set testvol auth.allow 192.168.0.102

Si noti che è possibile utilizzare caratteri jolly per gli indirizzi IP (come 192.168.*) e che è possibile specificare più indirizzi IP separati da virgola (es. 192.168.0.102,192.168.0.103).

Le informazioni sul volume dovrebbero ora mostrare lo stato aggiornato:

gluster volume info
[email protected]:~# gluster volume info

Nome volume:testvol
Tipo:replica
Stato:avviato
Numero di mattoni:2
Tipo di trasporto:tcp
Mattoni:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
Opzioni riconfigurate:
auth.allow:192.168.0.102
[email protected]:~#

3 Configurazione del client GlusterFS

client1.example.com:

Sul client, possiamo installare il client GlusterFS come segue:

apt-get install glusterfs-client

Quindi creiamo la seguente directory:

mkdir /mnt/glusterfs

Questo è tutto! Ora possiamo montare il filesystem GlusterFS su /mnt/glusterfs con il seguente comando:

mount.glusterfs server1.example.com:/testvol /mnt/glusterfs

(Invece di server1.example.com puoi anche usare server2.example.com nel comando sopra!)

Ora dovresti vedere la nuova condivisione negli output di...

mount

[email protetta]:~# mount
sysfs su /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev su /dev tipo devtmpfs (rw,relatime,size=10240k,nr_inodes=126813,mode=755)
devpts su /dev/pts tipo devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=102704k,mode=755)
/dev/mapper/server1-root on / digita ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
tmpfs on /run/lock digita tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k )
tmpfs su /run/shm tipo tmpfs (rw,nosuid,nodev,noexec,relatime,size=205400k)
/dev/sda1 su /boot tipo ext2 (rw,relatime,errors=continue)
rpc_pipefs su /var/lib/nfs/rpc_pipefs tipo rpc_pipefs (rw,relatime)
server1.example.com:/testvol su /mnt/glusterfs tipo fuse.glusterfs (rw,relatime,user_id=0 ,group_id=0,default_permissions,allow_other,max_read=131072)
fusectl su /sys/fs/fu se/connections type fusectl (rw,relatime)
[email protected]:~#

... e...

df -h

[Email Protected]:~#df -h
Dimensione del filesystem utilizzato Disponibile Uso%montato su
rootfs 29g 1,2g 26g 5% /
UDEV 10m 0 10m 0% /dev
TMPFS 101M 240K 101M 1%/run
/dev/mapper/server1-root 29g 1,2g 26g 5%/
tmpfs 5,0m 0 5,0m 0%/run/blocco
tmpfs 201m 0 201M   0% /run/shm
/dev/sda1                    228M   18M  199M   9% /boot
server1.example.com:/testvol   29G  1.2G   26G   5% /mnt/glusterfs
[email protetto]:~#

Invece di montare manualmente la condivisione GlusterFS sul client, è possibile modificare /etc/fstab in modo che la condivisione venga montata automaticamente all'avvio del client.

Apri /etc/fstab e aggiungi la seguente riga:

vi /etc/fstab  
[...]
server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

(Di nuovo, invece di server1.example.com puoi anche usare server2.example.com!)

Per verificare se il tuo /etc/fstab modificato funziona, riavvia il client:

reboot 

Dopo il riavvio, dovresti trovare la condivisione negli output di...

df -h 

... e...

mount

4 Test

Ora creiamo alcuni file di prova sulla condivisione GlusterFS:

client1.example.com:

tocca /mnt/glusterfs/test1
tocca /mnt/glusterfs/test2

Ora controlliamo la directory /data su server1.example.com e server2.example.com. I file test1 e test2 dovrebbero essere presenti su ogni nodo:

server1.example.com/server2.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 0
-rw-r--r-- 1 radice radice 0 30 settembre 17:53 test1
-rw-r- -r-- 1 radice radice 0 30 settembre 17:53 test2
[email protetta]:~#

Ora chiudiamo server1.example.com e aggiungiamo/eliminiamo alcuni file sulla condivisione GlusterFS su client1.example.com.

server1.example.com:

shutdown -h now

client1.example.com:

touch /mnt/glusterfs/test3
touch /mnt/glusterfs/test4
rm -f /mnt/glusterfs/test2

Le modifiche dovrebbero essere visibili nella directory /data su server2.example.com:

server2.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 8
-rw-r--r-- 1 radice radice 0 30 settembre 17:53 test1
-rw-r- -r-- 1 radice radice 0 30 settembre 17:54 test3
-rw-r--r-- 1 radice radice 0 30 settembre 17:54 test4
[email protetta]:~#

Avviamo nuovamente server1.example.com e diamo un'occhiata alla directory /data:

server1.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 0
-rw-r--r-- 1 radice radice 0 30 settembre 17:53 test1
-rw-r- -r-- 1 radice radice 0 30 settembre 17:53 test2
[email protetta]:~#

Come vedi, server1.example.com non ha notato le modifiche avvenute mentre era inattivo. Questo è facile da risolvere, tutto ciò che dobbiamo fare è invocare un comando di lettura sulla condivisione GlusterFS su client1.example.com, ad esempio:

client1.example.com:

ls -l /mnt/glusterfs/

[email protetta]:~# ls -l /mnt/glusterfs/
totale 8
-rw-r--r-- 1 radice radice 0 30 settembre 17:53 test1
-rw -r--r-- 1 radice radice 0 30 settembre 17:54 test3
-rw-r--r-- 1 radice radice 0 30 settembre 17:54 test4
[email protetta]:~ #

Ora dai un'occhiata alla directory /data su server1.example.com e dovresti vedere che le modifiche sono state replicate su quel nodo:

server1.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 0
-rw-r--r-- 1 radice radice 0 30 settembre 17:53 test1
-rw-r- -r-- 1 radice radice 0 30 settembre 17:54 test3
-rw-r--r-- 1 radice radice 0 30 settembre 17:54 test4
[email protetta]:~#

  • GlusterFS:http://www.gluster.org/
  • Documentazione di GlusterFS 3.2:http://download.gluster.com/pub/gluster/glusterfs/3.2/Documentation/AG/html/index.html
  • Debian:http://www.debian.org/

Debian
  1. Archiviazione ad alta disponibilità con GlusterFS su Debian 8 - Mirroring su due server di archiviazione

  2. Archiviazione distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

  3. Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

  4. Striping su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

  5. Replica automatica dei file (mirror) su due server di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

Archiviazione ad alta disponibilità con GlusterFS su CentOS 7 - Mirroring su due server di archiviazione

Creazione di un server di archiviazione autonomo simile a NFS con GlusterFS 3.2.x su Debian Wheezy

Striping su quattro nodi di archiviazione con GlusterFS 3.2.x su CentOS 6.3

Archiviazione distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su CentOS 6.3

Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su CentOS 6.3

Archiviazione ad alta disponibilità con GlusterFS su Fedora 12 - Replica automatica dei file (mirror) su due server di archiviazione