Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Storage distribuito in quattro nodi dell’archiviazione con GlusterFS 3.2. x su CentOS 6.3

In questa esercitazione viene illustrato come combinare quattro server di archiviazione singola (in esecuzione CentOS 6.3) a un server di archiviazione di grandi dimensioni (storage distribuito) con GlusterFS. Il sistema di client (anche CentOS 6.3) sarà in grado di accedere l’archiviazione come se fosse un filesystem locale. GlusterFS è un cluster file system in grado di scalare a parecchi peta-byte. Aggrega vari mattoni di deposito sopra Infiniband RDMA o TCP/IP di interconnessione in un unico sistema di file di rete di grandi dimensioni parallele. Mattoni di deposito possono essere fatto di qualsiasi hardware commodity come server x86_64 con SATA-II RAID e Infiniband HBA.

Siete pregati di notare che questo tipo di archiviazione (storage distribuito) non fornisce alcuna funzionalità di elevata disponibilità, come sarebbe il caso con l’archiviazione replicata.

Io non rilasciano alcuna garanzia che questo funziona per voi!

 

1 Nota preliminare

In questo tutorial io uso cinque sistemi, quattro server e un client:

  • Server1: indirizzo IP 192.168.0.100 (server)
  • Server2: indirizzo IP 192.168.0.101 (server)
  • Server3.example.com: indirizzo IP 192.168.0.102 (server)
  • Server4.example.com: indirizzo IP 192.168.0.103 (server)
  • CLIENT1: indirizzo IP 192.168.0.104 (client)

Tutti i cinque sistemi dovrebbero essere in grado di risolvere i nomi host gli altri sistemi. Se questo non può essere fatto tramite DNS, si deve modificare il file/etc/hosts modo che appaia come segue in tutti i cinque sistemi:

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   server3.example.com     server3
192.168.0.103   server4.example.com     server4
192.168.0.104   client1.example.com     client1

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

(È anche possibile utilizzare indirizzi IP anziché nomi host nella configurazione seguente. Se si preferisce utilizzare gli indirizzi IP, non avete di preoccuparsi se i nomi degli host può essere risolto o meno.)

 

2 abilitare i repository aggiuntivi

Server1.example.com/Server2.example.com/Server3.example.com/Server4.example.com/CLIENT1.example.com:

Innanzitutto importiamo le chiavi GPG per pacchetti software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Quindi abbiamo abilitare il repository di EPEL6 sui nostri sistemi di CentOS:

rpm --import https://fedoraproject.org/static/0608B895.txt

CD/tmp
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm – ivh epel-rilascio-6-7.noarch.rpm

yum install yum-priorities

Modificare /etc/yum.repos.d/epel.repo

vi /etc/yum.repos.d/epel.repo

… e aggiungere la riga priorità = 10 alla sezione [epel] :

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]

 

3 impostare i server di GlusterFS

Server1.example.com/Server2.example.com/Server3.example.com/Server4.example.com:

GlusterFS è disponibile come pacchetto per EPEL, pertanto possiamo installare come segue:

yum install glusterfs-server

Creare i collegamenti di avvio del sistema per il demone Gluster e avviarlo:

chkconfig – livelli 235 glusterd su
/etc/init.d/glusterd inizio

The command

glusterfsd --version

should now show the GlusterFS version that you’ve just installed (3.2.7 in this case):

[root@server1 ~] # glusterfsd – versione
GlusterFS 3.2.7 costruito su 11 giugno 2012 13:22:28
Revisione di repository: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc < http://www.gluster.com>
GlusterFS viene fornito con assolutamente nessuna garanzia.
È possibile ridistribuire copie di GlusterFS sotto i termini della GNU General Public License.
[root@server1 ~]#

Se si utilizza un firewall, assicurarsi che porte TCP 111, 24007, 24008, 24009-(24009 + numero di mattoni attraverso tutti i volumi) è aperto su Server1Server2server3.example.comserver4.example.com .

Poi dobbiamo aggiungere Server2server3.example.comserver4.example.com al pool di archiviazione attendibile (si prega di notare che sono in esecuzione tutti i comandi di configurazione GlusterFS da Server1ma è pure possibile eseguirli da Server2 o server3.example.com o server4.example.com perché la configurazione è repliacted tra i nodi di GlusterFS – solo assicurarsi di utilizzare la corretti hostname o IP indirizzi):

Server1:

Il Server1, eseguire

gluster peer sonda Server2
gluster peer sonda server3.example.com
gluster peer sonda server4.example.com

Output dovrebbe essere come segue:

[root@server1 ~] # gluster peer sonda Server2
Successo della sonda
[root@server1 ~]#

Lo stato del pool di archiviazione attendibile dovrebbe essere simile al seguente:

gluster peer status

[root@server1 ~] # gluster stato di peer
Numero di coetanei: 3

Hostname: Server2
UUID: da79c994-eaf1-4c1c-a136-f8b273fb0c98
Stato: Peer in Cluster (connesso)

Hostname: server3.example.com
UUID: 3e79bd9f-a4d5-4373-88e1-40f12861dcdd
Stato: Peer in Cluster (connesso)

Hostname: server4.example.com
UUID: c6215943-00f3-492f-9b69-3aa534c1d8f3
Stato: Peer in Cluster (connesso)
[root@server1 ~]#

Successivamente creiamo la quota distribuita denominata testvol su Server1Server2server3.example.comserver4.example.com nella directory /data (questo sarà creata se non esiste):

gluster volume create testvol transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data

[root@server1 ~] # gluster volume creare testvol trasporto tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data
Creazione di volume testvol ha avuto successo. Si prega di iniziare il volume per accedere ai dati.
[root@server1 ~]#

Avviare il volume:

gluster volume start testvol

È possibile che il comando qui sopra indica che l’azione non è riuscita:

[root@server1 ~] # gluster volume iniziare testvol
A partire testvol volume è rimasta soccombente
[root@server1 ~]#

In questo caso si dovrebbe controllare l’output di…

Server1.example.com/Server2.example.com/Server3.example.com/Server4.example.com:

netstat -tap | grep glusterfsd

su entrambi i server.

Se si ottiene un output come questo…

[root@server1 ~] # netstat-toccare | grep glusterfsd
TCP 0 0 *: 24009 *: * LISTEN 1365/glusterfsd
TCP 0 0 localhost:1023 localhost:24007 stabilito 1365/glusterfsd
TCP 0 0 server1.example.com:24009 server1.example.com:1023 stabilito 1365/glusterfsd
[root@server1 ~]#

… va tutto bene, ma se non si ottiene alcun output…

[root@Server2 ~] # netstat-toccare | grep glusterfsd
[root@Server2 ~]#

[root@Server3 ~] # netstat-toccare | grep glusterfsd
[root@Server3 ~]#

[root@Server4 ~] # netstat-toccare | grep glusterfsd
[root@Server4 ~]#

… riavviare il demone GlusterFS sul server corrispondente (Server2server3.example.comserver4.example.com in questo caso):

Server2.example.com/Server3.example.com/Server4.example.com:

/etc/init.d/glusterfsd restart 

Quindi controllare l’output di…

netstat -tap | grep glusterfsd

… ancora una volta su questi server – ora dovrebbe apparire come questo:

[root@Server2 ~] # netstat-toccare | grep glusterfsd
TCP 0 0 *: 24009 *: * LISTEN 1152/glusterfsd
TCP 0 0 localhost.localdom:1018 localhost.localdo:24007 stabilito 1152/glusterfsd
[root@Server2 ~]#

[root@Server3 ~] # netstat-toccare | grep glusterfsd
TCP 0 0 *: 24009 *: * LISTEN 1311/glusterfsd
TCP 0 0 localhost.localdom:1018 localhost.localdo:24007 stabilito 1311/glusterfsd
[root@Server3 ~]#

[root@Server4 ~] # netstat-toccare | grep glusterfsd
TCP 0 0 *: 24009 *: * LISTEN 1297/glusterfsd
TCP 0 0 localhost.localdom:1019 localhost.localdo:24007 stabilito 1297/glusterfsd
[root@Server4 ~]#

Ora torniamo al Server1:

Server1:

È possibile controllare lo stato del volume con il comando

gluster volume info
[root@server1 ~]# gluster volume info

Nome del volume: testvol
Tipo: distribuire
Stato: avviato
Numero di mattoni: 4
Tipo di trasporto: tcp
Mattoni:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data
[root@server1 ~]#

Per impostazione predefinita, tutti i client possono connettersi al volume. Se si desidera concedere l’accesso a CLIENT1 (= 192.168.0.104) solo, eseguire:

gluster volume set testvol auth.allow 192.168.0.104

Siete pregati di notare che è possibile utilizzare i caratteri jolly per gli indirizzi IP (come 192.168. *) e che è possibile specificare più indirizzi IP separati da virgola (ad esempio 192.168.0.104,192.168.0.105).

Le informazioni di volume dovrebbero ora mostrare lo stato aggiornato:

gluster volume info
[root@server1 ~]# gluster volume info

Nome del volume: testvol
Tipo: distribuire
Stato: avviato
Numero di mattoni: 4
Tipo di trasporto: tcp
Mattoni:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data
Opzioni riconfigurati:
auth.allow: 192.168.0.104
[root@server1 ~]#

4 configurazione del Client di GlusterFS

CLIENT1:

Sul client, possiamo installare il client di GlusterFS come segue:

yum install glusterfs-client

Poi creiamo la directory seguente:

mkdir /mnt/glusterfs

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

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

(Invece di Server1 è possibile anche utilizzare Server2 o server3.example.com o server4.example.com nel comando precedente!)

Ora dovreste vedere la nuova condivisione nelle uscite del…

mount

[root@CLIENT1 ~] # mount
/dev/mapper/vg_client1-LogVol00 su / tipo ext4 (rw)
proc su/proc tipo proc (rw)
digitare sysfs su /sys sysfs (rw)
devpts su/dev/pts tipo devpts (rw, gid = 5, mode = 620)
tmpfs su /dev/shm tmpfs tipo (rw)
/ dev/sda1 su/boot tipo ext4 (rw)
nessuno su /proc/sys/fs/binfmt_misc tipo binfmt_misc (rw)
sunrpc su /var/lib/nfs/rpc_pipefs tipo rpc_pipefs (rw)
Server1.example.com:/testvol su/mnt/glusterfs digitare fuse.glusterfs (rw, allow_other, default_permissions, max_read = 131072)
[root@CLIENT1 ~]#

… e…

df -h

[root@CLIENT1 ~] # df -h
Dimensione filesystem usato approfitta uso % montato su
/dev/mapper/vg_client1-LogVol00
9,7 G 1,7 G 7,5 G 19% /
tmpfs 499M. 499M 0 0% / dev/shm
/ dev/sda1 504M 39M 440M 9% / boot
Server1.example.com:/testvol
116G 4,2 G 106G 4% / mnt/glusterfs
[root@CLIENT1 ~]#

Invece di montare che il GlusterFS condividere manualmente sul client, è possibile modificare/etc/fstab in modo che la condivisione viene montata automaticamente quando si avvia il client.

Aprire/etc/fstab e aggiungere la seguente riga:

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

(Ancora una volta, anziché Server1 è possibile anche utilizzare Server2 o server3.example.com o server4.example.com!)

Per verificare se il proprio modificate/etc/fstab sta lavorando, è necessario riavviare il client:

reboot 

Dopo il riavvio, si dovrebbe trovare la condivisione nelle uscite del…

df -h 

… e…

mount

 

5 collaudo

Ora andiamo a creare alcuni file di prova per la condivisione di GlusterFS:

CLIENT1:

tocco /mnt/glusterfs/test1
tocco /mnt/glusterfs/test2
tocco /mnt/glusterfs/test3
tocco /mnt/glusterfs/test4
tocco /mnt/glusterfs/test5
tocco /mnt/glusterfs/test6

Ora controlliamo la directory/dati su Server1Server2server3.example.comserver4.example.comSi noterà che ogni nodo di archiviazione detiene solo una parte del file/directory che costituiscono la quota di GlusterFS sul client:

server1.example.com:

ls -l /data

[root@server1 ~]# ls -l /data
total 0
-rw-r–r– 1 root root 0 2012-12-17 14:26 test1
-rw-r–r– 1 root root 0 2012-12-17 14:26 test2
-rw-r–r– 1 root root 0 2012-12-17 14:26 test5
[root@server1 ~]#

server2.example.com:

ls -l /data

[root@server2 ~]# ls -l /data
total 0
-rw-r–r– 1 root root 0 2012-12-17 14:26 test4
[root@server2 ~]#

server3.example.com:

ls -l /data

[root@server3 ~]# ls -l /data
total 0
-rw-r–r– 1 root root 0 2012-12-17 14:26 test6
[root@server3 ~]#

server4.example.com:

ls -l /data

[root@Server4 ~] # ls -l/dati
totale 0
-rw-r – r-1 root root 0 2012-12-17 14:26 test3
[root@Server4 ~]#

 

  • GlusterFS: http://www.gluster.org/
  • GlusterFS 3.2 documentazione: http://download.gluster.com/pub/gluster/glusterfs/3.2/Documentation/AG/html/index.html
  • CentOS: http://www.centos.org/

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp