20 maggio 2010

Linux - Lustre - Clustering e Failover

Nel precendete articolo abbiamo implementato una soluzione con un singolo server Lustre, chiaramente questa è una soluzione puramente didattica, poiche' nella realtà dobbiamo prevedere un alta affidabilità del sistema in modo tale da garantire ai Client la continua accessibilità.

Lustre non ha alcun sistema di alta affidabilità, ma si affida a software di clusterware per implementarla, come ad esempio Heartbeat o meglio PaceMaker. Molti clienti però adottando il sistema operativo Red Hat preferiscono utilizzare Red Hat Cluster Suite per l'alta affidabilità, quindi adotteremo quest'ultimo come infrastruttura di clusterware.

Dobbiamo dividere l'implementazione in due parti, la prima riguarda la configurazione da fare al cluster Lustre per dichiarare dei volumi in Failover, la seconda riguarda la configurazione di RHCS.



Dallo schema in figura possiamo desumere che la configurazione sarà effettuata fra due server (192.168.2.20 e 192.168.2.22) sui cui avremo installato preventivamente i pacchetti lustre lato server. La configurazione finale sarà attiva/attiva cioè sul primo nodo denominato cln01 saranno presenti i servizi MGS, MDS e OST0, mentre nel secondo nodo deominato cln02 sarà presente l'OST1. Questo permetterà al client non solo di accedere al filesystem "prova" da due canali iSCSI paralleli, ma anche da due server paralleli aumentando ancora di più il trhoughput.

Configuriamo il nostro filesystem con i seguenti comandi, l'opzione reformat permette di sovrascrivere eventuali precedenti configurazioni:


  • dal nodo1: mkfs.lustre --mgs --failnode=192.168.2.22 --reformat /dev/sdb1
  • dal nodo1: mkfs.lustre  --reformat --mdt --mgsnode=192.168.2.20 --fsname=prova --failover=192.168.2.22 /dev/sdb4
  • dal nodo1: mkfs.lustre  --reformat --ost --mgsnode=192.168.2.20 --failover=192.168.2.22 --fsname=prova /dev/sdb2
  • dal nodo2: mkfs.lustre  --reformat --ost --mgsnode=192.168.2.20 --failover=192.168.2.20 --fsname=prova /dev/sdb3


Per avviare i servizi di lustre sarà sufficiente montare i relativi filesystem, prima ci creiamo l'alberatura di mount su entrambi i nodi:

  • mkdir -p /lustre/mgs_prova
  • mkdir -p /lustre/mdt_prova
  • mkdir -p /lustre/ost0_prova
  • mkdir -p /lustre/ost1_prova

e quindi montiamo:

  • dal nodo1: mount -t lustre /dev/sdb1 /lustre/mgs_prova
  • dal nodo1: mount -t lustre /dev/sdb4 /lustre/mdt_prova
  • dal nodo1: mount -t lustre /dev/sdb2 /lustre/ost0_prova
  • dal nodo2: mount -t lustre /dev/sdb3 /lustre/ost1_prova


dal client la nuova stringa di connessione sarà:

modprobe lustre
mount -t lustre 192.168.2.20@tcp:192.168.2.22@tcp:/prova /prova

Facciamo una prova di switch ad esempio del'ost0 dal nodo1 al nodo2, tenendo sempre il client montato:

dal nodo1: umount -fl /lustre/ost0_prova

attendiamo qualche secondo

dal nodo2: mount -t lustre /dev/sdb2 /lustre/ost0_prova

attendiamo qualche secondo e dal client potremo continuare tranquillamente ad accedere ai nostri file. Nella prossima parte potremo automattizare il processo di failover utilizzando RHCS.


Devo ringraziare per la collaborazione Roberto.

Nessun commento: