Tutoriel : Simuler une défaillance lors de la lecture de données à partir de la région primaire

Ce tutoriel est le deuxième d’une série. Il vous permet de découvrir les avantages d’un stockage géographiquement redondant interzone avec accès en lecture (RA-GZRS) en simulant une défaillance.

Pour simuler une défaillance, vous pouvez utiliser un routage statique ou Fiddler. Les deux méthodes vous permettent de simuler l’échec des demandes d’accès au point de terminaison principal de votre compte de stockage géographiquement redondant interzone avec accès en lecture (RA-GZRS), pour que l’application lise plutôt le point de terminaison secondaire.

Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Dans ce deuxième volet, vous apprenez à :

  • Exécuter et interrompre l’application
  • Simuler une défaillance avec un routage statique non valide ou Fiddler
  • Simuler la restauration du point de terminaison principal

Prérequis

Avant de commencer ce tutoriel, suivez le tutoriel précédent : Rendre vos données d’application hautement disponibles avec le stockage Azure.

Pour simuler une défaillance avec un routage statique, vous allez utiliser une invite de commandes avec élévation de privilèges.

Pour simuler une défaillance à l’aide de Fiddler, téléchargez et installez Fiddler

Simuler une défaillance avec un itinéraire statique non valide

Vous pouvez créer un itinéraire statique non valide pour toutes les demandes d’accès au point de terminaison principal de votre compte de stockage RA-GZRS (géoredondant interzone avec accès en lecture). Dans ce didacticiel, l’hôte local sert de passerelle pour acheminer les demandes de routage vers le compte de stockage. Le recours à l’hôte local en tant que passerelle amène toutes les demandes d’accès au point de terminaison principal de votre compte de stockage à effectuer une boucle dans l’hôte, ce qui engendre un échec de la requête. Suivez les étapes ci-après pour simuler une défaillance ainsi que la restauration du point de terminaison principal avec un itinéraire statique non valide.

Démarrer et interrompre l’application

Suivez les instructions du tutoriel précédent pour lancer l’exemple et télécharger le fichier de test, en confirmant qu’il provient du stockage principal. Selon votre plateforme cible, vous pouvez ensuite manuellement mettre en pause l’exemple ou attendre l’affichage d’une invite de commandes.

Simuler une défaillance

Une fois l’application mise en pause, ouvrez une invite de commandes sur Windows en tant qu’administrateur ou exécutez le terminal en tant qu’utilisateur racine sur Linux.

Pour obtenir plus d’informations sur le domaine du point de terminaison principal du compte de stockage, entrez la commande suivante dans une invite de commandes ou un terminal, en remplaçant STORAGEACCOUNTNAME par le nom du compte de stockage.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

Copiez l’adresse IP de votre compte de stockage dans un éditeur de texte pour une utilisation ultérieure.

Pour obtenir l’adresse IP de l’hôte local, entrez ipconfig dans l’invite de commandes Windows ou ifconfig dans le terminal Linux.

Pour ajouter un routage statique pour un hôte de destination, tapez la commande suivante sur l’invite de commandes Windows ou le terminal Linux, en remplaçant <destination_ip> par l’adresse IP de votre compte de stockage et <gateway_ip> par l’adresse de l’hôte local.

Linux

sudo route add <destination_ip> gw <gateway_ip>

Windows

route add <destination_ip> <gateway_ip>

Dans la fenêtre affichant l’exemple exécuté, redémarrez l’application ou appuyez sur la touche appropriée pour télécharger l’exemple de fichier et vérifier qu’il provient du stockage secondaire. Vous pouvez ensuite remettre en pause l’exemple ou attendre l’affichage de l’invite.

Simuler la restauration du point de terminaison principal

Pour simuler le fait que le point de terminaison principal devient à nouveau fonctionnel, supprimez le routage statique non valide de la table de routage. Ainsi, toutes les demandes d’accès au point de terminaison principal peuvent être acheminées au moyen de la passerelle par défaut. Entrez la commande suivante dans une invite de commandes Windows ou un terminal Linux.

Linux

sudo route del <destination_ip> gw <gateway_ip>

Windows

route delete <destination_ip>

Vous pouvez ensuite redémarrer l’application ou appuyer sur la touche appropriée pour retélécharger l’exemple de fichier, cette fois en confirmant qu’il est redevenu le stockage principal.

Simuler une défaillance à l’aide de Fiddler

Pour simuler une défaillance avec Fiddler, vous injectez un échec de réponse vis-à-vis des demandes d’accès au point de terminaison principal de votre compte de stockage RA-GZRS.

Les sections suivantes décrivent la manière de simuler une défaillance ainsi que la restauration du point de terminaison principal avec Fiddler.

Lancer Fiddler

Ouvrez Fiddler, sélectionnez Rules (Règles) et Customize Rules (Personnaliser les règles).

Personnaliser les règles de Fiddler

Fiddler ScriptEditor se lance et affiche le fichier SampleRules.js. Ce fichier sert à personnaliser Fiddler.

Collez l’exemple de code suivant dans la fonction OnBeforeResponse, en remplaçant STORAGEACCOUNTNAME par le nom de votre compte de stockage. En fonction de l’exemple, vous devrez peut-être également remplacer HelloWorld par le nom du fichier de test en cours de téléchargement, ou supprimer cette partie de la condition si elle ne s’applique pas. Le nouveau code est commenté pour qu’il ne soit pas exécuté immédiatement.

Une fois l’opération effectuée, sélectionnez File (Fichier) et Save (Enregistrer) pour enregistrer les changements apportés. Laissez la fenêtre ScriptEditor ouverte car vous allez l’utiliser dans les étapes suivantes.

    /*
        // 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;
        }
    */

Coller la règle personnalisée

Démarrer et interrompre l’application

Suivez les instructions du tutoriel précédent pour lancer l’exemple et télécharger le fichier de test, en confirmant qu’il provient du stockage principal. Selon votre plateforme cible, vous pouvez ensuite manuellement mettre en pause l’exemple ou attendre l’affichage d’une invite de commandes.

Simuler une défaillance

Pendant que l’application est en pause, revenez à Fiddler et décommentez la règle personnalisée que vous avez enregistrée dans la fonction OnBeforeResponse. Veillez à sélectionner Fichier et Enregistrer pour enregistrer vos changements afin que la règle prenne effet. Ce code recherche les demandes d’accès au compte de stockage RA-GZRS. Si le chemin contient le nom de l’exemple de fichier, il retourne le code de réponse 503 - Service Unavailable.

Dans la fenêtre affichant l’exemple exécuté, redémarrez l’application ou appuyez sur la touche appropriée pour télécharger l’exemple de fichier et vérifier qu’il provient du stockage secondaire. Vous pouvez ensuite remettre en pause l’exemple ou attendre l’affichage de l’invite.

Simuler la restauration du point de terminaison principal

Dans Fiddler, supprimez ou commentez la règle personnalisée à nouveau. Sélectionnez Fichier et Enregistrer pour vous assurer que la règle n’est plus en vigueur.

Dans la fenêtre avec l’exemple exécuté, redémarrez l’application ou appuyez sur la touche appropriée pour télécharger l’exemple de fichier et vérifier qu’il provient à nouveau du stockage principal. Vous pouvez à présent quitter l’exemple.

Étapes suivantes

Dans ce deuxième volet, vous avez appris à simuler une défaillance pour tester le stockage géoredondant avec accès en lecture.

Pour en savoir plus sur le fonctionnement du stockage RA-GZRS et ses risques associés, consultez Conception d’applications haute disponibilité avec RA-GZRS.