Cette documentation est archivée et n’est pas conservée.

Migration d'une mise en cache partagé Azure vers In-Role Cache

Mis à jour: août 2015

ImportantImportant
Microsoft recommande que tous les nouveaux développements utilisent le Cache Redis Azure. Pour une documentation et des conseils actualisés sur le choix d'une offre de Cache Azure, voir Quelle est l'offre Azure Cache qui me convient ?

La migration de vos applications qui utilisent Microsoft Azure Shared Caching vers In-Role Cache peut être effectuée moyennant des changements minimaux de votre application. Comme la In-Role Cache utilise la même API que la Shared Caching, le code existant qui utilise la Shared Caching pour accéder à un cache peut être réutilisé pour accéder à un cache dans des rôles de In-Role Cache. Cette rubrique montre comment effectuer les modifications nécessaires de la configuration et de l'application pour migrer votre application de Shared Caching afin d'utiliser la In-Role Cache.

noteRemarque
Pour plus d'informations sur les avantages de l'utilisation de In-Role Cache, voir À propos de In-Role Cache pour Azure Cache.

La In-Role Cache permet d'héberger les services de mise en cache sur les rôles Azure. Dans ce modèle, le cache fait partie de votre service dans le cloud. Un rôle dans le service cloud est sélectionné pour héberger la In-Role Cache. Les instances en cours d'exécution de ce rôle rejoignent les ressources de mémoire pour former un cluster de cache. Ce cluster de cache privé est disponible uniquement pour les rôles qui appartiennent au même déploiement. Il existe deux topologies de déploiement pour la In-Role Cache : dédiée et colocalisée.

 

Topologie de déploiement du cluster de cache Description

Mise en cache à rôle dédié

Les instances de rôle de travail sont utilisées exclusivement pour la mise en cache.

Mise en cache à rôle colocalisé

Le cache partage les ressources de machine virtuelle (bande passante, UC et mémoire) avec l'application principale hébergée par le rôle.

Si une partie de la mémoire de votre application est inutilisée dans ses rôles existants, vous pouvez configurer un cluster de cache colocalisé sur ces rôles et utiliser la mémoire restante pour la mise en cache. Si la mémoire restante dans les rôles n'est pas suffisante pour prendre en charge un cluster de cache, vous pouvez effectuer une montée en charge des rôles ou ajouter un rôle de travail de cache et configurer un cluster de cache à rôle dédié.

Pour configurer un cluster de cache à rôle dédié, ajoutez un rôle de travail de cache à votre projet. Pour ajouter un rôle de travail de cache, développez le projet Azure dans l'Explorateur de solutions le cas échéant.

noteRemarque
La mise en cache des rôles dédiés n'est prise en charge que sur les rôles de travail et ne peut pas être configurée sur les rôles web.

Cliquez avec le bouton droit sur le dossier Rôles dans le projet Azure, sélectionnez les options Ajouter, Nouveau projet de rôle de travail, puis Rôle de travail de cache. Tapez le nom du rôle dans la zone Nom, puis cliquez sur Ajouter.

Ajouter un cache de rôle de travail

Un rôle de travail de cache est préconfiguré pour la mise en cache du rôle dédié. Pour afficher les paramètres, cliquez avec le bouton droit sur le rôle nouvellement ajouté dans le dossier Rôles Azure, puis sélectionnez Propriétés.

Menu contextuel des propriétés du cache de rôle de travail

Basculez vers l'onglet Mise en cache pour afficher les propriétés de mise en cache du rôle de travail de cache.

Propriétés du cache de rôle utilisateur professionnel

Ce rôle étant un rôle de travail de cache, la case à cocher Activer la mise en cache est déjà activée et la mise en cache des rôles dédiés est sélectionnée. Les paramètres du cache sont configurés dans la section Paramètres du cache nommé. Les paramètres de cache entre la In-Role Cache et la Microsoft Azure Shared Caching présentent certaines différences. Ils sont décrits dans les sections Configuration du compte de stockage du cluster de cache et Configuration des paramètres du cache nommé.

Basculez vers l'onglet Configuration.

Taille de la machine virtuelle d'instances de rôle et nombre d'instances

Par défaut, le nombre d'instances est défini sur 1 et la taille de machine virtuelle sur Petit. Vous pouvez modifier ces paramètres selon la configuration que vous souhaitez définir. Le guide Considérations relatives à la planification de la capacité pour Azure In-Role Cache inclut des informations sur le choix des paramètres nécessaires pour satisfaire les besoins de mise en cache de votre application.

