Condividi tramite


Esercitazione: Simulare un errore durante la lettura dei dati dall'area primaria

Questa è la seconda di una serie di esercitazioni. Verranno illustrati i vantaggi dell'archiviazione con ridondanza geografica della zona e accesso in lettura (RA-GZRS) attraverso la simulazione di un errore.

Per simulare un errore, è possibile usare il routing statico o Fiddler. Entrambi i metodi consentono di simulare un errore per le richieste all'endpoint primario di un account di archiviazione RA-GZRS,inducendo invece l'applicazione ad eseguire la lettura dall'endpoint secondario.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Nella seconda parte della serie si apprenderà come:

  • Eseguire e mettere in pausa l'applicazione
  • Simulare un errore con una route statica non valida o con Fiddler
  • Simulare il ripristino di un endpoint primario

Prerequisiti

Prima di iniziare questa esercitazione, completare quella precedente: Rendere i dati dell'applicazione a disponibilità elevata con Archiviazione di Azure.

Per simulare un errore con il routing statico, usare un prompt dei comandi con privilegi elevati.

Per simulare un errore con Fiddler, scaricare e installare Fiddler

Simulare un errore con una route statica non valida

È possibile creare una route statica non valida per tutte le richieste all'endpoint primario dell'account di archiviazione con RA-GZRS. In questa esercitazione, l'host locale viene usato come gateway per il routing delle richieste all'account di archiviazione. L'utilizzo dell'host locale come gateway determina il loopback di tutte le richieste all'endpoint primario dell'account di archiviazione all'interno dell'host, con conseguente fallimento della richiesta. Per simulare un errore e il ripristino dell'endpoint primario con una route statica non valida, seguire questa procedura.

Avviare e mettere in pausa l'applicazione

Usare le istruzioni dell'esercitazione precedente per avviare l'esempio e scaricare il file di test, confermando che proviene da un'archiviazione primaria. A seconda della piattaforma di destinazione, è quindi possibile sospendere manualmente l'esempio o attendere un prompt dei comandi.

Simulare un errore

Mentre l'applicazione è in pausa, aprire un prompt dei comandi in Windows come amministratore oppure eseguire il terminale come utente ROOT in Linux.

Per ottenere informazioni sul dominio dell'endpoint primario dell'account di archiviazione, immettere il comando seguente al prompt dei comandi o nel terminale, sostituendo STORAGEACCOUNTNAME con il nome de proprio account di archiviazione.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

Copiare l'indirizzo IP dell'account di archiviazione in un editor di testo per usarlo in seguito.

Per ottenere l'indirizzo IP dell'host locale, digitare ipconfig al prompt dei comandi di Windows oppure ifconfig nel terminale Linux.

Per aggiungere una route statica per un host di destinazione, digitare il comando seguente al prompt dei comandi di Windows o nel terminale Linux, sostituendo <destination_ip> con l'indirizzo IP dell'account di archiviazione e <gateway_ip> con l'indirizzo IP dell'host locale.

Linux

sudo route add <destination_ip> gw <gateway_ip>

Windows

route add <destination_ip> <gateway_ip>

Nella finestra contenente l'esempio in esecuzione, riprendere l'applicazione o premere il tasto appropriato per scaricare il file di esempio e confermare che proviene da un'archiviazione secondaria. È quindi possibile sospendere nuovamente l'esempio o attendere un prompt dei comandi.

Simulare il ripristino di un endpoint primario

Per simulare il ripristino del funzionamento dell'endpoint primario, eliminare la route statica non valida dalla tabella di routing. In questo modo, tutte le richieste all'endpoint primario potranno essere instradate attraverso il gateway predefinito. Digitare il comando seguente al prompt dei comandi di Windows o nel terminale Linux.

Linux

sudo route del <destination_ip> gw <gateway_ip>

Windows

route delete <destination_ip>

È quindi possibile riprendere l'applicazione o premere il tasto appropriato per scaricare nuovamente il file di esempio, questa volta confermando che proviene ancora una volta da un'archiviazione primaria.

Simulare un errore con Fiddler

Per simulare un errore con Fiddler, si inserisce una risposta non riuscita per le richieste all'endpoint primario dell'account di archiviazione RA-GZRS.

Le sezioni seguenti illustrano come simulare un errore e il ripristino dell'endpoint primario con Fiddler.

Avviare Fiddler

Aprire Fiddler, selezionare Regole e Personalizza regole.

Customize Fiddler rules

Si avvia ScriptEditor di Fiddler, che visualizza il file SampleRules.js. Questo file viene usato per personalizzare Fiddler.

Incollare il codice di esempio seguente nella funzione OnBeforeResponse, sostituendo STORAGEACCOUNTNAME con il nome del proprio account di archiviazione. A seconda dell'esempio, potrebbe anche essere necessario sostituire HelloWorld con il nome del file di test scaricato o rimuovere tale parte della condizione se non è applicabile. Il nuovo codice è impostato come commentato per assicurarsi che non venga eseguito immediatamente.

Al termine, selezionare File e Salva per salvare le modifiche. Lasciare aperta la finestra ScriptEditor per l'uso nei passaggi seguenti.

    /*
        // Simulate data center failure
        // After it is successfully downloading the blob, pause the code in the sample,
        // uncomment these lines of script, and save the script.
        // It will intercept the (probably successful) responses and send back a 503 error.
        // When you're ready to stop sending back errors, comment these lines of script out again
        //     and save the changes.

        if ((oSession.hostname == "STORAGEACCOUNTNAME.blob.core.windows.net")
            // depending on the sample, you may need to modify or remove the line below
            && (oSession.PathAndQuery.Contains("HelloWorld"))) {
            oSession.responseCode = 503;
        }
    */

Paste customized rule

Avviare e mettere in pausa l'applicazione

Usare le istruzioni dell'esercitazione precedente per avviare l'esempio e scaricare il file di test, confermando che proviene da un'archiviazione primaria. A seconda della piattaforma di destinazione, è quindi possibile sospendere manualmente l'esempio o attendere un prompt dei comandi.

Simulare un errore

Mentre l'applicazione è in pausa, tornare a Fiddler e rimuovere il commento dalla regola personalizzata salvata nella funzione OnBeforeResponse. Assicurarsi di selezionare File e Salva per salvare le modifiche in modo da applicare la regola. Questo codice cerca le richieste inviate all'account di archiviazione RA-GZRS e, se il percorso contiene il nome del file di esempio, restituisce il codice di risposta 503 - Service Unavailable.

Nella finestra contenente l'esempio in esecuzione, riprendere l'applicazione o premere il tasto appropriato per scaricare il file di esempio e confermare che proviene da un'archiviazione secondaria. È quindi possibile sospendere nuovamente l'esempio o attendere un prompt dei comandi.

Simulare il ripristino di un endpoint primario

In Fiddler rimuovere o impostare nuovamente come commento la regola personalizzata. Selezionare File e Salva per assicurarsi che la regola non sia più in vigore.

Nella finestra contenente l'esempio in esecuzione, riprendere l'applicazione o premere il tasto appropriato per scaricare il file di esempio e confermare che proviene ancora una volta da un'archiviazione primaria. È quindi possibile chiudere l'esempio.

Passaggi successivi

Nella seconda parte della serie si è appreso come simulare un errore per testare l'archiviazione con ridondanza geografica e accesso in lettura.

Per altre informazioni sul funzionamento dell'archiviazione RA-GZRS e sui rischi associati, vedere Progettazione di app a disponibilità elevata con RA-GZRS.