STUDIO SULLA REPLICAZIONE DEGLI AGENTI NEL SISTEMA SOMA Andrea Sambi
FAULT TOLERANCE Applicazioni richiedono sempre maggiore tolleranza ai guasti e continuità nel servizio. Motivazioni: Comodità degli utenti Fornitura di servizi commerciali Sicurezza monetaria Sicurezza personale
FAULT TOLERANCE RELIABILITY (affidabilità): capacità del sistema di fornire sempre risposte corrette AVAILABILITY (continuità): capacità del sistema di fornire sempre un risultato DEPENDABILITY: possibilità di affidarsi al sistema per il completamento delle operazioni richieste
REPLICAZIONE Garantisce il controllo delle risorse per verificare il loro funzionamento. Permette di eseguire un’operazione su più risorse e di verificare se si verificano errori RELIABILITY Garantisce la disponibilità di risorse sostitutive in caso di guasto AVAILABILITY
REPLICAZIONE PASSIVA (Modello MASTER-SLAVE): solo una copia (master) esegue. Le altre repliche (slave) sono di riserva. In genere gli slave controllano il master per identificare guasti Copie fredde: solo il master è attivo, gli slave non sono aggiornati Copie calde: azione di aggiornamento degli slave che rimangono sincronizzati con la copia master ATTIVA: tutte le copie eseguono. Necessità di coordinamento per la distribuzione delle richieste e per la raccolta dei risultati. Necessità di fare una sintesi di essi, magari con algoritmi di voting. Uso dei risultati per identificare guasti
SOMA Sistema ad agenti mobili sviluppato presso il DEIS dell’Università di Bologna Insieme di Place organizzati in maniera gerarchica che rappresentano il concetto di nodo Agenti come entità con capacità di migrare tra Place Comunicazione mediante oggetti condivisi o scambio di messaggi Strumenti di protezione tra host e agenti da intrusioni reciproche
REPLICAZIONE DEGLI AGENTI Perché? Maggiore capacità di elaborazione Tolleranza ai guasti Continuità di servizio Qualità di servizio Caratteristica richiesta: TRASPARENZA alla replicazione
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA Replicazione trasparente agli occhi dell’utente: il servizio viene lanciato come un normale agente, mentre in realtà si creano copie multiple dell’agente. Le copie sono mantenute nei Place che appartengono al dominio.
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA Solo un agente esegue, quello master. Gli altri agenti sono passivi e svolgono solo attività di controllo del master. Gli agenti slave inviano periodicamente messaggi di alive al master e attendono la risposta entro un tempo di timeout. ALIVE MASTER
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA Se la risposta del master non arriva entro lo scadere del timeout si suppone che esso sia fallito. Una delle repliche deve essere promossa a master. Quale? Si avvia un protocollo di elezione. ALIVE MASTER TIMEOUT ELEZIONE
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA Protocollo di elezione: ALGORITMO BULLY Algoritmo con priorità: priorità inversamente proporzionale al campo ID dell’identificatore degli agenti AgentID L’agente A manda un messaggio ELECTION ad ogni agente prioritario Alla ricezione di un messaggio ELECTION, un agente più prioritario di A risponde con un messaggio ANSWER e avvia la fase di elezione Se nessuno risponde ANSWER, allora A vince le elezioni ed è il nuovo master, invia a tutti un messaggio IAMCOORDINATOR Se almeno un agente risponde ANSWER, il compito di A è terminato, attende un messaggio IAMCOORDINATOR dal nuovo master e ne prende atto
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA ELECTION ANSWER IAMCOORDINATOR Algoritmo BULLY Particolare attenzione ai tempi di timeout per i messaggi
REPLICAZIONE PASSIVA A COPIE FREDDE IN SOMA Ripresa del servizio con un nuovo agente master: Gli slave non sono mai aggiornati: lo stato non viene mantenuto Attesa più lunga per la ripresa del servizio per il protocollo di elezione e la riconfigurazione del master Possibilità di recovery del servizio in maniera automatica
CONCLUSIONI Possibilità di avere replicazione passiva trasparente agli occhi dell’utente. Recovery automatico. Tempi di interruzione del servizio ridotti. Intrusione minima nell’esecuzione dell’applicazione scegliendo opportunamente i tempi di invio dei messaggi e i tempi di timeout.