Une fois le rôle de travail de cache ajouté, ainsi que la taille de machine virtuelle et le nombre d'instances définis, vous pouvez configurer le cache comme décrit dans la section Configuration des paramètres du cache nommé suivante.

Pour configurer un cluster de cache à rôle colocalisé, cliquez avec le bouton droit sur le rôle souhaité dans le dossier Rôles Azure, puis sélectionnez Propriétés.

Propriétés de rôle web

Cliquez sur l'onglet Mise en cache, activez la case à cocher Activer la mise en cache, puis spécifiez les options de mise en cache souhaitées. La configuration par défaut alloue 30 % de la mémoire dans l'instance de rôle à la mise en cache. Réglez le curseur Taille de cache (%) pour configurer la taille de cache souhaitée.

Propriétés de Caching de rôle

La formule approximative de base utilisée pour déterminer la taille du cache consiste à multiplier le nombre d'instances de rôle par la quantité de mémoire sur la base de la taille de machine virtuelle, puis à utiliser le pourcentage spécifié. Notez que cette formule est une approximation très basique. Pour plus d'informations sur les paramètres requis pour configurer un cache de la taille souhaitée, voir Considérations relatives à la planification de la capacité pour Azure In-Role Cache. Si d'autres instances de rôle ou une taille de machine virtuelle plus grande sont requises pour héberger le cluster de cache, elles peuvent être configurées sous l'onglet Configuration.

In-Role Cache requiert un compte de stockage Azure. Celui-ci est utilisé pour conserver les données de configuration sur le cluster de cache et est accessible à partir des machines virtuelles formant le cluster de cache. Le compte de stockage est spécifié sous l'onglet Mise en cache de la page des propriétés du rôle de cluster de cache, juste au-dessus des paramètres du cache nommé.

Compte de stockage du cluster de cache
ImportantImportant
Si ce compte de stockage n'est pas configuré, les rôles ne pourront pas démarrer.

Les paramètres de cache sont configurés dans la section Paramètres du cache nommé.

Paramètres du cache nommé

Les paramètres de cache entre la In-Role Cache et la Microsoft Azure Shared Caching présentent certaines différences.

 

Composant Prise en charge de In-Role Cache Prise en charge de Microsoft Azure Shared Caching

Nom

Un cache par défaut est configuré. D'autres caches nommés peuvent être configurés le cas échéant.

Cache par défaut uniquement.

Haute disponibilité

Fournit la haute disponibilité pour les éléments du cache. Si un rôle tombe en panne, une copie de sauvegarde des éléments dans le cache reste disponible.

Pas de haute disponibilité.

Notifications

Les notifications permettent à votre application de recevoir des notifications asynchrones lorsque plusieurs opérations de cache surviennent sur le cluster de cache.

Pour plus d'informations, consultez Notifications dans Azure In-Role Cache

Non pris en charge.

Stratégie d'éviction

Les options possibles sont LRU (dernier récemment utilisé) et Aucune. La valeur par défaut est LRU.

LRU uniquement.

Durée de vie (min)

Par défaut, le délai d'expiration des éléments dans le cache est de 10 minutes. Cette valeur peut être configurée. Le délai d'expiration des éléments individuels ajoutés au cache peut également être spécifié à l'aide de surcharges de Add et Put lors de l'ajout d'éléments au cache.

Le délai d'expiration par défaut est de 24 heures et n'est pas configurable. Le délai d'expiration des éléments individuels ajoutés au cache peut être configuré à l'aide de surcharges de Add et Put lorsque des éléments sont ajoutés au cache.

Type d'expiration

Il existe trois types d'expirations: Aucune, Absolue et Fenêtre glissante. Si l'option Absolue est spécifiée, l'intervalle d'expiration spécifié par la valeur Durée de vie (minutes) démarre lorsque des éléments sont ajoutés au cache. Si l'option Fenêtre glissante est spécifiée, l'intervalle est réinitialisé chaque fois qu'un élément est accédé dans le cache. Si l'option Aucune est spécifiée, l'option Durée de vie (minutes) doit être définie sur 0. Dans ce cas, les éléments n'expirent pas. La valeur par défaut est Absolue.

Pour plus d'informations, consultez Expiration et éviction dans Azure In-Role Cache.

La stratégie d'expiration est absolue. L'intervalle d'expiration démarre lorsque des éléments sont ajoutés au cache.

Une fois le cluster de cache configuré, l'étape suivante consiste à ajouter la configuration et les références nécessaires pour que les clients de cache puissent accéder au cache. Dans la In-Role Cache, les clients peuvent correspondre aux rôles dans le même déploiement que le cluster de cache. Lorsque vous accédez à un cluster de cache à rôle colocalisé, le client peut être lui-même le rôle qui héberge le cluster de cache. Pour configurer les clients de cache, procédez comme suit pour chaque rôle accédant au cache.

La configuration de In-Role Cache et les références d'assembly existantes doivent être supprimées avant que les rôles de client ne soient configurés pour Shared Caching. Si Shared Caching a été configuré à l'aide du package NuGet de Shared Caching, la configuration peut être supprimée en désinstallant le package NuGet de Shared Caching, sinon elle doit être supprimée manuellement.

Pour désinstaller le package NuGet de Shared Caching, cliquez avec le bouton droit sur le rôle client souhaité dans l'Explorateur de solutions, puis sélectionnez Gérer les packages NuGet. Sélectionnez le nœud Packages installés, puis tapez Mise en cache dans la zone Rechercher dans les packages installés. Sélectionnez Azure Shared Caching, cliquez sur Désinstaller, puis sur Fermer.

Désinstaller le package NuGet de Shared Caching
noteRemarque
Si la liste ne contient aucun package NuGet de Microsoft Azure Shared Caching, cliquez sur Fermer, puis suivez les étapes décrites dans la rubrique Suppression manuelle de la configuration de mise en cache partagé.

La désinstallation du package NuGet de Shared Caching supprime les assemblys de Shared Caching et les entrées de Shared Caching dans le fichier app.config ou web.config du rôle client. Comme certains paramètres personnalisés ne peuvent pas être supprimés lors de la désinstallation du package NuGet, ouvrez le fichier web.config ou app.config, et vérifiez que les éléments suivants sont entièrement supprimés.

  • Vérifiez que l'entrée dataCacheClients est supprimée de l'élément configSections. Ne supprimez pas l'élément configSections entier. Supprimez simplement l'entrée dataCacheClients si elle est présente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Vérifiez que la section dataCacheClients est supprimée. La section dataCacheClients doit être similaire à l'exemple suivant.

    <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>
    

Une fois la configuration de Shared Caching supprimée, vous pouvez configurer le cache client comme décrit dans la section Configuration d'un client de cache à l'aide du package NuGet de mise en cache ci-après.

Pour supprimer manuellement la configuration de Shared Caching, vous devez supprimer la référence d'assembly de Shared Caching et la configuration de Shared Caching du fichier app.config ou web.config.

Pour supprimer les références d'assembly de Shared Caching, sélectionnez le rôle de client souhaité dans l'Explorateur de solutions et développez le dossier Références. Pour chacun des assemblys dans la liste, cliquez avec le bouton droit sur l'assembly dans le dossier Références de l'Explorateur de solutions, puis sélectionnez Supprimer. Si le rôle de client est un rôle web, supprimez également Microsoft.Web.DistributedCache.

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

Pour supprimer la configuration de Shared Caching, ouvrez le fichier web.config ou app.config du rôle de client, puis supprimez les deux éléments suivants.

  • Supprimez l'entrée dataCacheClients de l'élément configSections. Ne supprimez pas l'élément configSections entier. Supprimez simplement l'entrée dataCacheClients si elle est présente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Supprimez la section dataCacheClients. Celle-ci doit être similaire à l'exemple suivant.

    <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>
    

Une fois ces éléments supprimés, vous pouvez suivre la procédure de la section suivante pour configurer votre client de cache.

In-Role Cache fournit un package NuGet pour ajouter la configuration et les références d'assembly nécessaires pour autoriser les rôles de client à accéder au cluster de cache.

ImportantImportant
Avant de configurer le client de cache à l'aide du package NuGet de In-Role Cache, vérifiez que la configuration de Shared Caching est entièrement supprimée du fichier web.config ou app.config du rôle client, comme décrit dans la section précédente.

Pour utiliser le package NuGet de In-Role Cache, cliquez avec le bouton droit sur le rôle de client souhaité dans l'Explorateur de solutions, puis sélectionnez Gérer les packages NuGet.

Gérer les packages NuGet

Sélectionnez Mise en cache Azure, cliquez sur Installer, puis sur J'accepte. Une fois le package installé pour le rôle, cliquez sur Fermer pour fermer la fenêtre Gérer les packages NuGet.

noteRemarque
Si Mise en cache Azure n'apparaît pas dans la liste, tapez WindowsAzure.Caching dans la zone de texte Recherche en ligne.

