Condividi tramite


Eseguire la migrazione da Shared Caching di Azure a Cache nel ruolo

Importante

Microsoft consiglia tutti i nuovi sviluppi di usare Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?

La migrazione delle applicazioni che usano Memorizzazione nella cache condivisa di Microsoft Azure per In-Role memorizzazione nella cache della cache può essere eseguita con modifiche minime all'applicazione. Poiché In-Role cache usa la stessa API di Memorizzazione nella cache condivisa, il codice esistente che usa Memorizzazione nella cache condivisa per accedere a una cache può essere riutilizzato per accedere a una cache In-Role cache nel ruolo. Questo argomento illustra come apportare le modifiche necessarie alla configurazione e all'applicazione per eseguire la migrazione dell'applicazione Memorizzazione nella cache condivisa da usare In-Role Cache.

Nota

Per altre informazioni sui vantaggi dell'uso di In-Role Cache, vedere Informazioni su cache di In-Role per Cache di Azure.

Passaggi della migrazione

Le sezioni seguenti descrivono i passaggi necessari per eseguire la migrazione di un'applicazione Memorizzazione nella cache condivisa di Microsoft Azure da usare In-Role Cache.

  • Determinare la topologia di distribuzione del cluster di cache

    • Configurare un cluster di cache basata su ruolo dedicato

    • Configurare un cluster di cache basata su ruolo con risorse condivise

  • Configurazione dell'account di archiviazione del cluster di cache

  • Configurare le impostazioni della cache denominata

  • Configurare i client della cache

    • Rimuovere la configurazione di Shared Caching

    • Configurare un client della cache mediante il pacchetto NuGet di Caching

  • Eseguire la migrazione della memorizzazione nella cache dell'output delle pagine e dello stato della sessione ASP.NET

Determinare la topologia di distribuzione del cluster di cache

In-Role Cache offre la possibilità di ospitare servizi di memorizzazione nella cache nei ruoli di Azure. In questo modello, la cache fa parte del servizio cloud, Viene selezionato un ruolo all'interno del servizio cloud per ospitare In-Role Cache. Le istanze in esecuzione di questo ruolo vengono aggiunte alle risorse di memoria in modo da formare un cluster di cache Questo cluster di cache privato è disponibile solo per i ruoli all'interno della stessa distribuzione. Esistono due topologie di distribuzione per In-Role Cache: dedicata e condivisa.

Topologia di distribuzione del cluster di cache Descrizione

Memorizzazione nella cache basata su ruolo dedicato

Le istanze di ruolo di lavoro vengono usate esclusivamente per la memorizzazione nella cache.

Memorizzazione nella cache basata su ruolo con risorse condivise

La cache condivide le risorse della macchina virtuale (larghezza di banda, CPU e memoria) con l'applicazione principale ospitata dal ruolo.

Se nei ruoli esistenti dell'applicazione è disponibile una parte di memoria non usata, è possibile configurare un cluster di cache basata su ruolo con risorse condivise su questi ruoli e usare quella memoria supplementare per la memorizzazione nella cache. Se nei ruoli non è disponibile memoria supplementare sufficiente per supportare un cluster di cache, è possibile eseguire la scalabilità orizzontale dei ruoli oppure aggiungere un ruolo di lavoro della cache e configurare un cluster di cache basata su ruolo dedicato.

  • Configurare un cluster di cache basata su ruolo dedicato

  • Configurare un cluster di cache basata su ruolo con risorse condivise

Configurare un cluster di cache basata su ruolo dedicato

Per configurare un cluster di cache basata su ruolo dedicato, aggiungere un ruolo di lavoro della cache al progetto. Per aggiungere un ruolo di lavoro della cache, espandere Azure in Esplora soluzioni se non è già espanso.

Nota

La memorizzazione nella cache basata su ruolo dedicato è supportata esclusivamente sui ruoli di lavoro e non può essere configurata sui ruoli Web.

Fare clic con il pulsante destro del mouse sulla cartella Ruoli nel progetto Azure e scegliere Aggiungi, Nuovo progetto di ruolo di lavoro, quindi scegliere Ruolo di lavoro della cache. Digitare il nome desiderato per il ruolo nella casella Nome e fare clic su Aggiungi.

Add Cache Worker Role

Un ruolo di lavoro della cache è preconfigurato per la memorizzazione nella cache basata su ruolo dedicato. Per visualizzare le impostazioni, fare clic con il pulsante destro del mouse sul ruolo appena aggiunto nella cartella Ruoli di Azure e scegliere Proprietà.

Cache Worker Role Properties Context Menu

Passare alla scheda Caching per visualizzare le proprietà di memorizzazione nella cache del ruolo di lavoro della cache.

Cache Worker Role Properties

Trattandosi di un ruolo di lavoro della cache, la casella di controllo Abilita Caching è già selezionata così come la memorizzazione nella cache basata su Ruolo dedicato. Le impostazioni per la cache sono configurate nella sezione Impostazioni cache denominata. Esistono alcune differenze nelle impostazioni della cache tra cache In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure. Queste impostazioni sono descritte nelle sezioni seguenti Configurare l'account Archiviazione del cluster di cache e configurare la Impostazioni cache denominata.

Passare alla scheda Configurazione.

Role Instance VM Size and Instance Count

Il valore predefinito di Conteggio istanze è 1 e l'impostazione predefinita di Dimensioni macchina virtuale è Piccola. Modificare queste impostazioni in base alla configurazione desiderata. La guida Considerazioni sulla pianificazione della capacità per Cache In-Role di Azure può fornire indicazioni sulle impostazioni da scegliere per soddisfare i requisiti di memorizzazione nella cache dell'applicazione.

Dopo aver aggiunto il ruolo di lavoro della cache e aver configurato le dimensioni della macchina virtuale e il numero di istanze, è possibile configurare la cache come descritto nella sezione Configurare la cache denominata Impostazioni.

Configurare un cluster di cache basata su ruolo con risorse condivise

Per configurare un cluster della cache dei ruoli con percorso condiviso, fare clic con il pulsante destro del mouse sul ruolo desiderato nella cartella Ruoli di Azure e scegliere Proprietà.

Web Role Properties

Passare alla scheda Caching, selezionare la casella di controllo Abilita Caching e specificare le opzioni desiderate per la memorizzazione nella cache. In base alla configurazione predefinita, il 30% della memoria nell'istanza del ruolo viene allocato per la memorizzazione nella cache. Spostare il dispositivo di scorrimento Dimensioni cache (%) in modo da configurare la cache desiderata.

Caching Role Properties

Una buona approssimazione della formula usata per determinare le dimensioni della cache consiste nel moltiplicare il numero di istanze del ruolo per la quantità di memoria in base alla dimensione della macchina virtuale e usare la percentuale specificata. Si noti che questa formula è un'approssimazione molto semplice e per altre informazioni sulle impostazioni necessarie per effettuare il provisioning di una cache delle dimensioni desiderate, vedere Considerazioni sulla pianificazione della capacità per Cache In-Role di Azure. Se per ospitare il cluster di cache sono necessarie altre istanze di ruolo o una dimensione maggiore della macchina virtuale, è possibile configurarle nella scheda Configurazione.

Configurazione dell'account di archiviazione del cluster di cache

In-Role Cache richiede un account di archiviazione di Azure. Questo account di archiviazione viene utilizzato per contenere i dati relativi al cluster di cache a cui viene eseguito l'accesso da tutte le macchine virtuali che lo compongono. Questo account è specificato nella scheda Caching della pagina delle proprietà del ruolo del cluster di cache, sopra alla voce Impostazioni cache denominata.

Cache Cluster Storage Account

Importante

Se l'account di archiviazione non è configurato i ruoli non verranno avviati.

Configurare le impostazioni della cache denominata

Le impostazioni della cache vengono configurate nella sezione Impostazioni cache denominata.

Named Cache Settings

Esistono alcune differenze nelle impostazioni della cache tra cache In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure.

Funzionalità Supporto della cache In-Role supporto di Memorizzazione nella cache condivisa di Microsoft Azure

Nome

È configurata una cache predefinita ed è possibile configurare cache denominate supplementari, se necessario.

Solo cache predefinita.

Disponibilità elevata

Fornisce disponibilità elevata per gli elementi nella cache. Se un ruolo è disattivato, una copia di backup degli elementi nella cache sarà comunque disponibile.

Nessuna disponibilità elevata.

Notifications

Le notifiche consentono all'applicazione di ricevere notifiche in modo asincrono quando vengono eseguite diverse operazioni nel cluster di cache.

Per altre informazioni, vedere Notifiche in Cache In-Role di Azure

Non supportata.

Criteri di rimozione

Le opzioni sono LRU (utilizzati meno di recente) o Nessuno. Il valore predefinito è LRU.

Solo LRU.

Durata (min)

La scadenza predefinita per gli elementi nella cache è 10 minuti, ma è configurabile. È anche possibile specificare l'ora di scadenza per singoli elementi aggiunti alla cache usando overload di Add e Put quando gli elementi vengono aggiunti alla cache.

La scadenza predefinita è 24 ore e non è configurabile. La scadenza per i singoli elementi aggiunti alla cache può essere configurata usando overload di Add e Put quando gli elementi vengono aggiunti alla cache.

Tipo di scadenza

Esistono tre tipologie di Tipo di scadenza: Nessuna, Assoluta e Finestra scorrevole. Quando si specifica Assoluta, l'intervallo di scadenza specificato da Durata (TTL) (min) inizia quando gli elementi vengono aggiunti alla cache. Quando si specifica Finestra temporale scorrevole, l'intervallo viene reimpostato ogni volta che si verifica un accesso a un elemento nella cache. Quando si specifica Nessuna, è necessario che il valore Durata (TTL) (min) sia impostato su 0 e gli elementi non scadranno. Il valore predefinito è Assoluta.

Per altre informazioni, vedere Scadenza e rimozione in Cache In-Role di Azure.

Il criterio di scadenza è assoluto. L'intervallo di scadenza inizia quando vengono aggiunti elementi alla cache.

Configurare i client della cache

Dopo avere configurato il cluster di cache, occorre aggiungere la configurazione e i riferimenti necessari per fare in modo che i client possano accedere alla cache. Nella cache In-Role, i client possono essere qualsiasi ruolo nella stessa distribuzione del cluster della cache. Quando si accede a un cluster di cache basata su ruolo con risorse condivise, il client può essere il ruolo stesso che ospita il cluster di cache. Per configurare i client della cache, eseguire la seguente procedura per ogni ruolo che accede alla cache.

  • Rimuovere la configurazione di Shared Caching

  • Configurare un client della cache mediante il pacchetto NuGet di Caching

Rimuovere la configurazione di Shared Caching

Prima che i ruoli client siano configurati per In-Role Cache, è necessario rimuovere i riferimenti alla configurazione e all'assembly Memorizzazione nella cache condivisa esistenti. Se Memorizzazione nella cache condivisa è stato configurato usando il pacchetto di Memorizzazione nella cache condivisa NuGet, la configurazione può essere rimossa disinstallando il Memorizzazione nella cache condivisa NuGet in caso contrario, deve essere rimosso manualmente.

  • Disinstallare il pacchetto NuGet di Shared Caching

  • Rimuovere manualmente la configurazione di Shared Caching

Disinstallare il pacchetto NuGet di Shared Caching

Per disinstallare il pacchetto Memorizzazione nella cache condivisa NuGet, fare clic con il pulsante destro del mouse sul ruolo client desiderato in Esplora soluzioni e scegliere Gestisci pacchetti NuGet. Selezionare il nodo Pacchetti installati, digitare Caching nella casella Cerca in pacchetti installati. Selezionare Shared Caching di Azure, fare clic su Disinstalla, quindi su Chiudi.

Uninstall Shared Caching NuGet Package

Nota

Se non è presente alcun pacchetto Memorizzazione nella cache condivisa di Microsoft Azure NuGet nell'elenco, fare clic su Chiudi e seguire la procedura descritta in Rimuovere manualmente la configurazione Memorizzazione nella cache condivisa.

La disinstallazione del pacchetto di Memorizzazione nella cache condivisa NuGet rimuove gli assembly Memorizzazione nella cache condivisa e le voci Memorizzazione nella cache condivisa nel app.config ruolo o web.config del ruolo client. Poiché quando si disinstalla il pacchetto NuGet alcune impostazioni personalizzate potrebbero non essere rimosse, aprire il file web.config o app.config e assicurarsi che i seguenti elementi siano stati completamente rimossi.

  • Verificare che la voce dataCacheClients sia stata rimossa dall'elemento configSections. Non rimuovere l'intero elemento configSections, ma solo la voce dataCacheClients, se presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Verificare che la sezione dataCacheClients sia stata rimossa. La sezione dataCacheClients sarà simile all'esempio seguente.

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

Dopo aver rimosso la configurazione Memorizzazione nella cache condivisa, è possibile configurare il client della cache come descritto nella sezione Configurare un client della cache usando la sezione Caching NuGet Package.

Rimuovere manualmente la configurazione di Shared Caching

Per rimuovere manualmente la configurazione di Memorizzazione nella cache condivisa, è necessario rimuovere i riferimenti all'assembly Memorizzazione nella cache condivisa e la configurazione Memorizzazione nella cache condivisa da app.config o web.config.

Per rimuovere i riferimenti all'assembly Memorizzazione nella cache condivisa, selezionare il ruolo client desiderato in Esplora soluzioni ed espandere la cartella Riferimenti. Per ciascun assembly incluso nel seguente elenco, fare clic con il pulsante destro del mouse nella cartella Riferimenti in Esplora soluzioni e scegliere Rimuovi. Se il client è un ruolo Web, rimuovere anche Microsoft.Web.DistributedCache.

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

Per rimuovere la configurazione Memorizzazione nella cache condivisa, aprire o web.configapp.config del ruolo client e rimuovere i due elementi seguenti.

  • Rimuovere la voce dataCacheClients dall'elemento configSections. Non rimuovere l'intero elemento configSections, ma solo la voce dataCacheClients, se presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Rimuovere la sezione dataCacheClients che sarà simile a quella riportata nel seguente esempio.

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

Dopo aver rimosso questi elementi, si possono eseguire i passaggi riportati nella sezione successiva per configurare il client della cache.

Configurare un client della cache mediante il pacchetto NuGet di Caching

In-Role Cache fornisce un pacchetto NuGet per aggiungere i riferimenti di configurazione e assembly necessari per consentire ai ruoli client di accedere a un cluster della cache.

Importante

Prima di configurare il client della cache usando il pacchetto NuGet cache di In-Role, assicurarsi che la configurazione Memorizzazione nella cache condivisa venga rimossa completamente dal web.config ruolo o app.config del ruolo client, come descritto nella sezione precedente.

Per usare il pacchetto NuGet cache In-Role, fare clic con il pulsante destro del mouse sul ruolo client desiderato in Esplora soluzioni e scegliere Gestisci pacchetti NuGet.

Manage NuGet Packages

Selezionare Caching di Azure, fare clic su Installa e quindi su Accetto. Al termine dell'installazione del pacchetto nel ruolo, fare clic su Chiudi per chiudere la finestra Gestisci pacchetti NuGet.

Nota

Se Caching di Azure non è incluso nell'elenco, digitare WindowsAzure.Caching nella casella di testo Cerca Online.

Enable Caching using NuGet

Quando il pacchetto NuGet cache In-Role viene installato in un ruolo client, aggiunge la configurazione e i riferimenti all'assembly necessari in modo che il ruolo client possa accedere al cluster di cache desiderato.

In web.config o app.config per il ruolo, vengono aggiunti più elementi.

  1. A configSections vengono aggiunte due sezioni, denominate dataCacheClients e 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. Viene aggiunta una sezione dataCacheClients alla sezione configuration.

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    

    Sostituire [nome ruolo cluster cache] con il nome del ruolo che ospita il cluster della cache. Nel seguente esempio [cache cluster role name] è stato sostituito con CacheWorkerRole1.

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    

    Avviso

    Questa impostazione deve essere configurata in modo corretto, altrimenti i client non saranno in grado di accedere alla cache. Se l'identificatore non esegue il mapping a un ruolo, viene generata un'eccezione TargetInvocationException quando si accede alla cache con un'eccezione DataCacheException interna contenente un messaggio simile al seguente: . The role [cache cluster role name] was not found in the current deployment Se l'identificatore esegue il mapping a un ruolo nella distribuzione che non ospita un cluster della cache, viene generata un'eccezione InvalidOperationException con il messaggio seguente: . No Endpoints found

  3. Viene inoltre aggiunta una sezione cacheDiagnostics alla sezione configuration.

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    

    Nota

    I dump di arresto anomalo del sistema per i client della cache sono disabilitati per impostazione predefinita e sono controllati da questa sezione. Per altre informazioni sulla diagnostica della memorizzazione nella cache, vedere Risoluzione dei problemi e diagnostica della cache di Azure In-Role.

Il pacchetto NuGet cache In-Role aggiunge anche un'impostazione ClientDiagnosticLevel al ConfigurationSettings del ruolo client della cache in ServiceConfiguration.cscfg. L'esempio seguente è la WebRole1 sezione di un ServiceConfiguration.cscfg file con clientDiagnosticLevel pari a 1, ovvero il valore predefinito ClientDiagnosticLevel.

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>

Nota

Per altre informazioni sui livelli di diagnostica della cache, vedere Risoluzione dei problemi e diagnostica della cache di Azure In-Role.

Oltre ad aggiungere la configurazione necessaria, il pacchetto NuGet cache In-Role aggiunge anche i riferimenti all'assembly seguenti.

  • 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

Se il ruolo è un ruolo Web, viene aggiunto anche il riferimento al seguente assembly.

  • Microsoft.Web.DistributedCache.dll

Nota

In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure condividono la stessa API e, anche se i nomi degli assembly sono uguali, gli assembly stessi sono diversi e si trovano in posizioni diverse. Il pacchetto NuGet cache In-Role rimuoverà i riferimenti all'assembly Memorizzazione nella cache condivisa e aggiungerà i riferimenti all'assembly In-Role cache corretti. Gli assembly della cache In-Role si trovano nella C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching cartella .

Eseguire la migrazione della memorizzazione nella cache dell'output delle pagine e dello stato della sessione ASP.NET

Dopo aver eseguito la migrazione dei client del ruolo Web ASP.NET da Memorizzazione nella cache condivisa di Microsoft Azure a cache In-Role, come descritto in Configurare i client della cache, sono necessarie solo modifiche minime per archiviare ASP.NET stato sessione o output pagina Caching in una cache nel ruolo. Per consentire la memorizzazione dello stato della sessione ASP.NET nella cache, aggiungere la seguente sezione a system.web nel file web.config.

Nota

Se il ruolo Web ASP.NET è già stato configurato per l'uso del provider di stato sessione per Microsoft Azure Cache, questa sezione è già presente.

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

Aggiornare cacheName per specificare la cache nel cluster di cache che contiene lo stato della sessione. Usare default per specificare la cache predefinita.

Per abilitare la memorizzazione nella cache dell'output delle pagine, aggiungere la seguente sezione a system.web.

Nota

Se il ruolo Web ASP.NET è già stato configurato per l'uso del provider di cache di output per Microsoft Azure cache, questa sezione è già presente.

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

Aggiornare cacheName per specificare la cache nel cluster di cache che contiene lo stato della sessione. Usare default per specificare la cache predefinita.

Aggiungere una direttiva OutputCache a ogni pagina per cui si desidera memorizzare l'output nella cache.

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

In questo esempio i dati delle pagine rimangono memorizzati nella cache per 60 secondi e per ogni combinazione di parametri viene memorizzata nella cache una versione diversa della pagina. Per altre informazioni sulle opzioni disponibili, vedere Direttiva OutputCache.