[Linux-Biella] Cluster HA

andrea ferraris andrea_ferraris a libero.it
Sab 12 Mar 2005 19:08:09 CET


Ciao a tutti,

come promesso, dato che nella vita non ho di meglio da fare che stare 
davanti allo tastiera e allo schermo di un PC, torno a riferire della 
mia esperienza di clustering con Linux che ha fatto diversi passi avanti.

Ho qui di fianco a me un poderoso cluster HA Linux (non load balancing, 
ovvero non distribuisce il carico, ma garantisce solo che nel caso di 
caduta di un nodo l'altro in standby divenga attivo e prenda il suo 
posto offrendo gli stessi servizi).
Questo mostro, composto da ben 2, dico 2 Pentium II, uno da ben 465,3 e 
l'altro addirittura da 801,17 bogomips, ha una potenza complessiva di 
piu` di 1266 Bogomips. La casa e`  scossa da tremiti per la potenza 
sprigionata dal Cluster e spero di riuscire a terminare questo messaggio 
prima che esplodano, liberando i gigatoni che hanno in petto.

Il sw impiegato per il clustering e` hearbeat e, come LucaBert 
consigliava, data la sua esperienza vissuta, per la sincronizzazione dei 
dati fra le 2 maccchine e` drbd.
Che dire? Funziona. Se spengo (da pulsante) una macchina, in una 20ina 
di secondi l'altra prende il suo posto offrendo gli stessi servizi.

Per chi non fosse bogo, il processore della prima maccchina va a 233 
Mhz, mentre la 2a ne ha addirittura 2, ognuno overklokkato a 400 Mhz ed 
emette almeno una 50ina di Db in un concerto di ventole. Una macchina, 
quella meno boga, ha 256 MB RAM e quella piu` boga 512. I dischi sono 
IDE ATA 33 di 10 GB da una parte, 20 dall'altra e la partizione 
sincronizzata in da drbd e` da circa 7 GB.

Il materiale necesssario per questo gioco e`:

2 PC funzionanti con Linux (pare che si possa fare anche con Solaris e 
*BSD), dotati di:

- 2 interfacce di rete l'uno
- 1 porta seriale l'uno
- 1 cavo di rete cross per unire direttamente 2 interfacce di PC diversi
- 2 cavi di rete normali per collegare i PC al resto della rete con le 
altre 2 interfacce
- 1 cavo null modem per unire 2 porte seriali di 2 PC diversi
(andrebbero bene anche altre 2 interfacce di rete e un altro cross 
cable, ma ad Alan Robertson, l'HA Linux cluster man since beginning, 
piaceva cosi` e quindi la documentazione, di cui in fondo a questo 
messaggio, dettaglia questa configurazione)

Ogni interfaccia ha un IP. Quelle della lan interna (unite direttamente 
dal cross) non hanno bisogno di  comunicare che tra di loro e quindi ho 
scelto 2 IP diversi dagli altri e con maschera a 30 bit. Su questa rete 
passano sia i dati per sincronizzare le partizioni dei dischi delle 2 
macchine gestite da drbd, sia hearbeat (il battito del cuore dei 
processori delle due macchine, che con apposito stetoscopio esse 
monitorano reciprocamente, onde sapere quando il vicino passa a miglior 
vita e se del caso attivare il servizio che eroga il cluster su di se`, 
se gia` non lo e`). Dato che oltre a fermarsi il cuore, ci possono 
essere diversi motivi per cui non si riesce piu` a sentirlo (p.es. si 
rompe lo stetoscopio, diventa sordo l'orecchio in cui e` infilato) anche 
sulla seriale fra le due macchine ci sono due stetoscopi in ascolto con 
orecchie su entrambi i nodi; dato pero` che sia gli stetoscopi, sia le 
orecchie sono a volte opere piu` diaboliche che divine, ci sono ancora 
altri stetoscopi e altre orecchie di entrambi i nodi, che questa volta 
vanno a sentire sulla lan esterna (quella dove vengono erogati i servizi 
del cluster) se batte il cuore p.es. del router principale (o switch), 
possibilmente sotto gruppo di continuita` (chiaramente in un ambiente di 
produzione anche i due nodi sono sotto gruppo di continuita e 2 gruppi 
di continuita` diversi).

Gli IP esterni, accessibili dalla rete servono solo alla gestione dei 
nodi perche' i servizi offerti vengono erogati su un IP che heartbeat 
assegna al nodo attivo (di default quello primario) del cluster e nel 
caso di problemi a quel nodo, sposta l'IP sull'interfaccia dell'altro.

drbd e` veramente molto efficente. Su macchine del genere, con hw del 
genere ho copiato 300 MB di sorgenti del kernel sulla partizione sotto 
drbd sul nodo attivo (il biprocessore ci ha messo poco meno di 2 
minuti), poi ho messo il nodo in standby e 3 minuti e 50 dopo i servizi 
erano attivi sull'altro nodo con tutti e 300 i MB dei sorgenti del 
kernel disponibili, tali e quali. Poi li ho cancellati, ho messo questo 
secondo nodo in sandby e meno di 30 secondi dopo era tutto disponibile 
sul primo nodo (ovvero non c'erano piu` i sorgenti del kernel in quella 
posizione). Il carico elaborativo maggiore in tutto questo periodo e` 
stato quello di cp e rm -rf, mentre drdb su nessuno dei due nodi ha mai 
superato il 10%, essendo normalmente sotto il 5. Non credo che nell'uso 
reale del mio cluster si realizzera` mai uno scenario del genere, nel 
senso che non li scriveranno nemmeno in una settimana 300 MB di dati e 
avro` a disposizione per il gioco dei P III a 800 Mhz con dischi 
analoghi a questi del test casalingo.

Nelle prossime settimane provero` ancora a sbizzarrirmi con CentOS e 
GFS, giusto per curiosita`, ma per il mio scenario direi che questa 
prima soluzione con Gentoo, heartbeat e drbd sia piu` che sufficiente.

Tra l'altro all'inizio, quando temevo che le risorse di calcolo di 
queste macchine non sarebbero bastate singolarmente a gestire
i servizi che devono erogare, avevo postato nella mailing list italiana 
di OpenMosix per sapere se poteva fare al caso e ho appurato che non 
poteva per 2 motivi sostanziali e cioe` che da solo non gestisce la HA, 
ma questo sarebbe stato il meno, ma che non va bene per distribuire il 
carico elaborativo di Samba. Sono rimasto veramente molto stupito dal 
fatto che mi abbia risposto, in perfetto italiano, Moshe Bar, che e` il 
papa` di OpenMosix. Comunque non era uno scherzo, era proprio lui, dato 
che diceva delle cose proprio furbe.

E per finire eccovi i riferimenti urlici principali che ho usato, 
trovati grazie a google:

http://linux-ha.org/
http://www.linux-mag.com/2003-11/drbd_01.html
http://www.linux-mag.com/2003-11/clusters_01.html
http://www.linux-mag.com/2003-11/availability_01.html
http://www.drbd.org/
http://www.linuxvirtualserver.org/
http://www.ultramonkey.org/

Ce ne sono anche altri, ma i principali sono questi e chi e` 
interessassato se li puo` trovare con google.

Chiaramente si puo` fare con qualsiasi Linux, ma con Gentoo e` meglio.


Saluti e adesso vado a studiare il resource kit di Windows XP perche' 
carmina non dant panem,

Andrea


Maggiori informazioni sulla lista Linux