Exporter (0) Imprimer
Développer tout

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

Mis à jour: septembre 2014

noteRemarque
Pour obtenir des conseils sur le choix de l'offre Azure Cache appropriée pour votre application, consultez Choix de l'offre Azure Cache appropriée.

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

noteRemarque
Pour plus d'informations sur les avantages de l'utilisation de Cache dans le rôle, consultez À propos de In-Role Cache pour Azure Cache.

La Cache dans le rôle permet d'héberger les services de mise en cache sur les rôles . 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 Cache dans le rôle. 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 Cache dans le rôle : 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 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 , 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 , 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 Cache dans le rôle 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 In-Role Cache (Azure 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 , 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, consultez Considérations relatives à la planification de la capacité pour In-Role Cache (Azure 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.

Cache dans le rôle requiert un compte de stockage . 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 Cache dans le rôle et la Microsoft Azure Shared Caching présentent certaines différences.

 

Fonctionnalité Prise en charge de Cache dans le rôle 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 (In-Role Cache pour Azure 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 (In-Role Cache pour Azure 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 Cache dans le rôle, 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 Cache dans le rôle et les références d'assembly existantes doivent être supprimées avant que les rôles de client ne soient configurés pour Service Caching partagé. Si Service Caching partagé a été configuré à l'aide du package NuGet de Service Caching partagé, la configuration peut être supprimée en désinstallant le package NuGet de Service Caching partagé, sinon elle doit être supprimée manuellement.

Pour désinstaller le package NuGet de Service Caching partagé, 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 Service Caching partagé supprime les assemblys de Service Caching partagé et les entrées de Service Caching partagé 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 Service Caching partagé 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 Service Caching partagé, vous devez supprimer la référence d'assembly de Service Caching partagé et la configuration de Service Caching partagé du fichier app.config ou web.config.

Pour supprimer les références d'assembly de Service Caching partagé, 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 Service Caching partagé, 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.

Cache dans le rôle 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 Cache dans le rôle, vérifiez que la configuration de Service Caching partagé 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 Cache dans le rôle, 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 Cache dans le rôle 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, consultez Dépannage et diagnostics de In-Role Cache (Azure Cache).

Le package NuGet de Cache dans le rôle 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, consultez Dépannage et diagnostics de In-Role Cache (Azure Cache).

Outre l'ajout de la configuration requise, le package NuGet Cache dans le rôle 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
Cache dans le rôle 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 Cache dans le rôle supprime les références d'assembly de Service Caching partagé et ajoute les références d'assembly de Cache dans le rôle correctes. Les assemblys de Cache dans le rôle 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 Cache dans le rôle (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, consultez Directive OutputCache.

Afficher:
© 2014 Microsoft