Udostępnij za pośrednictwem


Samouczek: symulowanie błędu podczas odczytywania danych z regionu podstawowego

Niniejszy samouczek jest drugą częścią serii. W nim dowiesz się więcej o zaletach magazynu nadmiarowego na poziomie strefy geograficznej z dostępem do odczytu (RA-GZRS), poprzez symulację awarii.

Aby zasymulować awarię, możesz użyć routingu statycznego lub programu Fiddler. Obie metody umożliwiają symulowanie błędu dla żądań do podstawowego punktu końcowego konta magazynu RA-GZRS, co spowoduje, że aplikacja będzie odczytywać z pomocniczego punktu końcowego.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Część druga serii zawiera informacje na temat wykonywania następujących czynności:

Wymagania wstępne

Przed rozpoczęciem tego samouczka ukończ poprzedni samouczek: Udostępnianie danych aplikacji o wysokiej dostępności za pomocą usługi Azure Storage.

Aby zasymulować awarię przy użyciu routingu statycznego, użyjesz wiersza polecenia z podwyższonym poziomem uprawnień.

Aby symulować błąd przy użyciu programu Fiddler, pobierz i zainstaluj program Fiddler

Zasymuluj błąd z nieprawidłową trasą statyczną

Można utworzyć nieprawidłową trasę statyczną dla wszystkich żądań do podstawowego punktu końcowego konta przechowywania RA-GZRS. W tym samouczku host lokalny jest używany jako brama do kierowania żądań do konta magazynu. Użycie hosta lokalnego jako bramy powoduje, że wszystkie żądania do podstawowego punktu końcowego konta magazynu wracają do środka hosta, co skutkuje niepowodzeniem żądania. Wykonaj poniższe kroki, aby zasymulować awarię i przywrócić podstawowy punkt końcowy przy użyciu nieprawidłowej trasy statycznej.

Uruchamianie i wstrzymywanie aplikacji

Skorzystaj z instrukcji w poprzednim samouczku, aby uruchomić przykład i pobrać plik testowy, potwierdzając, że pochodzi z podstawowej pamięci masowej. W zależności od platformy docelowej możesz ręcznie wstrzymać próbkę lub poczekać na monit.

Symulowanie błędu

Gdy aplikacja jest wstrzymana, otwórz wiersz polecenia w systemie Windows jako administrator lub uruchom terminal jako główny w systemie Linux.

Uzyskaj informacje o podstawowej domenie punktu końcowego konta magazynu, wprowadzając następujące polecenie w wierszu polecenia lub terminalu, zastępując STORAGEACCOUNTNAME ciąg nazwą konta magazynu.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

Skopiuj adres IP swojego konta magazynu do edytora tekstu do późniejszego użycia.

Aby uzyskać adres IP hosta lokalnego, wpisz ipconfig w wierszu polecenia systemu Windows lub ifconfig w terminalu systemu Linux.

Aby dodać trasę statyczną dla hosta docelowego, wpisz następujące polecenie w wierszu polecenia systemu Windows lub terminalu systemu Linux, zastępując <destination_ip> adresem IP konta magazynu oraz <gateway_ip> adresem IP hosta lokalnego.

Linux

sudo route add <destination_ip> gw <gateway_ip>

Windows

route add <destination_ip> <gateway_ip>

W oknie z uruchomionym przykładem wznów aplikację lub naciśnij odpowiedni, aby pobrać przykładowy plik i potwierdzić, że pochodzi z pomocniczego magazynu. Następnie możesz wstrzymać próbkę ponownie lub poczekać po wyświetleniu monitu.

Symulowanie przywracania podstawowego punktu końcowego

Aby zasymulować ponowne działanie podstawowego punktu końcowego, usuń nieprawidłową trasę statyczną z tabeli routingu. Dzięki temu wszystkie żądania do podstawowego punktu końcowego będą kierowane przez bramę domyślną. Wpisz następujące polecenie w wierszu polecenia systemu Windows lub terminalu systemu Linux.

Linux

sudo route del <destination_ip> gw <gateway_ip>

Windows

route delete <destination_ip>

Następnie możesz wznowić działanie aplikacji lub nacisnąć odpowiedni klawisz, aby ponownie pobrać przykładowy plik, tym razem potwierdzając, że po raz kolejny pochodzi z pamięci podstawowej.

Symulowanie błędu za pomocą programu Fiddler

Aby zasymulować awarię za pomocą narzędzia Fiddler, należy wstrzyknąć nieudaną odpowiedź dla żądań kierowanych do podstawowego punktu końcowego konta magazynowego RA-GZRS.

W poniższych sekcjach przedstawiono sposób symulowania awarii i przywracania podstawowego punktu końcowego za pomocą programu fiddler.

Uruchamianie programu fiddler

Otwórz program Fiddler, wybierz pozycję Reguły i Dostosuj reguły.

Dostosowywanie reguł programu Fiddler

Program Fiddler ScriptEditor uruchamia i wyświetla plik SampleRules.js . Ten plik służy do dostosowywania programu Fiddler.

Wklej poniższy przykładowy kod w funkcji OnBeforeResponse, zastępując STORAGEACCOUNTNAME nazwą swojego konta magazynowego. W zależności od przykładu może być również konieczne zastąpienie HelloWorld nazwą pobranego pliku testowego lub usunięcie tej części warunku, jeśli nie ma zastosowania. Nowy kod jest zakomentowany, aby upewnić się, że nie zostanie uruchomiony natychmiast.

Po zakończeniu wybierz pozycję Plik i Zapisz , aby zapisać zmiany. Pozostaw otwarte okno ScriptEditor, aby użyć go w poniższych krokach.

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

Wklej niestandardową regułę

Uruchamianie i wstrzymywanie aplikacji

Skorzystaj z instrukcji w poprzednim samouczku, aby uruchomić przykład i pobrać plik testowy, aby potwierdzić, że pochodzi z magazynu podstawowego. W zależności od platformy docelowej możesz ręcznie wstrzymać próbkowanie lub poczekać na monit.

Symulowanie błędu

Gdy aplikacja jest wstrzymana, wróć do programu Fiddler i usuń komentarz z reguły niestandardowej, którą zapisałeś w funkcji OnBeforeResponse. Pamiętaj, aby wybrać pozycję Plik i Zapisz , aby zapisać zmiany, aby reguła weszła w życie. Ten kod wyszukuje żądania do konta magazynowego RA-GZRS, a jeśli ścieżka zawiera nazwę przykładowego pliku, zwraca kod odpowiedzi 503 - Service Unavailable.

W oknie z uruchomionym przykładem wznów aplikację lub naciśnij odpowiedni klawisz, aby pobrać przykładowy plik i potwierdzić, że pochodzi z pamięci pomocniczej. Następnie możesz wstrzymać próbkę ponownie lub poczekać po wyświetleniu monitu.

Symulowanie przywracania podstawowego punktu końcowego

W programie Fiddler usuń lub zakomentuj ponownie regułę niestandardową. Wybierz pozycję Plik i Zapisz , aby upewnić się, że reguła nie będzie już obowiązywać.

W oknie z uruchomionym przykładem wznów aplikację lub naciśnij odpowiedni klawisz, aby pobrać przykładowy plik i potwierdzić, że pochodzi z pamięci głównej. Następnie możesz opuścić przykład.

Następne kroki

W drugiej części serii nauczyłeś się, jak symulować awarię w celu przetestowania georedundantnego magazynu z dostępem tylko do odczytu.

Aby dowiedzieć się więcej o funkcjonowaniu magazynu RA-GZRS oraz związanych z nim ryzykach, zobacz Projektowanie aplikacji wysokiej dostępności z RA-GZRS.