Capitolo 2. Gestione del cluster con CMAN
Una gestione del cluster permette di amministrare il quorum del cluster e la sua appartenenza. CMAN (abbreviazione di cluster manager) esegue una gestione del cluster con l'High Availability Add-On per Red Hat Enterprise Linux. CMAN è un cluster manager distribuito e viene eseguito su ogni nodo del cluster; la gestione del cluster viene distribuita su tutti i nodi nel cluster.
CMAN controlla l'appartenenza tramite il monitoraggio dei messaggi provenienti da altri nodi del cluster. Quando l'appartenenza del cluster cambia, il cluster manager invia una notifica ad altri componenti dell'infrastruttura, i quali a loro volta intraprendono l'azione appropriata. Per esempio, se un nodo del cluster non trasmette alcun messaggio entro un ammontare di tempo prestabilito, il cluster manager rimuove il nodo e comunica agli altri componenti dell'infrastruttura che il nodo in questione non risulta più essere un membro. Ancora, altri componenti dell'infrastruttura del cluster determinano le azioni da intraprendere, previa notifica, poichè il nodo non è più un membro del cluster. Per esempio, il fencing potrebbe scollegare il nodo non più membro.
CMAN controlla il quorm del cluster monitorando il conteggio dei nodi. Se più della metà dei nodi risultano attivi il cluster avrà un quorum. Se al contrario, la metà dei nodi (o un numero minore) risultano attivi, il cluster non avrà alcun quorum. In presenza di questo scenario l'attività presente al suo interno verrà arrestata. Il quorum impedisce il verificarsi di una condizione chiamata "split-brain" — una condizione nella quale due istanze sono in esecuzione nello stesso cluster. In una condizione split-brain ogni istanza del cluster potrà accedere alle risorse senza essere a conoscenza della presenza di una seconda istanza, in tale situazione si verificherà una corruzione dei dati.
2.1. Quorum del cluster
Il Quorum è un algoritmo di voto usato da CMAN.
Un cluster potrà operare correttamente solo in presenza di un accordo tra i membri relativo al loro stato. Quindi, un cluster risulta avere un quorum se la maggior parte dei nodi sono attivi, in comunicazione e conformi ai membri attivi del cluster. Per esempio, è possibile avere un quorum in un cluster a tredici nodi se sette o più nodi sono in comunicazione tra loro. Se il settimo nodo risulta inattivo il cluster perderà il suo quorum e non sarà più in funzione.
Per impedire problematiche di split-brain è necessario avere un quorum. In assenza del quorum si potrà verificare un errore di comunicazione sul cluster a tredici nodi, il quale potrà causare una situazione nella quale sei nodi svolgeranno le proprie funzioni sullo storage condiviso, e altri sei nodi che a loro volta svolgeranno le loro funzioni in modo indipendente. A causa di un errore di comunicazione i due cluster parziali sovrascriveranno aree del disco corrompendo il file system. Forzando l'implementazione delle regole del quorum, solo uno dei cluster parziali potrà usare lo storage condiviso, proteggendo così l'integrità dei dati.
Il quorum non è in grado di impedire situazioni di split-brain, ma è in grado di decidere qual è il membro dominante. Così facendo è possibile avere un funzionamento corretto nel cluster. In presenza di problematiche di split-brain il quorum impedisce qualsiasi attività ad un gruppo (o gruppi) del cluster.
Il quorum del cluster viene determinato per mezzo di una comunicazione tra i nodi tramite Ethernet. Facoltativamente il quorum può essere determinato usando una combinazione di messaggi per mezzo di Ethernet e un quorum disk. Per un quorum usando Ethernet, esso consiste in una maggioranza semplice (50% dei nodi + 1 extra). Nella configurazione di un quorum disk, il quorum consiste nelle condizioni specificate dall'utente.
Nota
Per impostazione predefinita ogni nodo ha un voto per quorum. Facoltativamente è possibile configurare ogni nodo in modo da avere più di un voto.
2.1.1. Quorum Disk
Un quorum disk, o partizione, è una sezione di un disco impostata per un suo utilizzo con componenti del progetto cluster. Essa presenta due modalità d'uso le quali verranno affrontate tramite un esempio.
Supponiamo di avere i nodi A e B. Di questi il nodo A non è in grado di ricevere i pacchetti "heartbeat" del gestore del cluster provenienti dal nodo B. Il nodo A non è in grado di sapere il motivo per il quale non riceve alcun pacchetto, ma possiamo fare alcune ipotesi: la prima è che il nodo B potrebbe essere fallito, la seconda è che il nodo B è talmente impegnato da non poter mandare alcun pacchetto. La seconda ipotesi si può verificare se il cluster è troppo grande, i sistemi possono essere molto impegnati o la rete potrebbe non essere ottimale.
In tale situazione il nodo A non è sicuro se il problema è relativo a se stesso (nodo A) o al nodo B. Questa situazione è problematica soprattutto in presenza di un cluster a due nodi, poichè essendo entrambi non in grado di comunicare tra loro, essi potranno tentare di isolarsi a vicenda.
Prima di isolare un nodo potrebbe essere conveniente controllare lo stato attivo dello stesso, anche nel caso in cui non è possibile contattare il nodo in questione. Un quorum disk consente di fare quanto sopra indicato. Prima di isolare il suddetto nodo, il software del cluster è in grado di controllare se il nodo è ancora attivo. Per fare questo esso controllerà se il nodo ha scritto alcuni dati sulla partizione del quorum.
In presenza di un sistema con due nodi il quorum disk funge anche come tie-breaker. Se un nodo ha un accesso al quorum disk e alla rete, allora verranno presi in considerazione due voti.
Un nodo che perde qualsiasi contatto con la rete o quorum disk avrà perso un voto, e per questo motivo potrà essere isolato senza alcun problema.
Per informazioni sulla configurazione dei parametri del quorum disk consultare i capitoli di amministrazione
ccs
e Conga, nel manuale Amministrazione del Cluster.
2.1.2. Tie-breaker
I Tie-breaker sono valori euristici che permettono ad una partizione del cluster di decidere se è presente un quorum nell'evento di una suddivisione-equa prima di un fencing. Una struttura tipica di tie-breaker è un IP tie-breaker, chiamato anche nodo ping.
Con questo tipo di tie-breaker i nodi non solo controllano se stessi ma controllano anche il router presente sullo stesso percorso delle comunicazioni del cluster. Se i due nodi perdono contatto tra loro, il nodo che riuscirà a mantenere un contatto con il router sarà quello "vincente". Naturalmente sono presenti casi, come quello di uno switch-loop, dove i due nodi sono in grado di contattare il router ma non sono in grado di comunicare tra loro, questa situazione determina una condizione di split brain. Ecco perchè anche in presenza di tie-breakers è importante avere una configurazione corretta del fencing.
Altri tipi di tie-breaker includono anche la possibilità di una partizione condivisa, spesso chiamata quorum disk, in grado di fornire informazioni aggiuntive. clumanager 1.2.x (Red Hat Cluster Suite 3) presentava un disk tie-breaker in grado di abilitare un funzionamento normale anche quando la rete veniva interrotta, se entrambi i nodi erano ancora in comunicazione tra loro tramite la partizione condivisa.
Sono disponibili schemi di tie-breaker più complessi, come ad esempio QDisk (parte del cluster di linux). QDisk permette l'uso di valori euristici arbitrari. Questi valori permettono ad ogni nodo di determinare il proprio stato di partecipazione nel cluster. Esso viene spesso usato come un IP tie-breaker semplice. Per maggiori informazioni consultare la pagina man di qdisk(5).
CMAN non presenta alcun tie-breaker interno per vari motivi. Tuttavia è possibile implementare i tie-breaker usando un API. L'API permette una registrazione ed un aggiornamento del dispositivo quorum. Per un esempio consultate il codice sorgente di QDisk.
Sarà necessario usare un tie-breaker se:
- in presenza di una configurazione a due nodi con dispositivi di fencing su un percorso della rete diverso rispetto al percorso usato per le comunicazioni del cluster
- in presenza di una configurazione a due nodi dove il fencing è un livello fabric - in particolare per le prenotazioni SCSI
Tuttavia se siete in presenza di una configurazione per il fencing e di rete corretti, un tie-breaker apporterà un livello ulteriore di complessità (ad eccezione di alcuni casi).