Soluzioni di clustering, replicazione e stand by server

Soluzioni di
clustering,
replicazione e
stand by server
Giuseppe Sacco
5 maggio 2006
Sommario
dall'applicazione.
La libera traduzione italiana della parola
è
ammasso
oppure
agglomerato.
Se si utilizzano macchine perfettamente eguali,
cluster
ad esempio dei server web con documenti statici,
In informatica si
allora è possibile fare in modo che lo
usa da decenni per indicare una collezione di tracce di dischi. Più di recente è invece utilizzato per
agglomerato di computer
oppure lo stesso
che può avere varie con-
Una seconda possibilità è usare un DNS che fa
vizio fornito da quelle macchine sia il più continuo
corrispondere allo stesso nome
www.mioserver.it
più di una macchina. I DNS hanno la capacità di
cluster, come ad esempio quel-
orire i nomi secondo la tecnica del
lo relativo ai dischi. L'avere più dischi che vengono
visti come un solo volume permette di avere
può conoscere il carico dei
idoneo.
la resilienza del sistema, cioè fare in modo che il ser-
Ci sono vari tipi di
switch
computer per instradare la richiesta sul server più
formazioni, ma il ne è sempre lo stesso: aumentare
possibile.
switch al quale
queste macchine sono collegate, le chiami a turno,
le
round robin.
Si può far fare il bilanciamento al kernel li-
la rottura di uno o più dischi senza perdere dati,
utilizzando il progetto LVS (http://www.
linuxvirtualserver.org/) che prevede una mac-
di accedere a maggior velocità rispetto al singo-
china
lo disco.
system
nux
più grandi del singolo disco, di sopportare
cluster
director
equivalente dello
switch
hardware e
implementano tecnologie
una serie di server applicativi. Questi server posso-
chiamate RAID e sono spesso utilizzati in meccani-
no essere sia macchine Linux che Unix che Windo-
smi di SAN
ws, a seconda del tipo di implementazione. Ci so-
Questi
Storage Area Network
attached storage
o NAS
Network
no tre diversi modelli implentativi: LVS-NAT (
work address translation)
Nel caso di computer, visti come unità di calcolo,
questo
•
agglomerato
tivi eterogenei ma è il più lento, LVS-Tun (
può avere vari scopi
ling )
bilanciare il carico di lavoro tra più mac-
•
direct routing )
è
il più veloce ma le macchine devono essere nella
reggerebbe;
•
tunnel-
richiede linux ma permette di avere i server
in diverse LAN/WAN, LVS-DR (
chine perché una singola macchina non lo
net-
permette sistemi opera-
stessa LAN. Per questo tipo di
cluster
e per tutti
ottenere una alta adabilità del servizio, con
quelli che hanno una macchina di controllo, come
una seconda macchina sempre pronta a pren-
il
dere il posto di quella che ore un certo
è una operazione che richiede potenza di calcolo,
servizio;
quindi per questo ruolo è suciente un computer
director,
si tenga presente che il controllo non
non particolarmente veloce.
avere una macchina con dati aggiornati in ri-
Se l'applicazione è in grado di gestire autonoma-
tardo allo scopo di consentire di recuperare i
mente il bilanciamento del carico, allora è possibile
dati persi per l'errore umano.
fare in modo che vari server condividano le sessioni
1 Bilanciamento del carico
di lavoro. Un esempio è quello di
JBoss, un applica-
tion server per java, che permette di gestire
cluster
che gestiscano la sessione. (Se l'applicazione è sta-
Il bilanciamento del carico avviene in maniera pi-
teless, cioè senza stato, allora la sessione non ha
lotata dall'hardware, dal sistema operativo oppure
importanza e il
1
cluster
può tranquillamente essere
Lixper S.r.l.
via Arbe 27, Torino
1 BILANCIAMENTO DEL CARICO
http://www.lixper.it
gestito dal sistema operativo. Se invece è statefull,
multi master
cioè con stato, allora lo stato deve essere memoriz-
ne cominciata in uno qualsiasi dei nodi che poi si
zato con i meccanismi del
sincronizza con gli altri.
cluster
perché non sia
vale a dire che ogni transazione vie-
pgcluster è costituito da
relegato ad un solo nodo.) Altro esempio è quello
almeno 4 macchine: una che bilancia il carico tra
di
i vari nodi, almeno due nodi, una di gestione della
WebSphere
che denisce tre tipi di
cluster
pro-
replicazione.
prio in base alla gestione della sessione, anzi, alla
session anity.
WebSphere
La versione 6 di
de quello che si chiama
eXtended Deployment:
Il numero massimo di nodi è 128 e
non è necessario avere uno storage condiviso.
incluun
Per chi fosse interessato a
MySQL,
cluster
esiste una im-
ingranaggio della nuova parola d'ordine, grid, che
plementazione nativa di
permette di spostare intere applicazioni da un no-
più nodi
do all'altro in maniera trasparente per bilanciare il
più nodi
carico, ma anche in maniera preventiva utilizzando
risiedere interamente in RAM), un nodo per la ge-
le statistiche di carico dell'ultimo periodo.
stione del cluster. Questa implementazione sfrutta
L'assegnamento di un un client ad un nodo del
cluster
data
i nodi
può essere costante, nel senso che viene fat-
sql per la
data con i
gestione delle richieste, uno o
dati veri e propri (che devono
come sistema di memorizzazione e non
utilizza aatto il disco.
to al login e mai cambiato, oppure può variare nel
che richiede uno o
Per avere la replicazione
si devono raddoppiare le macchine usate per i nodi
tempo, spostando la sessione dell'utente da una
data.
macchina all'altra.
Il primo caso va bene se tut-
perso, quindi di norma si fa un backup da ricarica-
te le sessioni di lavoro sono eguali (stessa durata,
re all'accensione. Il bilanciamento del carico tra i
stesso peso computazionale), ma non va bene nel
vari nodi
caso di sessioni lunghe e varie come quelle di la-
tramite
voro su un ERP. In questo secondo caso spesso il
Allo spegnimento del cluster ogni dato viene
sql va fatto a livello
connection pool.
applicativo, oppure
Una nota a parte va fatta per
Oracle RAC
che
bilanciamento è fatto staticamente sull'application
ha la caratteristica di richiedere uno spazio disco
server e dinamicamente sul database. In genere la
condiviso tra le varie istanze del
gestione del bilanciamento delle connessioni ad un
plementare un RAC su varie macchine è necessario
database avviene con i
che tutte accedano allo stesso disco in contempora-
pool
di connessioni o suoi
derivati (come i MultiPool che
usa per
Oracle RAC)
WebLogic Server
cluster :
per im-
nea. Questa soluzione è in genere parecchio costosa
che permettono di avere tan-
e non è stata seguita da nessun altro DBMS.
te connessioni aperte in contemporanea con i vari
nodi del
cluster,
selezionando una connessione di-
versa per ogni transazione. Un
pool
è un insieme
1.2
Calcolo parallelo
si connessioni dall'applicazione al database; queste
connessioni dopo l'uso non vengono chiuse, ma ri-
All'interno della sezione sul bilanciamento del cari-
mangono aperte e usate per richieste successive in
co va fatta una parentesi sui
cluster single system
modo da diminuire il tempo di connessione. Inol-
image,
tre le connessioni possono essere aperte verso tutti
portano come se fossero una sola macchina, usati
i nodi del
per il
cluster
e usate in maniera circolare, in
a
modo da inoltrare le richieste a turno ai vari nodi.
cioè quei cluster che visti da fuori si com-
High Performance Computing (contrapposto
High Availability ) Si tratta di unire la potenza
di parecchie macchine per eettuare calcoli che di
1.1
norma non richiedono molti accessi al disco, ma in-
Database
Una delle soluzioni open source è
vece sfruttano il parallelismo e utilizzano lo scambio
pgpool che si oc-
di messaggi per far comunicare tra loro i vari pro-
cupa del bilanciamento del carico per postgresql.
cessi. Si tratti quindi quasi sempre di applicazioni
pgpool è capace di collegarsi a due diversi database
scientiche studiate appositamente per il funziona-
postgresql e di orire un connection pool al client.
mento su macchine parallele. Le due soluzioni più
Ogni transazione verrà eettuata su entrambe le
famose di questo tipo sono
macchine, mentre le
Ciascuna di queste soluzioni include anche un
query
verranno distribuite a turno tra le macchine.
pgcluster
e
beowulf.
malmente le applicazioni parallele fanno veramente
Un'altra soluzione open source, più sosticata,
è
openmosix
le
system distribuito, ma bisogna ammettere che nor-
esterne alle transazioni
rari accessi al
che permette di avere un ambiente
2
le system e quindi è suciente ave-
Lixper S.r.l.
via Arbe 27, Torino
2 ALTA AFFIDABILITÀ
http://www.lixper.it
re una o due macchine che orano il servizio di
system.
Sia
le
situazioni
rsync
è velocissimo e può essere esegui-
to anche ogni minuto, ma in altre non è possibile
openmosix che beowulf sono prodotti maturi
utilizzarlo poiché i dato non sono memorizzati su
e si occupano principalmente di bilanciare il cari-
le system, come nel caso di volumi logici assegna-
co tra le varie macchie, spostando i processi da un
ti ai database, oppure nel caso di informazioni che
nodo ad un'altro. Hanno entrambi anche un mec-
riguardano gli
rsync.
nbd è
canismo di ricongurazione dinamica che permette
l'aggiunta o la rimozione di un nodo in qualsiasi
inode
che non verrebbero copiati da
un modulo del kernel di Linux. Si tratta
Network Block Device
momento.
di una sigla
2 Alta adabilità
punto la natura del modulo: un device a blocchi
L'alta adabilità o
via rete. Con nbd è possibile utilizzare il disco di
una macchina remota come se fosse un disco locale.
high availability
L'utilizzo che se ne fa in questi casi è di fare vede-
è un concet-
re alla macchina principale sia il disco locale che
to che indica la disponibilità costante nel tempo di
un certo servizio. Il meccanismo del
cluster
quello remoto, in modo da fare un
serve
Il vantaggio di
proprio a permettere questa continuità, facendo in
la di
da una macchina all'altra può esse-
rsync.
Inoltre la connessione usata da
rsync
nbd
può essere compressa e cifrata, mentre quella di
re automatizzato o gestito manualmente, a seconda
ster
tra i due.
La sua congurazione è però più complessa di quel-
rante il periodo di fermo. Il passaggio del servizio,
delle necessità. Difatti la congurazione di un
mirror
è che ogni singola scrittura av-
quindi la seconda macchina è sempre aggiornata.
si possa sostituire con una seconda macchina du-
failover,
nbd
viene su entrambe le macchine in contemporanea,
modo che se la macchina principale si guastasse, la
detto
che indica ap-
non può esserlo.
clu-
HA non è mai semplice e a volte il gioco non
vale la candela.
2.2
Ci sono molte realtà nelle quali si fornisce un
servizio che può anche mancare per pochi minuti senza generare troppi problemi.
casi è possibile avere un piccolo
Il passaggio automatico di un servizio da un nodo
In tutti questi
cluster
all'altro è gestito su GNU/Linux da un programma
molto sem-
chiamato
plice nel quale esiste una macchina principale che
dono la denizione di risorse che possono essere:
ra automatica o manualmente, si faccia carico dei
programmi applicativi, indirizzi IP, dischi,
servizi.
stem,
Questa soluzione ha come unico dettaglio im-
nbd.
le sy-
Ogni risorsa è destinata ad
di una) e può essere fatta migrare su altri nodi in
aggiornata la seconda macchina. Lo si può fare sia
device, con
o altro ancora.
un particolare nodo (che di norma ne gestisce più
plementativo quello di scegliere come mantenere
rsync,
HACMP
ware, come Veritas. Tutte queste soluzioni preve-
prima si può fare in modo che la seconda, in manie-
con
oppure da soluzioni proprie-
su AIX, o ancora da società che non vendono hard-
camente i dati dalla prima. In caso di guasto della
le system,
heartbeat
tarie che ogni sistema operativo ore, come
ore il servizio e una secondaria che copia periodi-
a livello di
Controllo
caso di necessità.
sia a livello di
La gestione automatica dell'alta adabilità richiede un meccanismo per la verica dello stato dei
2.1
Sincronizzazione
rsync
è uno strumento che copia un
nodi. In genere questo utilizza una connessione sica privilegiata (un cavo di rete esclusivamente usa-
le system da
to per HA) tramite il quale il software del
cluster
una macchina ad un'altra. La prima volta la copia
comunica tra i vari nodi e verica lo stato delle ri-
avviene nella maniera canonica, ma dalla successi-
sorse.
va vengono copiati solo le sezioni modicate dei le
entro certi periodi allora un altro nodo si fa carico
cambiati. In questo modo il tempo di aggiornamen-
del problema.
to della seconda macchina è proporzionale solo alle
Se una risorsa o un nodo non rispondono
La normale implementazione di una applicazione
modiche fatte sulla macchina originale. In molte
in
3
cluster
HA prevede di norma i seguenti passi
Lixper S.r.l.
via Arbe 27, Torino
4 CONCLUSIONI
http://www.lixper.it
Questa seconda macchina macchina, nel caso la pri-
1 creazione di un IP virtuale tramite il quale fare
ma si guastasse, può molto facilmente prendere il
raggiungere l'applicazione;
posto di quella guasta e fornire lo stesso servizio
2 installazione dell'applicazione come risorsa del
in poco tempo. Spesso si fa in modo da mantene-
cluster ;
re un distacco temporale di almeno mezzora tra le
due macchine perché così è anche possibile colle-
3 installazione dei dati dell'applicazione come
risorsa del
garsi direttamente alla seconda per recuperare dei
cluster ;
dati erroneamente cancellati.
4 scrittura di un programma che controlli se
4 Conclusioni
l'applicazione funziona correttamente;
5 congurazione di HA per l'utilizzo del programma 4. e dei meccanismo di
failover ;
Ci sono molti tipi di
cluster
open source che pos-
sono gestire tutte le principali congurazioni utili
Il programma HA farà in modo da dare allo stes-
nelle aziende private e pubbliche italiane.
so nodo le tre risorse: IP virtuale, dati e applicazio-
strumenti,
ne.
zioni come
Inoltre continuerà a controllare l'applicazione
Alcuni
rsync o heartbeat, e alcune applicapostgresql o JBoss, spesso associati a
in maniera periodica con il programma fornito. In
GNU/Linux, sono in realtà molto utilizzati anche
caso di problemi le tre risorse verranno spostate
in ambiente Unix proprietari.
secondo le politiche di
3
failover
su un altro nodo.
Vista la complessità del
Stand by database
congurazioni. L'errore che viene fatto più spesso
è proprio quello di sopravvalutare l'importanza del
servizio da inserire nel
Alcuni di questi
plessa.
gata al fatto che internamente funzionano con un
journaling.
Il giornale dei DBMS
zioni andate a buon ne. Scrivendo in un solo le
i DBMS terminano questa scrittura relativamente
in fretta. Periodicamente, con una operazione chiail contenuto di questi le
viene copiato sui veri e propri le dati.
Questi piccoli le (che postgresql chiama WAL
write-ahead log, informix chiama transaction log e
oracle chiama redo log ) possono essere usati anche
durante l'operazione di ripristino di un database.
Al ripristino si prendono i le dati non aggiornati e
una serie di
log
più recenti e si riapplicano tutte le
modiche ai le dati. Informix ha una tecnologia
high availablity data replication, che fa esattamente questo: attende che il log
propria, chiamata HDR
sia completo e lo manda via rete alla seconda istanza. Notare che per informix il log potrebbe essere
disattivato e questo renderebbe inusabile HDR.
La macchina di
stand by
è una macchina che
ha lo stesso database della macchina principale,
ma viene foraggiata con i
log
Inoltre, per tutte quelle applicazioni che
sfruttare i meccanismi dell'applicazione.
o più le, nel quale vengono scritte tutte le transa-
checkpoint,
e disegnare un'archi-
prevedono la gestione della ridondanza, è necessario
(database management server) è in genere un le,
mata spesso
cluster
tettura eccessivamente costosa o inutilmente com-
database hanno una caratteristica interessante lemeccanismo di
è sempre meglio
so dovrà agire, prima di avventurarsi in acquisti e
Spesso la necessità di un cluster è relativa ai dati memorizzati in un database.
cluster
fare un'analisi completa degli scenari nei quali es-
prodotti dall'altra.
4