Reti di Calcolatori L-S
Sistema con supporto per la
Gestione dei Guasti
Gattari Gabriele
Obbiettivi
Il sistema che si è sviluppato consente di:
●
Dare un supporto Fault Tollerant per semplici
servizi
●
Gestire il carico sugli esecutori del sistema
●
Evitare la congestione del sistema
Architettura
Attori
●
●
●
●
Client: Effettua delle richieste al gestore che è
l'unico attore che conosce
Server Replicato: Compie materialmente il servizio
su richiesta del gestore. Non prevede stato.
Gestore: Controlla l'intera rete mediando le
richieste
dei clienti verso le Repliche e
appoggiandosi su
Server Backup per
il fault-tollerant.
Gestore Backup: Consente di salvare lo stato del
Gestore al fine di gestire eventuali situazioni di
guasto
Comunicazione
STREAM
RMI
STREAM
RMI ci consente di avere
trasparenza lato client, che
conosce solo il gestore.
Astrazione di
Oggetto Replicato
Modello CallBack di Risposta
Gli stream ci consentono
di avere la notifica di una
disconnessione.
Registrazione
●
●
Associato al gestore c'è un processo sempre i
esecuzione che accetta connessioni da Server
Replica e Backup
A seguito della registrazione, che può essere fatta
anche durante l'esecuzione di un servizio, vengono
allocate le risorse per la comunicazione
Registrazione
Registrazione
Accetta
Conn
Server Replica
Gestore
Backup
Schema Servizio
1
3
5
4
2
6
1)Il cliente effettua una richiesta
2)Il gestore salva lo stato sul backup
3)Inoltro alle repliche della richiesta
4)Risposta delle repliche interpellate
5)Restituzione risultato cliente
6)Aggiornamento stato backup
Carichi
Richiesta
+ locazione nuovo gestore
Le repliche coinvolte nella
richiesta rispondono al gestore
inoltrando anche informazioni
riguardo al carico della replica
stessa
(Numero di richieste in
elaborazione in parallelo)
L'invio di una richiesta ad un certo
server replica dipende dallo stato di
carico della replica stessa.
Queste informazioni sono conosciute dal
gestore ed esso invia solo le richieste alle
repliche scariche decidendo in base ad
una soglia.
Insieme alla richiesta invia anche
informazioni riguardanti il nuovo gestore
in caso di caduta.
Risposta
+ carico della replica
Congestione
●
●
●
Nel caso tutte le Repliche fossero
sovraccariche (livello di carico superiore alla
soglia) il sistema è in uno stato di congestione
Le richieste non vengono inoltrate ma
accodate localmente (aggiornando i backup)
Dopo un certo numero di accodamenti il
gestore risponde ai client rifiutando la richiesta
Si evita la congestione come nel modello
Leaky Bucket
Dettagli Comunicazione
Sia il gestore che i server
Replicati/Backup hanno a
disposizione una coda per
i messaggi.
In queste code vengono
inserite le richieste che il
sistema deve gestire.
Il funzionamento tende a
disaccoppiare l'invio delle
richieste dalla loro
esecuzione.
Gestione Thread-Pool
Sender e Receiver
gestiscono la connessione
per conto degli attori
Fault
Per la gestione dei Fault del Gestore si è scelto un modello di
Replicazione Passiva a copie calde.
Motivazioni:
●
Semplicità
●
Basso Costo
●
Rapida riconfigurazione
I gestore salva periodicamente il suo stato sui gestori di Backup che
forniscono l'astrazione di copie calde.
Se il gestore è in vita subiscono i checkpoint, non appena
determinano una caduta provvedono a rimpiazzarlo.
Ipotesi di Fault
Come è noto le ipotesi di fault semplificano il
progetto di architetture di supporto per la
tolleranza hai guasti:
●
Ipotesi di guasto singolo:
Si suppone che il tempo di individuazione di un
guasto più il tempo di recovery sia minore del
tempo tra due guasti di uno qualsiasi degli
attori.
●
Crash di un qualsiasi attore
●
Problemi con la connessione
Individuazione Fault
●
Per quanto riguarda i Fault in cui c'è disconnessione ci
possiamo affidare al supporto offerto dagli stream infatti
non appena la connessione viene meno (caduta nodo o
disconnessione) il supporto ci notifica un'eccezione che
dobbiamo gestire.
Alternativamente però uno qualsiasi degli attori
potrebbe andare in crash senza rilasciare le risorse di
rete...
●
Heartbeat
Occorre implementare un Heartbeat. Il gestore e i vari
attori (esclusi client) devono continuamente sollecitarsi
a vicenda per provare di essere vivi.
●
Il modello implementato:
Utilizzo di pacchetti applicativi affiancati da pacchetti
dummy in momenti di basso traffico.
Socket con timeout che viene resettato ad ogni ricezione.
Quindi finché c'è traffico i timeout vengono resettati, se
qualcuno non risponde -> gestione caduta.
In assenza di traffico applicativo?
Pacchetti dummy generati a intervalli regolari
Guasto Replica
Nel caso una delle repliche non risponda entro
un certo tempo o la connessione verso di lei
salti.
Il gestore prende atto della caduta e agisce per
escludere la replica.
●
Rilascia le risorse associate
●
Aggiorna il proprio stato
risposte)
●
Gestisce casi degeneri
(non attende oltre per le
Guasto Backup
Nel caso uno dei Backup non risponda entro
un certo tempo o la connessione verso di lui
salti.
●
●
Il gestore prende atto della caduta e agisce
per escludere il backup.
Aggiorna il proprio stato
Nel caso un backup si colleghi mentre il
servizio è in atto esso viene riconfigurato
mediante un pacchetto di aggiornamento
cumulativo
Pacchetti Gestore-Backup
Aggiornamento:
●ADD
aggiornamento selettivo di una richiesta client
●REM
rimozione selettiva una richiesta client
●COL
aggiornamento cumulativo (riconnessione)
●CAD
notifica caduta client
●DUMMY pacchetto di Are-you-Alive?
Risposte:
●DUMMY pacchetto generico di risposta al gestore
In PiggyBack il gestore comunica le sequenza di successione e il nuovo
successore a tutti.
(Ordine determinato staticamente alla connessione)
Guasto Gestore
La copia di Backup primaria diviene il nuovo
gestore
Nuovo Gestore:
●
Termina il suo lavoro di Backup
●
Si riallacciano le connessioni con gli attori
●
Si inoltrano nuovamente tutte le richieste pendenti
Gli attori:
●
Si ricollegano al nuovo gestore
●
Buttano via eventuali risultati intermedi (Repliche)
Guasto Client
Nel caso dei client l'accoppiamento è più lasco
di quello tra i server.
Individuazione caduta all'atto della risposta.
●
●
●
Rimozione delle richieste
localmente al gestore
ancora
in
coda
Rimozione di tutte le richieste salvate nei backup
Nessuna notifica
overhead)
alle
repliche
(limitazione
Scarica

presentazione