Sezione precedente
Aggiungi e rimuovi server GlusterFS
Questo articolo mostra i seguenti modi per eseguire il ripristino in caso di guasto di un singolo server:
-
Aggiungi un nuovo server, con un nuovo indirizzo IP, al suo posto (una soluzione meno laboriosa).
-
Aggiungi un nuovo server ma mantieni l'indirizzo IP del server guasto (una soluzione più laboriosa).
Dopo aver completato l'articolo precedente dovresti avere un array GlusterFS con almeno due nodi e sapere come aggiungere ed eliminare nodi.
Prerequisiti
Ai fini di questo articolo, devi essere in esecuzione su un volume Gluster completamente replicato a quattro nodi.
Riempi il tuo array GlusterFS con dati falsi per il test.
Aggiungi un server sostitutivo
In questo scenario, web03 non riesce, ma aggiungi un nuovo nodo con l'indirizzo IP 192.168.0.5 per sostituirlo. Questo metodo è più semplice rispetto all'aggiunta di un nuovo server con lo stesso indirizzo IP del server guasto.
Questo articolo mostrerà due forme di ripristino di emergenza:
- Un singolo nodo si è interrotto e stai aggiungendo un nuovo nodo al suo posto.
- Un singolo nodo si è interrotto, è stato ricostruito e ha mantenuto l'IP:si tratta di più lavoro da risolvere
Aggiungi un nodo sostitutivo
In questo scenario, web03 andrà di nuovo inattivo, ma aggiungerai un nuovo nodo a 192.168.0.5 per sostituirlo. Questo metodo è molto più semplice.
-
Utilizzando uno dei server in esecuzione, aggiungi il nuovo server al cluster:
root@matt:~# gluster peer probe 192.168.0.5 peer probe: success
-
Scambia il mattone guasto con quello nuovo:
root@matt:~# gluster volume replace-brick www 192.168.0.3:/srv/.bricks/www 192.168.0.5:/srv/.bricks/www commit force volume replace-brick: success: replace-brick commit successful
-
Guarisci il sistema:
root@matt:~# gluster volume heal www full Launching Heal operation on volume www has been successful Use heal info commands to check status
-
Ottieni informazioni sullo stato di avanzamento della
heal
operazione:root@matt:~# gluster volume heal www info Gathering Heal info on volume www has been successful ... Brick 192.168.0.4:/srv/.bricks/www Number of entries: 23 /wordpress/wp-admin/upload.php
-
Se stavi eseguendo un sistema distribuito, esegui i seguenti comandi:
root@matt:~# gluster volume rebalance www fix-layout start volume rebalance: www: success: Starting rebalance on volume www has been successful. ID: 0a9719c1-cf04-4161-b3b0-cc6fd8dd9108 root@matt:~# gluster volume rebalance www status Node Rebalanced-files size scanned failures skipped status run time in secs --------- ----------- ----------- ----------- ----------- ----------- ------------ -------------- localhost 0 0Bytes 0 0 0 completed 1.00 localhost 0 0Bytes 0 0 0 completed 1.00 192.168.0.2 0 0Bytes 0 0 0 completed 1.00 192.168.0.4 0 0Bytes 0 0 0 completed 1.00 192.168.0.4 0 0Bytes 0 0 0 completed 1.00 192.168.0.5 0 0Bytes 0 0 0 completed 1.00 volume rebalance: www: success:
Mantieni l'indirizzo IP
In questo scenario, il server web03, con l'indirizzo IP 192.168.0.3, si è bloccato ed è completamente irrecuperabile.
Per ripristinare, costruisci un nuovo server, con lo stesso indirizzo IP , presentalo a GlusterFS come server guasto e lascia che si ripari automaticamente. Quindi riequilibri il volume in GlusterFS.
Fare riferimento agli articoli precedenti per informazioni sulla creazione e la configurazione del server sostitutivo.
Travesti il nuovo server web03 da server guasto
-
Costruisci il nuovo server, installa GlusterFS su di esso e prepara il disco per il mattone.
-
Assegna al server l'UUID peer del server guasto. Per ottenere l'UUID, esegui il seguente comando su uno dei server in esecuzione (come web01):
root@web01:~# grep 192.168.0.3 /var/lib/glusterd/peers/*/var/lib/glusterd/peers/ba502dc2-447f-466a-a732-df989e71b551:hostname1=192.168.0.3
-
Copiare il nome del file (che è l'UUID Web03 originale). Nell'esempio precedente è:
ba502dc2-447f-466a-a732-df989e71b551
. -
Assegna l'UUID del server guasto al nuovo server.
-
Ferma il demone Gluster:
root@web03:~# service glusterfs-server stop glusterfs-server stop/waiting
-
Sostituisci l'UUID del nodo generato con quello copiato nel
glusterd
file di configurazione:root@web03:~# UUID=ba502dc2-447f-466a-a732-df989e71b551 root@web03:~# sed -i "s/\(UUID\)=\(.*\)/\1=$UUID/g" /var/lib/glusterd/glusterd.info root@web03:~# cat /var/lib/glusterd/glusterd.info UUID=ba502dc2-447f-466a-a732-df989e71b551 operating-version=2
Nota: Il
ba502dc2-447f-466a-a732-df989e71b551
UUID è un esempio di UUID; devi sostituirlo con l'UUID del tuo server guasto (come ricordato da web01). -
-
Riavvia il server:
root@web03:~# service glusterfs-server start glusterfs-server start/running, process 10732
Riconfigura i server peer
-
Sul nuovo server, controlla che gli altri server siano visibili:
root@web03:~# gluster peer status peer status: No peers present
-
Se i server peer non sono visibili, devi aggiungerli esplicitamente:
root@web03:~# gluster peer probe 192.168.0.1 peer probe: success root@web03:~# gluster peer probe 192.168.0.2 peer probe: success root@web03:~# gluster peer probe 192.168.0.4 peer probe: success
-
Esegui lo
gluster peer status
comando di nuovo su web03. La risposta dovrebbe essere:State: Accepted peer request (Connected)
-
Riavvia il demone ancora una volta e i server peer dovrebbero essere visibili:
root@web03:~# service glusterfs-server restart glusterfs-server stop/waiting glusterfs-server start/running, process 9123 root@web03:~# gluster peer status Number of Peers: 3 Hostname: 192.168.0.2 Uuid: 177cd473-9421-4651-8d6d-18be3a7e1990 State: Peer in Cluster (Connected) Hostname: 192.168.0.1 Uuid: 8555eac6-de14-44f6-babe-f955ebc16646 State: Peer in Cluster (Connected) Hostname: 192.168.0.4 Uuid: 1681b266-dc31-42e1-ab82-4e220906eda1 State: Peer in Cluster (Connected)
Sincronizza i volumi
-
Controlla lo stato del volume:
root@web03:~# gluster volume status No volumes present
-
Ottieni i volumi da un server peer:
root@web03:~# gluster volume sync 192.168.0.2 all Sync volume may make data inaccessible while the sync is in progress. Do you want to continue? (y/n) y volume sync: success
-
Imposta il file system per il mattone in ordine. Nell'esempio seguente, il mattone è archiviato in /srv/.bricks/www :
root@web03:~# mkdir /srv/.bricks/www
-
Vai su uno dei server in esecuzione, installa
attr
e ottieni l'ID del volume corretto.root@web02:~# apt-get install attr -y ... root@web02:~# getfattr -n trusted.glusterfs.volume-id /srv/.bricks/www getfattr: Removing leading '/' from absolute path names # file: srv/.bricks/www trusted.glusterfs.volume-id=0s42V5HW+LSuyzqotW1jgAhA==
-
Copia la stringa dell'ID del volume negli appunti. Nell'esempio, è
0s42V5HW+LSuyzqotW1jgAhA==
. -
Sul server sostitutivo, applica l'attributo esteso:
root@web03:~# apt-get install attr -y ... root@web03:~# setfattr -n trusted.glusterfs.volume-id -v '0s42V5HW+LSuyzqotW1jgAhA==' /srv/.bricks/www
-
Riavvia il server, quindi ripristina il sistema:
root@matt:~# service glusterfs-server restart glusterfs-server stop/waiting glusterfs-server start/running, process 13318 root@matt:~# gluster volume heal www full Launching Heal operation on volume www has been successful Use heal info commands to check status
-
Ottieni informazioni sullo stato di avanzamento della
heal
operazione. Il nuovo server dovrebbe funzionare come previsto.root@matt:~# gluster volume heal www info Gathering Heal info on volume www has been successful Brick 192.168.0.1:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.2:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.3:/srv/.bricks/www Number of entries: 0 Brick 192.168.0.4:/srv/.bricks/www Number of entries: 0
Conclusione
Ora hai imparato come eseguire il ripristino da un server guasto in un array GlusterFS.