Red Hat Cluster Suite (RHCS) ?a soluzione che RedHat propone per cluster a 2 o pi?di di livello enterprise.
La Suite, introdotta con RHEL 2 e poi evoluta con le successive versioni, fornisce diversi componenti:
- Cluster Infrastructure (cman, ccsd, fenced) con cui viene formato il cluster, si gestisce la comunicazione fra i nodi e la determinazione di un quorum sufficente a formare il cluster , la sincronizzazione della configurazione (file /etc/cluster/cluster.conf
), il fencing dei nodi erranti e il locking per l'accesso alle risorse condivise (tipicamente i file system).
- High-availability Service Management (rgmanager) con cui qualsiasi applicazione pu?sere utilizzata in cluster con un cold failover
- Tool di configurazione e gestione: system-config-cluster (GUI) e conga (applicazione web) pi?ri comandi shell (cman_tool, ccs_tool, fence_tool, clusvcadm)
Ai suddetti componenti di base si aggiungono:
- GFS (Global File System), file system distribuito, adatto a cluster i cui nodi devono accedere contemporaneamente ai dati
- CLVM (Clustered Logical Volume Manages), adattamento di LVM per uso su dischi condivisi fra i nodi di un cluster.
- GNBD (Global Network Block Device) soluzione di replica via rete di device a blocchi, analoga a DRBD.
All'interno della Cluster Suite RedHat fornisce anche una soluzione di Load Balancing in alta affidabilit?composta da Heartbeat, Linux Virtual Server (LVS) e Piranha.
Un elenco di riferimento dei comandi utili per la gestione di un cluster Red Hat
Stato del cluster
clustat
- Visualizza stato risorse e nodi del cluster
clustat -i 1
- Visualizza in modo continuativo, con un refresh di 1 secondo, lo stato del cluster
cman_tool status
- Visualizza lo stato di cman
ccs_tool lsnode
- Info sui nodi del cluster
cman_tool nodes
- Info sui nodi del cluster
Gestione dei servizi cluster
clusvcadm -e servizio -m nodo
clusvcadm -e web -m node01
(attiva il servizio cluster web sul nodo 01)
clusvcadm -e web
(attiva il servizio cluster web sul nodo locale)
clusvcadm -d web
(disabilita il servizio cluster web - a volte in caso di servizio in stato failed, ?ecessario digitare questo comando pi?lte per mettere il servizio in stato disabled per poi poterlo riattivare)
clusvcadm -r web -m node01
(riloca il servizio cluster web sul nodo 02)
clusvcadm -l
(fa un lock del resource manager, bloccando ogni attivit?ui servizi. Utile pruima di uno shutdown di tutti i nodi del cluster)
Gestione quorum
cman_tool expected -e 3
(imposta a 3 voti il quorum - utile per straordinaria amministrazione quando si vuole abbassare il quorum)
cman_tool votes -v 2
(imposta a 2 il numero di voti per l'host corrente)
Entrare e uscire dal cluster
cman_tool join
- esegue il join del nodo locale al cluster
cman_tool leave
- Il nodo locale lascia il cluster
Update configurazione
Utilizzare system-config-cluster o conga, altrimenti, se si fa a mano, aumentare il numero di versione della configurazione e poi:
ccs_tool update /etc/cluster/cluster.conf
cman_tool version -r 5
(aggiorna il cluster alla versione 5 della configurazione, necessario solo su RHCS 4)
Una breve rassegna dei comandi principali legati all'utilizzo di GFS (Global File System)
Formattazione e uso di GFS
In fase di formattazione di un file system GFS si devono indicare diverse informazioni:
- il nome della lock table (opzione -t
) che deve contenere il nome del cluster che utilizza il file system (qui clus424) e il nome del file system (qui data02, e' arbitrario e server per distinguere diversi file system nello stesso cluster);
- il tipo di lock (opzione -p
, nel dubbio usare lock_dlm, in alternativa se si usa GFS su un solo nodo si pud' indicare -p lock_nolock . L'opzione -p lock_gulm e' ormai in disuso);
- il numero di giornali previsti (opzione -j
, ricordarsi che bisogna prevedere almeno un giornale per ogni nodo che dovra' ccedere al file system, per cui con un cluster a 4 nodi, si deve specificare almeno -j 4)
- le loro dimensioni (-J
, valore minimo 32 Mb, default 128 Mb)
- la partizione o il logical volume da formattare (qui /dev/mapper/shared01-data02 )
gfs_mkfs -p lock_dlm -t clus424:data02 -J 32 -j 2 /dev/mapper/shared01-data02
Una volta formattato il file system puo' essere montato normalmente:
mount -t gfs /dev/shared01/data02 /mnt
Raccolta informazioni
Per visualizzare informazioni dettagliate su un file::
gfs_tool stat /mnt/testo.txt
Per un elenco dei file system GFS correntemente montati:
gfs_tool list
Per visualizzare statistiche su un file system (negli esempi che seguono e' montato su /mnt
). Usare l'opzione -c
per un output continuo:
gfs_tool counters /mnt
Per info sullo spazio usato da un file system montato:
gfs_tool df /mnt
Per visualizzare il superblock di un file system montato:
gfs_tool getsb /mnt
Per visualizzare i parametri di tuning correnti di un file system montato:
gfs_tool gettune /mnt
Aumentare e diminuire giornali e dimensioni file system
Si si aggiungono nodi ad un cluster che gestisce un GFS, puo' essere necessario aggiungere il numero dei giornali presenti sul file system (si ricorda che serve almeno un giornale per nodo). Se non e' piu' disponibile spazio e' necessario prima allargare il file system e poi aggiungere i giornali che servono.
Visualizzare info sui giornali :
gfs_tool jindex /mnt
Aggiungere 2 giornali, per prova (-T
) :
gfs_jadd -j 2 -T -J 32 /mnt
Aggiungere 2 giornali:
gfs_jadd -j 2 -J 32 /mnt
Allargare un file system GFS ( va fatto dopo un comando tipo lvresize/lvextend e dopo l'eventuale aggiunta di nuovi giornali, se necessari) (aggiungere l'opzione -T
per fare solo una prova preliminare) :
gfs_grow -T -v /mnt
Gestione dello spazio disco (Quota)
GFS supporta le quota, secondo un meccanismo proprio, che prevede comandi specifici.
Per impostare un limite a livello di utenti:
gfs_quota limit -u User -l Size -f MountPoint
Per imposta un limite a livello di gruppi:
gfs_quota limit -g Group -l Size -f MountPoint
Esempio (il size, impostato con -l
, e' in Mb, al posto del nome del gruppo e' stato usato il suo GID):
gfs_quota limit -u pippo -l 100 -f /mnt
gfs_quota limit -g 100 -l 50 -f /mnt
Per visuallizare tutti i limiti impostati:
gfs_quota list -f /mnt
Per visualizzare i limiti di un utente:
gfs_quota get -u pippo -f /mnt
Per visualizzare il limite di un gruppo:
gfs_quota get -g users -f /mnt
Le informazioni sulle quote vengono memorizzate in un file sul GFS e non viene aggiornato continuamente ma per default ogni 60 secondi. Tale intervallo puo' essere variato (per per prova si imposta a 90 secondi) con :
gfs_tool settune /mnt quota_quantum 90
Per evitare possibili problemi puo' essere utile sincronizzare le quote su di ogni nodo tramite il comando:
gfs_quota sync -f /mnt
Per impostare il warn quota:
gfs_quota warn -u User -l Size -f MountPoint
gfs_quota warn -g Group -l Size -f MountPoint
Esempi (sempre in Mb):
gfs_quota warn -u utente1 -l 90 -f /mnt
gfs_quota warn -g 100 -l 40 -f /mnt
Di default GFS tiene traccia degli utenti e gruppi per i quali non sono stati impostati i valori di quota. Questo potrebbe rallentare le funzioni del cluster, per disabilitare tale controllo si puo' modificare il parametro quota_account:
gfs_tool settune /mnt quota_account 0
Questo comando deve essere ripeturo ad ogni mount del file system e su ogni nodo.