Questo articolo descrive come aggiungere e rimuovere i server GlusterFS dall'array di server.
Crea un nuovo server
Usa il nova boot
comando dell'articolo precedente per creare un server chiamato web3:
nova boot --image bb02b1a3-bc77-4d17-ab5b-421d89850fca --flavor performance1-4 web3
Puoi anche utilizzare il pannello di controllo di Rackspace Cloud per creare il nuovo server.
Aggiungi il server alla rete personalizzata Rackspace
Nell'articolo precedente, hai aggiunto una rete personalizzata Rackspace.
-
Ottieni l'Universal Unique Identifer (UUID) della rete utilizzando il seguente
nova
comando:nova network-list
-
Dopo aver ottenuto l'UUID, associalo al nuovo host.
Sostituisci
UUID
nel comando seguente con l'UUID effettivo (ad esempio,5492de89-1497-4aa0-96eb-bcdd55e1195c1
).web03
è il nome host del server che vuoi aggiungere.nova network-associate-host UUID web03
Puoi anche utilizzare il pannello di controllo di Rackspace Cloud per associare un server alla tua rete esistente.
Quando hai finito, il nuovo server dovrebbe avere l'indirizzo IP 192.168.0.3 sull'interfaccia /dev/eth3
. Questo è l'indirizzo che GlusterFS usa per comunicare con l'altro server.
Formatta la partizione e installa GlusterFS
Utilizzare i seguenti passaggi per formattare la partizione del server e installare GlusterFS:
-
Usa Secure Shell (SSH) per accedere al server.
-
Utilizzando le istruzioni dell'articolo precedente, installa GlusterFS e formatta i
bricks
partizione come segue:apt-get update apt-get install -y glusterfs-server glusterfs-client apt-get install -y xfsprogs mkfs.xfs /dev/xvde1 mkdir /srv/.bricks echo /dev/xvde1 /srv/.bricks xfs rw 0 1 >> /etc/fstab mount /srv/.bricks ufw allow in on eth2
Incorpora il nuovo mattone nel volume Gluster
-
Usa SSH per accedere a
web01
oweb02
. -
Il comando seguente indica al volume GlusterFS di considerare attendibile il nuovo server:
root@web02 :~# gluster peer probe 192.168.0.3 peer probe: success
-
Aggiungi il mattone al volume utilizzando i seguenti comandi:
root@web02 :~# gluster volume add-brick www replica 3 192.168.0.3:/srv/.bricks/www volume add-brick: success
Il comando include le seguenti parti:
gluster
- Il comando è per GlusterFS.volume
- Il comando è relativo a un volume.add-brick
- Stai aggiungendo un mattone al volume.www
- Questo è il nome del volume.replica 3
- Dopo aver aggiunto questo brick, il volume conserva almeno tre copie di ogni file, una copia per brick e, in questo caso, una copia per server (perché su ogni server c'è solo un brick).192.168.0.3:/srv/.bricks/www
- Questa parte del comando è l'indirizzo IP del server Gluster, seguito dal percorso assoluto in cui sono archiviati i dati del mattone.
Strategie di archiviazione del volume
GlusterFS offre i seguenti tipi di strategie di archiviazione dei volumi:
- Distribuito - Un file è su un mattone e il file successivo è sul mattone successivo. Questa strategia ti dà più spazio perché il tuo volume è la somma di tutti i mattoni.
- Replica (Consigliato ) - Ogni file viene copiato su ogni server.
- A righe - I file vengono tagliati in blocchi e un blocco viene scritto sul primo mattone, un blocco viene scritto sul secondo mattone e così via.
Puoi anche combinare strategie, ad esempio replicate e distribuite, come illustrato nell'esempio seguente:
gluster volume create www replica 2 transport tcp
192.168.0.1:/srv/.bricks/www 192.168.0.2:/srv/.bricks/www
192.168.0.3:/srv/.bricks/www 192.168.0.4:/srv/.bricks/www
Il numero di replica è il numero di mattoncini che compongono un set di repliche, ovvero contengono una copia completa dei file. Nell'esempio precedente 192.168.0.1
e 192.168.0.2
conserva una copia completa dei file, così come 192.168.0.3
e 192.168.0.4
. L'ordine dei mattoni è significativo. Se lo hai ordinato 1,3,2,4, allora 1 e 3 e 2 e 4 conterrebbero i file completi. Se 1 e 2 non funzionassero, perderesti metà dei tuoi file e avresti due copie dell'altra metà.
La combinazione di un volume replicato e distribuito ti offre un po' di velocità in più e più spazio in cambio della sicurezza dei dati.
Una combinazione di volumi con striping e replicati è consigliata solo quando hai file più grandi di un mattone o molti file di grandi dimensioni che stanno subendo molte operazioni di I/O.
Visualizza lo stato dei server
I seguenti comandi ti aiutano a scoprire di più su cosa sta succedendo nel tuo cluster. Utilizzerai questi comandi nei successivi articoli di GlusterFS.
stato del peer
Se esegui il seguente comando da qualsiasi server, mostra tutti i server peer di cui è a conoscenza:
root@web01:~# gluster peer status
Number of Peers: 2
Hostname: 192.168.0.3
Uuid: ba502dc2-447f-466a-a732-df989e71b551
State: Peer in Cluster (Connected)
Hostname: 192.168.0.2
Uuid: 56e02356-d2c3-4787-ae25-6b46e867751a
State: Peer in Cluster (Connected)
stato del volume
Il comando seguente è un utile comando per la risoluzione dei problemi. Fornisce informazioni su tutti i volumi GlusterFS e le attività in coda e in corso.
root@web03:~# gluster volume status
Status of volume: www
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.0.2:/srv/.bricks/www 49152 Y 13673
Brick 192.168.0.1:/srv/.bricks/www 49152 Y 10249
Brick 192.168.0.3:/srv/.bricks/www 49153 Y 13783
NFS Server on localhost 2049 Y 13793
Self-heal Daemon on localhost N/A Y 13800
NFS Server on 192.168.0.2 2049 Y 13900
Self-heal Daemon on 192.168.0.2 N/A Y 13907
NFS Server on 192.168.0.1 2049 Y 10286
Self-heal Daemon on 192.168.0.1 N/A Y 10293
There are no active volume tasks
Rimuovi un mattone
È possibile ridurre i volumi in base alle esigenze mentre il cluster è online e disponibile. Usa il seguente comando per rimuovere un mattone:
# gluster volume remove-brick <volName> <brickName> start
Esecuzione di remove-brick
con l'start
l'opzione attiva automaticamente un'operazione di ribilanciamento per migrare i dati dai mattoni rimossi al resto del volume.
L'esempio seguente rimuove il mattone 2:
root@web01:~# gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www start
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit force: success
Questo comando dice a GlusterFS che www
volume conserverà ora solo 2 copie di ogni file. Ti avverte che potresti perdere dati e ti chiede di continuare.
Se vuoi rimuovere un mattone su un volume distribuito, dovresti invece eseguire il seguente comando:
root@web01:~# gluster volume remove-brick www 192.168.0.2:/srv/.bricks/www start
Puoi visualizzare lo stato del remove-brick
operazione utilizzando il seguente comando:
root@web01:~# watch gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www status
Aggiungi nuovamente un mattone
Questa sezione spiega come aggiungere nuovamente un mattone.
Prova ad aggiungere nuovamente web02 al volume, come segue:
root@web02:~# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: failed:
E 'fallito. Guarda i log su web02 per vedere perché il comando non è riuscito:
root@web02:/srv/.bricks# tail /var/log/glusterfs/*log -f | grep E
[2014-05-25 00:19:04.954410] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:19:12.958620] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:40:46.923747] E [glusterd-utils.c:5377:glusterd_is_path_in_use] 0-management: /srv/.bricks/www or a prefix of it is already part of a volume
[2014-05-25 00:40:46.923789] E [glusterd-op-sm.c:3719:glusterd_op_ac_stage_op] 0-management: Stage failed on operation 'Volume Add brick', Status : -1
Il problema è che /srv/.bricks/www
contiene ancora i dati dell'epoca in cui web02 era un membro del volume.
Hai bisogno di un posto pulito dove archiviare i dati. Il modo più semplice per ripulire è rimuovere tutti i dati utilizzando il seguente comando:
root@web02:~# rm -rf /srv/.bricks/www
Avviso :fare attenzione a eseguire questa azione sull'host corretto (web02, che al momento è fuori volume). Se commetti un errore, il prossimo articolo ti mostra come recuperare. Le azioni alternative sono spostare il www
directory fuori mano, o per aggiungere il mattone usando un'altra directory, come www2
.
Ora che hai una posizione pulita in cui riporre il mattone, l'aggiunta del mattone è riuscita:
root@web01:/srv# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: success
Passaggi successivi
- Come eseguire il ripristino da un server guasto in un array GlusterFS