Tolleranza e isolamento dei guasti - Disponibilità e oltre: comprensione e miglioramento della resilienza dei sistemi distribuiti su AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tolleranza e isolamento dei guasti

Questi sono due concetti importanti quando pensiamo alla disponibilità. La tolleranza ai guasti è la capacità di resistere ai guasti del sottosistema e di mantenere la disponibilità (facendo la cosa giusta entro uno SLA stabilito). Per implementare la tolleranza agli errori, i carichi di lavoro utilizzano sottosistemi di riserva (o ridondanti). Quando uno dei sottosistemi di un set ridondante si guasta, un altro riprende il lavoro, in genere quasi senza interruzioni. In questo caso, i pezzi di ricambio rappresentano una vera e propria capacità inutilizzata, in quanto sono in grado di assorbire il 100% del lavoro del sottosistema guasto. Con True Spares, sono necessari diversi guasti del sottosistema per avere un impatto negativo sul carico di lavoro.

L'isolamento dei guasti riduce al minimo la portata dell'impatto in caso di guasto. Questo viene in genere implementato con la modularizzazione. I carichi di lavoro sono suddivisi in piccoli sottosistemi che si guastano indipendentemente e possono essere riparati in modo isolato. L'errore di un modulo non si propaga oltre il modulo. Questa idea si estende sia verticalmente, attraverso funzionalità diverse in un carico di lavoro, sia orizzontalmente, su più sottosistemi che forniscono le stesse funzionalità. Questi moduli fungono da contenitori di guasti che limitano l'ambito dell'impatto durante un evento.

I modelli architettonici dei piani di controllo, dei piani dati e della stabilità statica supportano direttamente l'implementazione della tolleranza e dell'isolamento dei guasti. L'articolo della Amazon Builders' Library Stability using Availability Zones fornisce buone definizioni per questi termini e per come si applicano alla creazione di carichi di lavoro resilienti e ad alta disponibilità. Questo white paper utilizza questi modelli nella sezione Progettazione di sistemi distribuiti ad alta disponibilità suAWS, e qui riassumiamo anche le relative definizioni.

  • Piano di controllo: la parte del carico di lavoro coinvolta nell'apportare modifiche: aggiunta di risorse, eliminazione di risorse, modifica delle risorse e propagazione di tali modifiche dove sono necessarie. I piani di controllo sono in genere più complessi e hanno più parti mobili rispetto ai piani dati, quindi statisticamente hanno maggiori probabilità di guasti e hanno una disponibilità inferiore.

  • Piano dati: la parte del carico di lavoro che fornisce le day-to-day funzionalità aziendali. I piani dati tendono ad essere più semplici e funzionano a volumi più elevati rispetto ai piani di controllo, con conseguente maggiore disponibilità.

  • Stabilità statica: la capacità di un carico di lavoro di continuare a funzionare correttamente nonostante la riduzione della dipendenza. Un metodo di implementazione consiste nel rimuovere le dipendenze dei piani di controllo dai piani dati. Un altro metodo consiste nell'accoppiare liberamente le dipendenze del carico di lavoro. Forse il carico di lavoro non vede alcuna informazione aggiornata (come elementi nuovi, elementi eliminati o elementi modificati) che la sua dipendenza avrebbe dovuto fornire. Tuttavia, tutto ciò che faceva prima che la dipendenza diventasse compromessa continua a funzionare.

Quando pensiamo alla riduzione del carico di lavoro, ci sono due approcci di alto livello che possiamo prendere in considerazione per il recupero. Il primo metodo consiste nel reagire a tale deterioramento dopo che si è verificato, magari aggiungendo nuova capacità. AWS Auto Scaling Il secondo metodo consiste nel prepararsi a tali problemi prima che si verifichino, magari sovradimensionando l'infrastruttura di un carico di lavoro in modo che possa continuare a funzionare correttamente senza la necessità di risorse aggiuntive.

Un sistema staticamente stabile utilizza quest'ultimo approccio. Predispone la capacità inutilizzata per renderla disponibile in caso di guasto. Questo metodo evita di creare una dipendenza da un piano di controllo nel percorso di ripristino del carico di lavoro per fornire nuova capacità di ripristino in caso di guasto. Inoltre, il provisioning di nuova capacità per varie risorse richiede tempo. In attesa di una nuova capacità, il carico di lavoro può essere sovraccaricato dalla domanda esistente e subire un ulteriore degrado, con conseguente «esaurimento» o completa perdita di disponibilità. Tuttavia, è necessario considerare anche le implicazioni in termini di costi dell'utilizzo della capacità preimpostata rispetto agli obiettivi di disponibilità.

La stabilità statica fornisce le due regole successive per i carichi di lavoro ad alta disponibilità.

Regola 7

Non fatevi dipendere dai piani di controllo del vostro piano dati, specialmente durante il ripristino.

Regola 8

Associa liberamente le dipendenze in modo che il carico di lavoro possa funzionare correttamente nonostante la riduzione della dipendenza, ove possibile.