このドキュメントはアーカイブされており、メンテナンスされていません。

Azure 共有キャッシュから In-Role Cache への移行

更新日: 2015年8月

Important重要
新しいすべての開発で Azure Redis Cache を使用することをお勧めします。Azure Cache サービスに関する現在のドキュメントとガイダンスについては、「Redis Cache のサービス内容と適切なサイズの選択」をご覧ください。

Microsoft Azure Shared Caching を使用するアプリケーションの インロール キャッシュ キャッシュへの移行は、アプリケーションに最小限の変更を加えるだけで実現できます。インロール キャッシュ では Shared Caching と同じ API を使用するので、Shared Caching を使用してキャッシュにアクセスする既存のコードを再利用して インロール キャッシュ In-Role Cache にアクセスできます。このトピックでは、Shared Caching を使用できるように インロール キャッシュ アプリケーションを移行するために必要な構成とアプリケーションの変更を行う方法を示します。

noteメモ
インロール キャッシュ を使用する利点については、「Azure Cache 用の In-Role Cache について」をご覧ください。

インロール キャッシュ では、Azure ロールの キャッシュ サービスをホストする機能が用意されています。このモデルでは、キャッシュはクラウド サービスの一部です。クラウド サービス内の 1 つのロールが インロール キャッシュ をホストするために選択されます。そのロールの実行中のインスタンスはメモリ リソースを結合し、キャッシュ クラスターを形成します。このプライベート キャッシュ クラスターは、同じ配置内のロールでのみ使用できます。インロール キャッシュ の展開トポロジには次の 2 つがあります。専用トポロジと共存トポロジです。

 

キャッシュ クラスター デプロイのトポロジ 説明

専用のロールのキャッシュ

ワーカー ロール インスタンスは、キャッシュ専用です。

併置型ロールのキャッシュ

このキャッシュは、VM リソース (帯域幅、CPU、およびメモリ) を、ロールがホストするプライマリ アプリケーションと共有します。

アプリケーションが既存のロールでメモリを使用していない場合、既存のロールで併置型ロールのキャッシュ クラスターを構成し、その余分なメモリをキャッシュに使用することができます。キャッシュ クラスターをサポートできるような余分なメモリがロールにはない場合は、ロールをスケールアウトするか、キャッシュ ワーカー ロールを追加して専用ロール キャッシュ クラスターを構成します。

専用ロール キャッシュ クラスターを構成するには、プロジェクトにキャッシュ ワーカー ロールを追加します。キャッシュ ワーカー ロールを追加するには、ソリューション エクスプローラーで Azure を展開します (まだ展開していない場合)。

noteメモ
専用ロール キャッシュはワーカー ロールでのみサポートされ、Web ロールでは構成できません。

Azure プロジェクトの [ロール] フォルダーを右クリックし、[追加]、[新しいワーカー ロール プロジェクト] の順にクリックし、[キャッシュ ワーカー ロール] をクリックします。[名前] ボックスにロールの名前を入力し、[追加] をクリックします。

キャッシュ ワーカー ロールの追加

キャッシュ ワーカー ロールは、あらかじめ専用ロール キャッシュ用に構成されています。設定を表示するには、Azure の [ロール] フォルダーに新しく追加されたロールを右クリックし、[プロパティ] をクリックします。

キャッシュ ワーカー ロール プロパティのショートカット メニュー

[キャッシュ] タブに切り替えて、キャッシュ ワーカー ロールのキャッシュ プロパティを確認します。

キャッシュ ワーカー ロール プロパティ

このロールはキャッシュ ワーカー ロールであるため、[キャッシュを有効にする] チェック ボックスは既にオンになっており、[専用ロール] キャッシュが選択されています。キャッシュの設定は、[名前付きキャッシュ設定] セクションで構成されます。インロール キャッシュ と Microsoft Azure Shared Caching の間では、キャッシュ設定にいくつか違いがあります。これらの設定については、「キャッシュ クラスター ストレージ アカウントの構成」および「名前付きキャッシュ設定を構成する」を参照してください。

[構成] タブに切り替えます。

ロール インスタンス VM サイズとインスタンス数

既定の [インスタンス数] は 1 であり、既定の [VM サイズ] は [] です。目的の構成に合わせて、これらの設定を変更します。「Azure In-Role Cache の容量計画に関する考慮事項」では、アプリケーションのキャッシュ要件を満たすためにどの設定を選択するかに関するガイダンスを示します。

キャッシュ ワーカー ロールを追加し、仮想マシンのサイズとインスタンス数を構成したら、次の「名前付きキャッシュ設定を構成する」の説明に従ってキャッシュを構成できます。

併置型ロール キャッシュ クラスターを構成するには、Azure の [ロール] フォルダーで目的のロールを右クリックし、[プロパティ] をクリックします。

Web ロールのプロパティ

[キャッシュ] タブに切り替えて、[キャッシュを有効にする] チェック ボックスをオンにし、目的のキャッシュ オプションを指定します。既定の構成では、ロール インスタンスのメモリの 30% がキャッシュ用に割り当てられます。[キャッシュ サイズ (%)] スライダーを調整して、目的のキャッシュ サイズを構成します。

ロール プロパティのキャッシュ

キャッシュ サイズを決定するための基本的な概算式は、ロール インスタンスの数に、仮想マシン サイズに基づくメモリの容量を乗算し、指定するパーセンテージを計算します。この式は、ごく基本的な概算式であることに注意してください。目的のサイズのキャッシュをプロビジョニングするために必要な設定の詳細については、「Azure In-Role Cache の容量計画に関する考慮事項」を参照してください。キャッシュ クラスターを正常にホストするために、ロール インスタンスを追加したり、仮想マシンのサイズを大きくしたりする必要がある場合は、[構成] タブで構成できます。

インロール キャッシュ には Azure ストレージ アカウントが必要です。このストレージ アカウントはキャッシュ クラスターに関する構成データの保持に使用され、キャッシュ クラスターを構成するすべての仮想マシンからアクセスできます。このストレージ アカウントは、キャッシュ クラスター ロールのプロパティ ページにある [キャッシュ] タブで [名前付きキャッシュ設定] のすぐ上に指定します。

キャッシュ クラスター ストレージ アカウント
Important重要
このストレージ アカウントが構成されていない場合、ロールを開始できません。

キャッシュの設定は、[名前付きキャッシュ設定] セクションで構成されます。

名前付きキャッシュ設定

インロール キャッシュ と Microsoft Azure Shared Caching の間では、キャッシュ設定にいくつか違いがあります。

 

機能 インロール キャッシュ でのサポート Microsoft Azure Shared Caching でのサポート

名前

既定のキャッシュが構成され、必要に応じて、追加の名前付きキャッシュを構成できます。

既定のキャッシュのみ。

高可用性

キャッシュ内のアイテムに高可用性を提供します。あるロールが停止しても、キャッシュ内のアイテムのバックアップ コピーはそのまま使用できます。

高可用性なし。

通知

通知を使用すると、さまざまなキャッシュ操作がキャッシュ クラスターで行われたときにアプリケーションで非同期通知を受信できます。

詳細については、TechNet の「 Azure In-Role Cache での通知

サポートされていません。

削除ポリシー

選択項目は、[LRU] (最も長く使用していない) か、または [なし] です。既定値は [LRU] です。

LRU のみ。

有効期限 (分)

キャッシュ内のアイテムの既定の有効期限は 10 分ですが、構成可能です。キャッシュに追加される個々のアイテムの有効期限も、キャッシュにアイテムが追加されるときに Add および Put のオーバーロードを使用して指定できます。

既定の有効期限は 24 時間であり、これは構成できません。キャッシュに追加される個々のアイテムの有効期限は、キャッシュにアイテムが追加されるときに Add および Put のオーバーロードを使用して構成できます。

有効期限の種類

[有効期限の種類] には、[なし]、[絶対]、[スライディング ウィンドウ][絶対] を指定した場合、[Time to Live (TTL) (分)] で指定された有効期間は、アイテムがキャッシュに追加されたときに開始されます。[スライディング ウィンドウ] を指定した場合、有効期間はアイテムがキャッシュ内でアクセスされるたびにリセットされます。[なし] を指定した場合、[Time To Live (TTL) (分)] は 0 に設定され、アイテムの有効期限は切れません。既定値は [絶対] です。

詳細については、TechNet の「 Azure In-Role Cache の有効期限と削除.

有効期限ポリシーは絶対です。アイテムがキャッシュに追加されると、有効期限間隔が開始します。

キャッシュ クラスターを構成したら、次の手順では、キャッシュ クライアントがキャッシュにアクセスできるように、必要な構成と参照を追加します。インロール キャッシュ では、クライアントには、キャッシュ クラスターと同じ展開に含まれるどのロールでも指定できます。併置型ロール キャッシュ クラスターにアクセスする場合は、クライアントには、キャッシュ クラスターをホストするロール自体を指定できます。キャッシュ クライアントを構成するには、キャッシュにアクセスする各ロールについて以下の手順を実行します。

インロール キャッシュ のクライアント ロールを構成する前に、既存の Shared Caching の構成とアセンブリ参照を削除する必要があります。Shared Caching が Shared Caching NuGet パッケージを使用して構成されている場合は、Shared Caching NuGet パッケージをアンインストールすることによって構成を削除できます。それ以外の場合は、手動で構成を削除する必要があります。

Shared Caching NuGet パッケージをアンインストールするには、ソリューション エクスプローラーで目的のクライアント ロールを右クリックし、[NuGet パッケージの管理] をクリックします。[インストール済みのパッケージ] ノードを選択し、[インストール済みパッケージの検索] ボックスに「キャッシュ」と入力します。[Azure Shared Caching] を選択し、[アンインストール] をクリックして [閉じる] をクリックします。

Shared Caching NuGet パッケージのアンインストール
noteメモ
Microsoft Azure Shared Caching NuGet パッケージが一覧に表示されていない場合は、[閉じる] をクリックして「共有キャッシュ構成の手動削除」にある手順に従います。

Shared Caching NuGet パッケージをアンインストールすると、Shared Caching アセンブリと、クライアント ロールの app.config または web.config の Shared Caching エントリが削除されます。一部のカスタマイズした設定は NuGet パッケージをアンインストールしても削除されない場合があるため、web.config または app.config を開き、次の要素が完全に削除されていることを確認します。

  • dataCacheClients エントリが configSections 要素から削除されていることを確認します。configSections 要素全体を削除しないでください。dataCacheClients エントリ (存在する場合) のみを削除します。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • dataCacheClients セクションが削除されていることを確認します。dataCacheClients セクションは次に示す例のようになります。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

Shared Caching の構成が削除されたら、この後の「Caching NuGet パッケージを使用してキャッシュ クライアントを構成する」セクションの説明に従ってキャッシュ クライアントを構成することができます。

Shared Caching 構成を手動で削除するには、Shared Caching アセンブリ参照および Shared Caching 構成を app.config または web.config から削除する必要があります。

Shared Caching アセンブリ参照を削除するには、ソリューション エクスプローラーで目的のクライアント ロールを選択し、[参照] フォルダーを展開します。以下の一覧の各アセンブリについて、ソリューション エクスプローラーの [参照] フォルダーでアセンブリを右クリックし、[削除] を選択します。クライアント ロールが Web ロールの場合は、Microsoft.Web.DistributedCache も削除します。

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

Shared Caching の構成を削除するには、クライアント ロールの web.config または app.config を開き、次の 2 つの項目を削除します。

  • dataCacheClients エントリを configSections 要素から削除します。configSections 要素全体を削除しないでください。dataCacheClients エントリ (存在する場合) のみを削除します。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 次の例のような dataCacheClients セクションを削除します。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

これらの項目を削除した後は、次のセクションの手順に従って、キャッシュ クライアントを構成できます。

インロール キャッシュ には、クライアント ロールがキャッシュ クラスターにアクセスできるようにするために必要な構成およびアセンブリ参照を追加する NuGet パッケージが用意されています。

Important重要
インロール キャッシュ NuGet パッケージを使用してキャッシュ クライアントを構成する前に、クライアント ロールの web.config または app.config から Shared Caching の構成が完全に削除されていることを確認します (前のセクションを参照)。

インロール キャッシュ NuGet パッケージを使用するには、ソリューション エクスプローラーで目的のクライアント ロールを右クリックし、[NuGet パッケージの管理] をクリックします。

NuGet パッケージの管理

[Azure Caching] を選択し、[インストール] をクリックし、[同意する] をクリックします。パッケージがロールにインストールされたら、[閉じる] をクリックして [NuGet パッケージの管理] ウィンドウを閉じます。

noteメモ
一覧に [Azure Caching] が表示されない場合は、[オンラインで検索] ボックスに「WindowsAzure.Caching」と入力します。

NuGet を使用する Caching の有効化

インロール キャッシュ NuGet パッケージは、クライアント ロールにインストールされると、クライアント ロールが目的のキャッシュ クラスターにアクセスできるように、必要な構成およびアセンブリ参照を追加します。

ロールの web.config または app.config に、いくつかのアイテムが追加されます。

  1. configSectionsdataCacheClientscacheDiagnostics という 2 つのセクションが追加されます。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
      <section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  2. dataCacheClients セクションが configuration セクションに追加されます。

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    
    [cache cluster role name] を、キャッシュ クラスターをホストするロールの名前に置き換えます。次の例では、[cache cluster role name]CacheWorkerRole1 に置き換えています。

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    
    Warning警告
    この設定が正しく構成されていない場合、クライアントはキャッシュにアクセスできません。identifier がロールにマップされていない場合、キャッシュにアクセスしたときに、TargetInvocationException が、次のようなメッセージを含む内部の DataCacheException と共にスローされます。The role [cache cluster role name] was not found in the current deployment。identifier がキャッシュ クラスターをホストしていない展開に含まれるロールにマップされている場合は、次のようなメッセージと共に InvalidOperationException がスローされます。No Endpoints found

  3. また、cacheDiagnostics セクションが configuration セクションに追加されます。

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    
    noteメモ
    キャッシュ クライアントのクラッシュ ダンプは既定で無効になり、このセクションによって制御されます。キャッシュ診断の詳細情報、「Azure In-Role Cache のトラブルシューティングと診断」を参照してください。

また、インロール キャッシュ NuGet パッケージは、ConfigurationSettings 内のキャッシュ クライアント ロールの ServiceConfiguration.cscfg に、ClientDiagnosticLevel 設定を追加します。次の例は、WebRole1 ファイルの ServiceConfiguration.cscfg セクションであり、ClientDiagnosticLevel は 1 です。これは既定の ClientDiagnosticLevel です。

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
noteメモ
キャッシュ診断レベルの詳細情報、「Azure In-Role Cache のトラブルシューティングと診断」をご覧ください。

必要な構成の追加に加えて、インロール キャッシュ NuGet パッケージは以下のアセンブリ参照も追加します。

  • Microsoft.ApplicationServer.Caching.Client.dll

  • Microsoft.ApplicationServer.Caching.Core.dll

  • Microsoft.ApplicationServer.Caching.AzureCommon.dll

  • Microsoft.ApplicationServer.Caching.AzureClientHelper.dll

  • Microsoft.WindowsFabric.Common.dll

  • Microsoft.WindowsFabric.Data.Common.dll

ロールが Web ロールである場合は、次のアセンブリ参照も追加されます。

  • Microsoft.Web.DistributedCache.dll

noteメモ
インロール キャッシュ と Microsoft Azure Shared Caching は同じ API を共有しており、アセンブリ名も同じですが、アセンブリ自体は異なり、別の場所にあります。インロール キャッシュ NuGet パッケージは、Shared Caching のアセンブリ参照を削除し、正しい インロール キャッシュ アセンブリ参照を追加します。インロール キャッシュ アセンブリは C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching フォルダーに置かれています。

キャッシュ クライアントを構成する」の手順に従って ASP.NET Web ロール クライアントを Microsoft Azure Shared Caching から インロール キャッシュ に移行すると、ASP.NET セッション状態やページ出力キャッシュを In-Role Cache に格納するために必要な変更は最小限で済みます。ASP.NET セッション状態のキャッシュへの格納を有効にするには、system.webweb.config に次のセクションを追加します。

noteメモ
ASP.NET Web ロールが Microsoft Azure Cache のセッション状態プロバイダーを使用するように既に構成されている場合、このセクションは既に存在しています。

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
  </providers>
</sessionState>

セッション状態を保持するキャッシュ クラスターにキャッシュを指定するには、cacheName を更新します。既定のキャッシュを指定するには、default を使用します。

ページ出力 Caching のキャッシュへの格納を有効にするには、system.web に次のセクションを追加します。

noteメモ
ASP.NET Web ロールが Microsoft Azure Cache の出力キャッシュ プロバイダーを使用するように既に構成されている場合、このセクションは既に存在しています。

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

セッション状態を保持するキャッシュ クラスターにキャッシュを指定するには、cacheName を更新します。既定のキャッシュを指定するには、default を使用します。

出力をキャッシュする各ページに、OutputCache ディレクティブを追加します。

<%@ OutputCache Duration="60" VaryByParam="*" %>

この例では、キャッシュされたページ データはキャッシュに 60 秒残り、ページの別のバージョンが各パラメーターの組み合わせに対してキャッシュされます。使用可能なオプションの詳細情報、「@ OutputCache 」を参照してください。

表示: