Переход с кэша роли к управляемой службе кэша Azure

Важно!

Корпорация Майкрософт рекомендует все новые разработки использовать кэш Redis для Azure. Текущая документация и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

Перенос приложений кэша Microsoft Azure, использующих кэш In-Role в Azure управляемая служба кэша, можно выполнить с минимальными изменениями в приложении. Так как управляемая служба кэша использует тот же API, что и кэш In-Role, существующий код, использующий кэш In-Role для доступа к кэшу, можно использовать повторно с помощью управляемая служба кэша. В этом разделе показано, как внести необходимые изменения конфигурации и приложения для переноса приложений кэша In-Role для использования управляемая служба кэша.

Этапы миграции

В следующих разделах описаны шаги, необходимые для переноса приложения кэша In-Role для использования управляемая служба кэша.

  • Выбор уровня кэша.

  • Создание кэша.

  • Настройка кэша

  • Списание кластера кэша на основе ролей

  • Настройка клиентов кэша.

    • Удаление пакета NuGet для кэша на основе ролей

    • Настройка клиента кэша с помощью пакета NuGet для Caching

  • Перенос кэша состояний сеансов и кэша вывода ASP.NET

Выбор уровня кэша.

управляемая служба кэша доступны в следующих трех предложениях.

  • Basic — кэш размером от 128 МБ до 1 ГБ с шагом 128 МБ, один именованный кэш по умолчанию.

  • Standard — кэш размером от 1 до 10 ГБ с приращением в 1 ГБ, а также поддержкой уведомлений, высокого уровня доступности и до десяти именованных кэшей.

  • Premium — кэш размером от 5 до 150 ГБ с шагом 5 ГБ, поддержка уведомлений, высокой доступности и до десяти именованных кэшей.

Примечание

Все предложения отличаются ценой и возможностями. Дополнительные сведения см. в статье "Вопросы и ответы о ценах на службу кэша" и предложения кэша для Azure управляемая служба кэша. Дополнительные сведения также приведены в следующем разделе "Настройка кэша" в этом руководстве по миграции.

Все функции кэша In-Role Кэш доступны в различных предложениях кэша для управляемая служба кэша. Если ваше приложение использует уведомления, тогда следует выбрать размер кэша либо Standard, либо Basic. Если у вашего кэша разрешена высокая доступность, следует выбирать размер Premium. Отправной точкой миграции является выбор предложения кэша управляемая служба кэша с нужными функциями кэша приложения и соответствие требованиям емкости приложения In-Role Cache.

После развертывания приложения можно отслеживать производительность кэша и масштабировать его в зависимости от потребностей приложения. Дополнительные сведения о мониторинге производительности и масштабировании см. в статье "Мониторинг Azure управляемая служба кэша имасштабирование кэша для Azure управляемая служба кэша".

Создание кэша.

Экземпляры кэша в управляемая служба кэша создаются с помощью скриптов PowerShell.

Важно!

После создания экземпляра управляемая служба кэша с помощью командлетов PowerShell его можно просмотреть и настроить на портале управления Azure.

Создание экземпляра управляемая служба кэша

  1. Откройте командное окно Azure PowerShell.

    Примечание

    Инструкции по установке и использованию Azure PowerShell см. в разделе Установка и настройка Microsoft Azure PowerShell.

  2. Вызовите командлет Add-AzureAccount и введите электронный адрес и пароль, связанный с вашей учетной записью.

    Примечание

    Если вы настроили Azure PowerShell сертификатом для своей учетной записи, этот шаг можно пропустить. Дополнительные сведения о подключении Azure PowerShell к своей учетной записи Azure см. в разделе Установка и настройка Azure PowerShell.

  3. Вызовите командлет New-AzureManagedCache и укажите имя, область, размер кэша и память кэша. В приведенном примере в географической области contosocache создан кэш South Central US размера Basic с памятью 128 МБ.

    New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    

    Примечание

    Полный список параметров и значений, которые могут использоваться при создании кэша, доступны в документации по командлету New-AzureManagedCache.

  4. После вызова командлета PowerShell cоздание кэша может занять несколько минут. После создания кэша новый кэш имеет состояние "Выполняется " и готов к использованию с параметрами по умолчанию, и его можно просмотреть и настроить на портале управления Azure.

    Ход выполнения операции создания можно отслеживать в окне Azure PowerShell. Как только кэш будет готов к использованию, командлет New-AzureManagedCache выведет информацию о кэше, как показано в приведенном примере.

    PS C:\> Add-AzureAccount
    VERBOSE: Account "user@domain.com" has been added.
    VERBOSE: Subscription "MySubscription" is selected as the default subscription.
    VERBOSE: To view all the subscriptions, please use Get-AzureSubscription.
    VERBOSE: To switch to a different subscription, please use Select-AzureSubscription.
    PS C:\> New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    VERBOSE: Intializing parameters...
    VERBOSE: Creating prerequisites...
    VERBOSE: Verify cache service name...
    VERBOSE: Creating cache service...
    VERBOSE: Waiting for cache service to be in ready state...
    
    
    Name     : contosocache
    Location : South Central US
    State    : Active
    Sku      : Basic
    Memory   : 128MB
    
    
    
    PS C:\>
    

Настройка кэша

Кэш In-Role и управляемая служба кэша поддерживают именованные кэши, что обеспечивает гибкость настройки различных параметров кэша для разных наборов данных. Каждый кэш управляемая служба кэша имеет именованный кэш по умолчанию, а в предложениях кэша standard и Premium можно настроить до девяти дополнительных именованных кэшей. У каждого именованного кэша собственные настройки, в том числе параметры высокого уровня доступности, уведомлений, а также настраиваемые политики вытеснения и срока действия. Параметры именованного кэша можно настроить на портале управления, на вкладке "Configure" (Настройка) для кэша.

Named Caches in Windows Azure Cache Service

Хотя In-Role кэш и управляемая служба кэша имеют одинаковые функции кэша, существуют незначительные различия, перечисленные в следующей таблице.

Компонент поддержка управляемая служба кэша Поддержка кэша In-Role

имя;

Кэш default настроен предварительно, и при использовании предложений кэша Standard и Premium можно дополнительно настроить до девяти именованных кэшей.

Кэш default настроен, и дополнительные именованные кэши также можно настроить.

Обеспечение высокого уровня доступности

Высокий уровень доступности доступен в предложениях кэша уровня "Стандартный" и Premium и недоступен в предложении кэша "Базовый". Дополнительные сведения см. в статье "Предложения кэша для Azure управляемая служба кэша".

Высокий уровень доступности можно включить для всех топологий кэша In-Role.

Уведомления

Уведомления доступны для размеров кэша Standard и Premium, но не доступны для размера кэша Basic. Дополнительные сведения см. в статье "Предложения кэша для Azure управляемая служба кэша".

Уведомления можно включить для всех топологий кэша In-Role.

Политика вытеснения

Можно выбрать значение Включено, чтобы использовать алгоритм вытеснения наиболее давно использовавшихся элементов, или значение Отключено. По умолчанию используется значение Включено.

Можно выбрать значение LRU (наиболее давно использованные элементы), или None (нет). По умолчанию используется LRU.

Время (мин)

В управляемая служба кэша параметр имеет имя Time (min).

В In-Role кэше параметр имеет имя Time to live (min).

Политика истечения срока действия

Этот параметр называется "Политика истечения срока действия " и имеет три возможных значения: "Никогда", " Абсолютное" и " Скользящее ", которые соответствуют параметрам политики окончания срока действия из кэша In-Role.

Этот параметр называется "Политика истечения срока действия" и имеет три возможных значения: "Нет", " Абсолютное" и "Скользящее окно".

Чтобы перейти из кэша In-Role в управляемая служба кэша, повторно создайте все именованные кэши из кластера кэша In-Role в новом кэше управляемая служба кэша.

Списание кластера кэша на основе ролей

После настройки нового кэша управляемая служба кэша следующим шагом является удаление кэширования из роли, размещенной в кэше In-Role. Эти действия отличаются в зависимости от топологии кластера кэша для кэша In-Role.

  • Кластер кэша в выделенной роли

  • Кластер кэша в совмещенной роли

Кластер кэша в выделенной роли

Чтобы удалить выделенный кластер кэша ролей, необходимо удалить проект рабочей роли кэша из решения Visual Studio и из папки "Роли" в проекте облачных служб.

  1. В обозревателе решений щелкните правой кнопкой мыши рабочую роль кэша в папке Роли в проекте облачных служб и выберите Удалить.

    Remove Cache Worker Role

  2. В обозревателе решений щелкните правой кнопкой мыши проект рабочей роли и выберите Удалить.

Кластер кэша в совмещенной роли

Чтобы отключить кэширование в совмещенной веб-роли или рабочей роли, нужно в свойствах роли на вкладке Кэширование снять флажок Кэширование.

  1. В обозревателе решений щелкните правой кнопкой мыши проект рабочей роли и выберите Свойства.

    Cache Role Properties Menu Item

  2. Переключитесь на вкладку Кэширование, установите флажок Включить кэширование и нажмите клавиши CTRL+S, чтобы сохранить изменения.

    Disable Colocated Role Cache Setting

Настройка клиентов кэша.

После создания и настройки кэша следующим шагом является добавление необходимой конфигурации и ссылок, чтобы клиенты кэша имели доступ к кэшу. управляемая служба кэша поддерживает следующие клиенты.

  • Веб-сайты Azure

  • Веб-роль и рабочая роль облачных служб Azure.

  • Виртуальные машины Azure

Примечание

Если проект кэша In-Role уже использует последнюю версию пакета Azure SDK, все, что необходимо сделать, — обновить конфигурацию клиента кэша, пропуская приведенные ниже шаги и следуя процедуре, описанной в разделе "Обновление конфигурации клиента кэша" для использования службы кэша.

Если проект кэша In-Role использует пакет Azure SDK 1.8 –2.0, необходимо удалить пакет кэширования NuGet, удалить любую оставшуюся конфигурацию клиента кэша, а затем установить последнюю версию пакета Azure SDK (в настоящее время — 2.1). После обновления пакета SDK установите и настройте последний пакет NuGet для кэша. Чтобы настроить клиенты кэша, для каждого из них выполните приведенные ниже действия.

  • Удаление пакета NuGet для кэша на основе ролей

  • Настройка клиента кэша с помощью пакета NuGet для Caching

Удаление пакета NuGet для кэша на основе ролей

Прежде чем клиентские приложения можно будет настроить для управляемая служба кэша, необходимо удалить существующие конфигурации кэша In-Role и ссылки на сборки. Для этого можно удалить пакет NuGet для кэширования.

Чтобы удалить пакет In-Role кэша NuGet, щелкните правой кнопкой мыши проект клиента в Обозреватель решений и выберите пункт "Управление пакетами NuGet". Выберите узел Установленные пакеты и введите текст Кэш в поле Поиск установленных пакетов. Выберите Windows кэширование Azure, нажмите кнопку "Удалить" и нажмите кнопку "Закрыть".

Примечание

На приведенном снимке экрана показан пакет NuGet версии 2.1.0.0. Если у вас установлена эта или более поздняя версия, данный шаг можно пропустить. Этот шаг необходимо выполнить только в том случае, если версия пакета NuGet — 1.8 или 2.0..

Uninstall In-Role Cache NuGet Package

При удалении пакета NuGet кэша In-Role удаляются сборки кэша In-Role и записи кэша In-Role в app.config клиентском приложении.web.config Так как при удалении пакета 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" channelOpenTimeout="0">
        <autoDiscover isEnabled="true" identifier="CacheWorker" />
      </dataCacheClient>
    </dataCacheClients>
    

После удаления конфигурации кэша In-Role можно настроить клиент кэша, как описано в следующем разделе "Настройка клиента кэша" с помощью раздела "Кэширование NuGet пакет".

Настройка клиента кэша с помощью пакета NuGet для Caching

управляемая служба кэша предоставляет пакет NuGet для добавления необходимых ссылок на конфигурацию и сборку, чтобы разрешить клиентам кэша доступ к кэшу.

Важно!

Перед настройкой клиента кэша с помощью пакета управляемая служба кэша NuGet убедитесь, что конфигурация кэша In-Role полностью удалена из web.config роли клиента или app.config из нее, как описано в предыдущем разделе.

Важно!

Для выполнения этих действий требуется последняя версия диспетчера пакетов NuGet (2.2.* или более поздняя версия). Чтобы установить последнюю версию NuGet диспетчер пакетов, см. NuGet диспетчер пакетов.

Чтобы использовать пакет управляемая служба кэша NuGet, щелкните правой кнопкой мыши клиентский проект в Обозреватель решений и выберите пункт "Управление пакетами NuGet".

Выберите пункт Azure Caching, нажмите кнопку Установить и кнопку Принимаю. После установки пакета в проект клиента нажмите кнопку Закрыть, чтобы закрыть окно Управление пакетами NuGet.

Примечание

Если пункт Azure Caching отсутствует в списке, введите WindowsAzure.Caching в текстовом поле Поиск в сети.

Windows Azure Cache NuGet Package

Когда пакет управляемая служба кэша NuGet устанавливается в клиентский проект, он добавляет необходимые ссылки на конфигурацию и сборку, чтобы клиентское приложение получите доступ к кэшу.

В файл web.config или app.config проекта добавляется несколько элементов.

  1. В configSections добавляются разделы dataCacheClients и cacheDiagnostics.

    <!-- Non-cache sections omitted for space -->
      <configSections>
        <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.

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="[Cache role name or Service Endpoint]" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    

    Замените [имя роли кэша или конечная точка службы] URL-адресом конечной точки, отображаемым на панели мониторинга кэша на портале управления.

    Endpoint URL for Windows Azure Cache Service
    В этом примере используется кэш applicationcache и URL-адрес конечной точки applicationcache.cache.windows.net.

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    

    Раскомментируйте раздел securityProperties и замените [ключ проверки подлинности] первичным ключом проверки подлинности.

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    

    Ключ проверки подлинности можно найти на портале управления. Для этого необходимо щелкнуть Manage Keys (Управление ключами) на панели мониторинга кэша. Дополнительные сведения о ключах доступа и защите обмена данными кэша с атрибутом см. в sslEnabled статье "Модель безопасности для Azure управляемая служба кэша".

    Manage Access Keys for Windows Azure Cache Service

    Предупреждение

    Эти параметры следует настраивать правильно, иначе клиенты не смогут получить доступ к кэшу.

Для проектов облачных служб пакет управляемая служба кэша NuGet также добавляет параметр ClientDiagnosticLevel в ConfigurationSettings роль клиента кэша.ServiceConfiguration.cscfg В следующем примере показан WebRole1 раздел из ServiceConfiguration.cscfg файла с ClientDiagnosticLevel 1, который является значением clientDiagnosticLevel по умолчанию.

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

Примечание

Дополнительные сведения об уровнях диагностики кэша см. в статье "Сведения о ClientDiagnosticLevel для Azure управляемая служба кэша".

Помимо добавления необходимой конфигурации пакет управляемая служба кэша 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

Если проект — это веб-проект, также добавляется следующая ссылка на сборку.

  • Microsoft.Web.DistributedCache.dll

Примечание

управляемая служба кэша и In-Role Кэш используют один и тот же API, и хотя имена сборок одинаковы, сами сборки отличаются и находятся в разных расположениях. Пакет управляемая служба кэша NuGet удалит ссылки на сборки кэша In-Role и добавит правильные управляемая служба кэша ссылки на сборки. Сборки управляемая служба кэша находятся в папкеC:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.1\ref\Caching.

Обновление конфигурации клиента кэша для использования службы кэша

Если проект кэша In-Role уже использует последнюю версию пакета Azure SDK, необходимо обновить конфигурацию клиента кэша, чтобы указать на новый кэш управляемая служба кэша.

  1. Откройте файл web.config или app.config из проекта клиента кэша и найдите раздел dataCacheClients.

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Windows Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Windows Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="MyCacheWorkerRole" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    
  2. autoDiscover В разделе замените имя роли кластера кэша In-Role именем URL-адреса конечной точки для кэша управляемая служба кэша в атрибутеidentifier. URL-адрес конечной точки показан на панели мониторинга кэша на портале управления.

    Endpoint URL for Windows Azure Cache Service
    В этом примере используется кэш applicationcache и URL-адрес конечной точки applicationcache.cache.windows.net.

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    
  3. Раскомментируйте раздел securityProperties и замените [ключ проверки подлинности] ключом проверки подлинности.

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    

    Ключ проверки подлинности можно найти на портале управления. Для этого необходимо щелкнуть Ключи доступа на панели мониторинга кэша.

    Manage Access Keys for Windows Azure Cache Service

Перенос кэша состояний сеансов и кэша вывода ASP.NET

После переноса веб-проектов ASP.NET из кэша In-Role в управляемая служба кэша, как описано в разделе "Настройка клиентов кэша", для сохранения состояния сеанса ASP.NET или кэширования выходных данных страниц в кэше требуются только минимальные изменения. Чтобы хранить состояние сеансов ASP.NET в кэше, добавьте следующий раздел в system.web в web.config.

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

Примечание

Если веб-роль ASP.NET уже настроена для использования поставщика состояний сеансов для кэширования, этот раздел уже присутствует и никаких изменений не требуется.

Обновите cacheName, чтобы указать кэш, в котором хранится состояние сеанса. Используйте default для указания кэша по умолчанию.

Чтобы хранить вывод страниц в кэше, добавьте следующий раздел в system.web.

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

Примечание

Если веб-роль ASP.NET уже настроена для использования поставщика кэша вывода для кэширования, этот раздел уже присутствует, и изменения не требуются.

Обновите cacheName, чтобы указать кэш, в котором хранится состояние сеанса. Используйте default для указания кэша по умолчанию.

Добавьте директиву OutputCache на каждую страницу, вывод которой должен кэшироваться.

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

В этом примере данные кэшированной страницы хранятся в кэше 60 секунд, и для каждой комбинации параметров кэшируются разные версии страницы. Дополнительные сведения о доступных параметрах см. в директиве OutputCache.

См. также:

Основные понятия

Предложения кэша для управляемой службы кэша Azure
Планирование емкости для управляемой службы кэша Azure
Поставщик состояния сеансов для управляемой службы кэша Azure
Поставщик кэша вывода страниц для управляемой службы Azure

Другие ресурсы

Управляемая служба кэша Azure