[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