Activer Caching à l'aide de NuGet

Lorsque le package NuGet de In-Role Cache est installé sur un rôle de client, il ajoute la configuration et les références d'assembly requises afin que le rôle de client puisse accéder au cluster de cache souhaité.

Si la valeur web.config ou app.config est définie pour le rôle, plusieurs éléments sont ajoutés.

  1. Deux sections sont ajoutées à configSections (dataCacheClients et à cacheDiagnostics).

    <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. Une section dataCacheClients est ajoutée à la section configuration.

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    
    Remplacez le [cache cluster role name] par celui du rôle qui héberge le cluster de cache. Dans l'exemple suivant, le [cache cluster role name] est remplacé par CacheWorkerRole1.

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    
    WarningAvertissement
    Ce paramètre doit être correctement configuré, sans quoi les clients ne pourront pas accéder au cache. Si l'identificateur n'est pas mappé à un rôle, une exception TargetInvocationException est générée lorsque le cache est accédé avec une exception interne DataCacheException contenant un message semblable à ce qui suit : The role [cache cluster role name] was not found in the current deployment. Si l'identificateur est mappé à un rôle dans le déploiement qui n'héberge pas un cluster de cache, une exception InvalidOperationException est générée avec le message suivant : No Endpoints found.

  3. Une section cacheDiagnostics est également ajoutée à la section configuration.

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    
    noteRemarque
    Les vidages sur incident pour les clients de cache sont désactivés par défaut et sont contrôlés par cette section. Pour plus d'informations sur les diagnostics de mise en cache, voir la rubrique Dépannage et diagnostics d'Azure In-Role Cache.

Le package NuGet de In-Role Cache ajoute également un paramètre ClientDiagnosticLevel aux ConfigurationSettings du rôle de cache client dans ServiceConfiguration.cscfg. L'exemple suivant correspond à la section WebRole1 d'un fichier ServiceConfiguration.cscfg avec un ClientDiagnosticLevel 1, ce qui correspond au ClientDiagnosticLevel par défaut.

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
noteRemarque
Pour plus d'informations sur les niveaux de diagnostic de cache, voir Dépannage et diagnostics d'Azure In-Role Cache.

Outre l'ajout de la configuration requise, le package NuGet In-Role Cache ajoute également les références d'assembly suivantes.

  • 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

Si le rôle est un rôle web, la référence d'assembly suivante est également ajoutée.

  • Microsoft.Web.DistributedCache.dll

noteRemarque
In-Role Cache et Microsoft Azure Shared Caching partagent la même API. Bien que les noms d'assembly soient identiques, les assemblys eux-mêmes sont différents et situés dans des emplacements distincts. Le package NuGet In-Role Cache supprime les références d'assembly de Shared Caching et ajoute les références d'assembly de In-Role Cache correctes. Les assemblys de In-Role Cache sont situés dans le dossier C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching.

Une fois les clients de rôle web ASP.NET migrés de Microsoft Azure Shared Caching vers In-Role Cache (comme décrit dans la rubrique Configuration des clients de cache), seules des modifications minimales sont requises pour stocker l'état de session ASP.NET ou la mise en cache de la sortie des pages dans un cache dans des rôles. Pour activer le stockage de l'état de session ASP.NET dans le cache, ajoutez la section suivante à system.web dans le fichier web.config.

noteRemarque
Si votre rôle web ASP.NET a déjà été configuré pour utiliser le fournisseur d'état de session pour la cache Microsoft Azure, cette section est déjà présente.

<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>

Mettez à jour la valeur cacheName pour spécifier le cache dans le cluster de cache qui conserve l'état de session. Utilisez la valeur default pour spécifier le cache par défaut.

Pour activer le stockage de la mise en cache de la sortie des pages dans le cache, ajoutez la section suivante à system.web.

noteRemarque
Si votre rôle web ASP.NET a déjà été configuré pour utiliser le fournisseur de cache de sortie pour la cache Microsoft Azure, cette section est déjà présente.

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

Mettez à jour la valeur cacheName pour spécifier le cache dans le cluster de cache qui conserve l'état de session. Utilisez la valeur default pour spécifier le cache par défaut.

Ajoutez une directive OutputCache à chaque page pour laquelle vous souhaitez mettre en cache la sortie.

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

Dans cet exemple, la page de données en cache reste dans le cache pendant 60 secondes, et une version différente de la page est mise en cache pour chaque combinaison de paramètres. Pour plus d'informations sur les options disponibles, voir Directive OutputCache.

Afficher: