チュートリアル:読み取りアクセス冗長ストレージにアクセスする際のエラーをシミュレートするTutorial: Simulate a failure in accessing read-access redundant storage

このチュートリアルは、シリーズの第 2 部です。This tutorial is part two of a series. ここでは、失敗をシミュレートすることによって、読み取りアクセス geo 冗長ストレージ (RA-GRS) の利点について学習します。In it, you learn about the benefits of a read-access geo-redundant (RA-GRS) by simulating a failure.

エラーをシミュレートするには、静的ルーティングまたは Fiddler のいずれかを使用できます。In order to simulate a failure, you can use either Static Routing or Fiddler. どちらの方法でも、読み取りアクセス geo 冗長ストレージ (RA-GRS) ストレージ アカウントのプライマリ エンドポイントに対する要求エラーをシミュレートして、アプリケーションが代わりにセカンダリ エンドポイントから読み取りを行うようにすることができます。Both methods will allow you to simulate failure for requests to the primary endpoint of your read-access geo-redundant (RA-GRS) storage account, causing the application read from the secondary endpoint instead.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

シリーズの第 2 部で学習する内容は次のとおりです。In part two of the series, you learn how to:

  • アプリケーションの実行と一時停止Run and pause the application
  • 無効な静的ルートまたは Fiddler を使用してエラーをシミュレートするSimulate a failure with an invalid static route or Fiddler
  • プライマリ エンドポイントの復元をシミュレートするSimulate primary endpoint restoration

前提条件Prerequisites

このチュートリアルを開始する前に、第 1 部のチュートリアル「Azure Storage を使用してアプリケーション データを高可用にする」を完了してください。Before you begin this tutorial, complete the previous tutorial: Make your application data highly available with Azure storage.

静的ルーティングを使用してエラーをシミュレートするには、管理者特権でのコマンド プロンプトを使用します。To simulate a failure with static routing, you will use an elevated command prompt.

Fiddler を使用してエラーをシミュレートするには、Fiddler をダウンロードしてインストールします。To simulate a failure using Fiddler, download and install Fiddler

無効な静的ルートで失敗をシミュレートするSimulate a failure with an invalid static route

read-access geo-redundant (RA-GRS) ストレージ アカウントのプライマリ エンドポイントに対するすべての要求について無効な静的ルートを作成することができます。You can create an invalid static route for all requests to the primary endpoint of your read-access geo-redundant (RA-GRS) storage account. このチュートリアルでは、ストレージ アカウントに要求をルーティングするためのゲートウェイとしてローカル ホストを使用します。In this tutorial, the local host is used as the gateway for routing requests to the storage account. ローカル ホストをゲートウェイとして使用すると、ストレージ アカウントのプライマリ エンドポイントに対するすべての要求がホスト内でループバックされ、その後エラーとなります。Using the local host as the gateway causes all requests to your storage account primary endpoint to loop back inside the host, which subsequently leads to failure. 失敗とプライマリ エンドポイントの回復を無効な静的ルートでシミュレートするには、次の手順に従います。Follow the following steps to simulate a failure, and primary endpoint restoration with an invalid static route.

アプリケーションの開始と一時停止Start and pause the application

前のチュートリアルの手順に従ってサンプルを起動し、テスト ファイルをダウンロードします。それがプライマリ ストレージからダウンロードされていることを確認します。Use the instructions in the previous tutorial to launch the sample and download the test file, confirming that it comes from primary storage. ターゲット プラットフォームに応じて、サンプルを手動で一時停止するか、プロンプトで待機できます。Depending on your target platform, you can then manually pause the sample or wait at a prompt.

エラーをシミュレートするSimulate failure

アプリケーションが一時停止している間に、管理者としてコマンド プロンプトを起動する (Windows の場合) か、root としてターミナルを実行します (Linux の場合)。While the application is paused, open a command prompt on Windows as an administrator or run terminal as root on Linux.

コマンド プロンプトまたはターミナルから、次のコマンドの STORAGEACCOUNTNAME を自分のストレージ アカウントの名前に置き換えて入力し、ストレージ アカウントのプライマリ エンドポイント ドメインに関する情報を取得します。Get information about the storage account primary endpoint domain by entering the following command on a command prompt or terminal, replacing STORAGEACCOUNTNAME with the name of your storage account.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

ストレージ アカウントの IP アドレスを後で使用できるようテキスト エディターにコピーします。Copy to the IP address of your storage account to a text editor for later use.

ローカル ホストの IP アドレスを取得するには、Windows のコマンド プロンプトから「ipconfig」と入力するか、または Linux のターミナルから「ifconfig」と入力します。To get the IP address of your local host, type ipconfig on the Windows command prompt, or ifconfig on the Linux terminal.

宛先ホスト用の静的ルートを追加するには、Windows のコマンド プロンプトまたは Linux ターミナルから、次のコマンドの <destination_ip> を自分のストレージ アカウントの IP アドレスに、<gateway_ip> を自分のローカル ホストの IP アドレスに置き換えて入力します。To add a static route for a destination host, type the following command on a Windows command prompt or Linux terminal, replacing <destination_ip> with your storage account IP address and <gateway_ip> with your local host IP address.

LinuxLinux

route add <destination_ip> gw <gateway_ip>

WindowsWindows

route add <destination_ip> <gateway_ip>

サンプルを実行中のウィンドウで、アプリケーションを再開するか適切なキーを押してサンプル ファイルをダウンロードします。それがセカンダリ ストレージからダウンロードされていることを確認します。In the window with the running sample, resume the application or press the appropriate key to download the sample file and confirm that it comes from secondary storage. その後、サンプルをもう一度一時停止するか、プロンプトで待機できます。You can then pause the sample again or wait at the prompt.

プライマリ エンドポイントの復元をシミュレートするSimulate primary endpoint restoration

プライマリ エンドポイントが再び機能するようになった状態をシミュレートするには、無効な静的ルートをルーティング テーブルから削除します。To simulate the primary endpoint becoming functional again, delete the invalid static route from the routing table. これにより、プライマリ エンドポイントに対する要求はすべて、デフォルト ゲートウェイを介してルーティングできるようになります。This allows all requests to the primary endpoint to be routed through the default gateway. Windows のコマンド プロンプトまたは Linux のターミナルから次のコマンドを入力します。Type the following command on a Windows command prompt or Linux terminal.

LinuxLinux

route del <destination_ip> gw <gateway_ip>

WindowsWindows

route delete <destination_ip>

アプリケーションを再開するか適切なキーを押してサンプル ファイルをダウンロードします。今回は、それが再びプライマリ ストレージからダウンロードされていることを確認します。You can then resume the application or press the appropriate key to download the sample file again, this time confirming that it once again comes from primary storage.

Fiddler で失敗をシミュレートするSimulate a failure with Fiddler

Fiddler を使用して失敗をシミュレートするには、RA-GRS ストレージ アカウントのプライマリ エンドポイントに対する要求について失敗した応答を挿入します。To simulate failure with Fiddler, you inject a failed response for requests to the primary endpoint of your RA-GRS storage account.

以降のセクションでは、fiddler を使用して失敗とプライマリ エンドポイントの回復をシミュレートする方法について説明します。The following sections depict how to simulate a failure and primary endpoint restoration with fiddler.

Fiddler を起動するLaunch fiddler

Fiddler を開き、[Rules](ルール)[Customize Rules](ルールのカスタマイズ) の順に選択します。Open Fiddler, select Rules and Customize Rules.

Fiddler のルールをカスタマイズする

Fiddler ScriptEditor が起動し、SampleRules.js ファイルが表示されます。The Fiddler ScriptEditor launches and displays the SampleRules.js file. このファイルを使用して Fiddler をカスタマイズします。This file is used to customize Fiddler.

次のサンプル コードの STORAGEACCOUNTNAME を自分のストレージ アカウントの名前に置き換えて OnBeforeResponse 関数内に貼り付けます。Paste the following code sample in the OnBeforeResponse function, replacing STORAGEACCOUNTNAME with the name of your storage account. サンプルによっては、HelloWorld を、ダウンロードするテスト ファイルの名前 (または sampleFile などのプレフィックス) に置き換えなければならない場合があります。Depending on the sample, you may also need to replace HelloWorld with the name of the test file (or a prefix such as sampleFile) being downloaded. この新しいコードは、すぐに実行されないようにコメント アウトされています。The new code is commented out to ensure that it doesn't run immediately.

完了したら、[File](ファイル)[Save](保存) の順に選択して変更を保存します。Once complete, select File and Save to save your changes. ScriptEditor ウィンドウは、次の手順で使用するため、開いたままにしておきます。Leave the ScriptEditor window open for use in the following steps.

    /*
        // 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")
            && (oSession.PathAndQuery.Contains("HelloWorld"))) {
            oSession.responseCode = 503;
        }
    */

カスタマイズしたルールを貼り付ける

アプリケーションの開始と一時停止Start and pause the application

前のチュートリアルの手順に従ってサンプルを起動し、テスト ファイルをダウンロードします。それがプライマリ ストレージからダウンロードされていることを確認します。Use the instructions in the previous tutorial to launch the sample and download the test file, confirming that it comes from primary storage. ターゲット プラットフォームに応じて、サンプルを手動で一時停止するか、プロンプトで待機できます。Depending on your target platform, you can then manually pause the sample or wait at a prompt.

エラーをシミュレートするSimulate failure

アプリケーションが一時停止している間に、Fiddler に戻り、OnBeforeResponse 関数内に保存したカスタム ルールのコメントを解除します。While the application is paused, switch back to Fiddler and uncomment the custom rule you saved in the OnBeforeResponse function. [ファイル][保存] を選択して、ルールが有効になるように変更を保存します。Be sure to select File and Save to save your changes so the rule will take effect. このコードでは、RA-GRS ストレージ アカウントに対する要求を探し、パスにサンプル ファイルの名前が含まれている場合は、応答コード 503 - Service Unavailable を返します。This code looks for requests to the RA-GRS storage account and, if the path contains the name of the sample file, returns a response code of 503 - Service Unavailable.

サンプルを実行中のウィンドウで、アプリケーションを再開するか適切なキーを押してサンプル ファイルをダウンロードします。それがセカンダリ ストレージからダウンロードされていることを確認します。In the window with the running sample, resume the application or press the appropriate key to download the sample file and confirm that it comes from secondary storage. その後、サンプルをもう一度一時停止するか、プロンプトで待機できます。You can then pause the sample again or wait at the prompt.

プライマリ エンドポイントの復元をシミュレートするSimulate primary endpoint restoration

Fiddler で、カスタム ルールを削除するか、もう一度コメント アウトします。In Fiddler, remove or comment out the custom rule again. [ファイル][保存] を選択して、ルールが有効ではなくなったことを確認します。Select File and Save to ensure the rule will no longer be in effect.

サンプルを実行中のウィンドウで、アプリケーションを再開するか適切なキーを押してサンプル ファイルをダウンロードします。それが再びプライマリ ストレージからダウンロードされていることを確認します。In the window with the running sample, resume the application or press the appropriate key to download the sample file and confirm that it comes from primary storage once again. この後、サンプルを終了できます。You can then exit the sample.

次の手順Next steps

シリーズの第 2 部では、失敗をシミュレートして読み取りアクセス geo 冗長ストレージをテストする方法について学習しました。In part two of the series, you learned about simulating a failure to test read access geo-redundant storage.

RA-GRS ストレージのしくみとそれに関連するリスクの詳細については、次の記事を参照してください。To learn more about how RA-GRS storage works, as well as its associated risks, read the following article: