내보내기(0) 인쇄
모두 확장

Azure 공유 캐싱에서 역할 내 캐시로 마이그레이션

업데이트 날짜: 2014년 9월

note참고
응용 프로그램에 대한 올바른 Azure 캐시 제품 선택에 대한 자세한 지침은 내게 적합한 Azure 캐시 기능를 참조하세요.

Microsoft Azure 공유 캐싱을 사용하는 응용 프로그램을 최소한으로 변경하여 역할 내 캐시 캐싱으로 마이그레이션할 수 있습니다. 역할 내 캐시에서는 공유 캐싱과 동일한 API를 사용하므로, 캐시에 액세스하는 데 공유 캐싱을 사용하는 기존 코드를 다시 사용해 역할 내 캐시 역할 내 캐시에 액세스할 수 있습니다. 이 항목에서는 역할 내 캐시를 사용하도록 공유 캐싱 응용 프로그램을 마이그레이션하는 데 필요한 구성을 만들고 응용 프로그램을 변경하는 방법에 대해 설명합니다.

note참고
역할 내 캐시 사용에 따른 이점에 대한 자세한 내용은 Azure 캐시에 대한 역할 내 캐시 정보를 참조하세요.

역할 내 캐시는 역할에서 캐싱 서비스를 호스팅하는 기능을 제공합니다. 이 모델에서 캐시는 클라우드 서비스의 일부입니다. 클라우드 서비스 내에서 역할 하나를 선택해 역할 내 캐시를 호스팅합니다. 실행 중인 해당 역할의 인스턴스에서 메모리 리소스를 연결하여 캐시 클러스터를 만듭니다. 이 비공개 캐시 클러스터는 동일한 배포 내의 역할에서만 사용할 수 있습니다. 역할 내 캐시 배포 토폴로지에는 같은 위치에 배치되는 방식과 전용 방식의 두 가지가 있습니다.

 

캐시 클러스터 배포 토폴로지 설명

전용 역할 캐싱

작업자 역할 인스턴스가 캐싱에만 사용됩니다.

같은 위치에 배치된 역할 캐싱

캐시가 역할에서 호스팅된 기본 응용 프로그램과 VM 리소스(대역폭, CPU 및 메모리)를 공유합니다.

응용 프로그램에서 기존 역할의 메모리를 사용하지 않으면 해당 역할에 같은 위치에 배치된 역할 캐시 클러스터를 구성하고 여분의 캐싱 메모리를 사용할 수 있습니다. 역할에 여분의 메모리가 부족해서 캐시 클러스터를 지원할 수 없으면 역할을 확장하거나 캐시 작업자 역할을 추가하여 전용 역할 캐시 클러스터를 구성할 수 있습니다.

전용 역할 캐시 클러스터를 구성하려면 캐시 작업자 역할을 프로젝트에 추가합니다. 캐시 작업자 역할을 추가하려면 솔루션 탐색기에서 을 확장합니다(확장되어 있지 않은 경우).

note참고
전용 역할 캐싱은 작업자 역할에서만 지원되며 웹 역할에서 구성할 수 없습니다.

프로젝트의 역할 폴더를 마우스 오른쪽 단추로 클릭한 다음 추가, 새 작업자 역할 프로젝트캐시 작업자 역할을 차례로 선택합니다. 원하는 역할 이름을 이름 상자에 입력한 다음 추가를 클릭합니다.

캐시 작업자 역할 추가

캐시 작업자 역할은 전용 역할 캐싱에 미리 구성되어 있습니다. 설정을 보려면 역할 폴더에서 새로 추가된 역할을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

캐시 작업자 역할 속성 상황에 맞는 메뉴

캐싱 탭으로 전환하여 캐시 작업자 역할의 캐싱 속성을 확인합니다.

캐시 작업자 역할 속성

이 역할은 캐시 작업자 역할이므로 캐싱 사용 확인란이 이미 선택되어 있으며 전용 역할 캐싱도 선택되어 있습니다. 이 캐시의 설정은 명명된 캐시 설정 섹션에서 구성됩니다. 캐시 설정은 역할 내 캐시와 Microsoft Azure 공유 캐싱 간에 약간의 차이가 있습니다. 이러한 설정은 다음 캐시 클러스터 저장소 계정 구성명명된 캐시 설정 구성 섹션에 설명되어 있습니다.

구성 탭으로 전환합니다.

역할 인스턴스 VM 크기 및 인스턴스 개수

기본 인스턴스 수1이며 기본 VM 크기소규모입니다. 원하는 구성에 맞게 이러한 설정을 수정합니다. 역할 내 캐시의 용량 계획 관련 고려 사항(Azure 캐시) 가이드에서는 설정을 응용 프로그램의 캐싱 요구 사항에 맞게 선택하는 지침을 제공합니다.

캐시 작업자 역할을 추가하고 가상 컴퓨터 크기와 인스턴스 수를 구성한 후에는 다음 명명된 캐시 설정 구성 섹션에 설명된 대로 캐시를 구성할 수 있습니다.

같은 위치에 배치된 역할 캐시 클러스터를 구성하려면 역할 폴더에서 원하는 역할을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

웹 역할 속성

캐싱 탭으로 전환하여 캐싱 사용 확인란을 선택하고 원하는 캐싱 옵션을 지정합니다. 기본 구성에서는 역할 인스턴스 메모리의 30%가 캐싱에 할당됩니다. 캐싱 크기(%) 슬라이더를 조정하여 원하는 캐시 크기를 구성합니다.

역할 Caching 속성

캐시 크기를 결정하는 데 사용된 가장 기본적인 근사치를 얻는 공식은 역할 인스턴스의 수와 가상 컴퓨터 크기에 따른 메모리 용량을 곱한 다음 지정된 백분율을 곱하는 것입니다. 이 공식은 매우 기본적인 근사치만 계산합니다. 원하는 크기의 캐시를 제공하는 데 필요한 설정에 대한 자세한 내용은 역할 내 캐시의 용량 계획 관련 고려 사항(Azure 캐시)을 참조하세요. 캐시 클러스터를 성공적으로 호스팅하기 위해 역할 인스턴스를 추가하거나 가상 컴퓨터의 크기를 늘려야 할 경우 구성 탭에서 구성할 수 있습니다.

역할 내 캐시에는 저장소 계정이 필요합니다. 이 저장소 계정은 캐시 클러스터에 대한 구성 데이터를 유지하는 데 사용되며, 캐시 클러스터를 구성하는 모든 가상 컴퓨터에서 액세스할 수 있습니다. 이 저장소 계정은 명명된 캐시 설정 바로 위에 있는 캐시 클러스터 역할 속성 페이지의 캐싱 탭에서 지정됩니다.

캐시 클러스터 저장소 계정
Important중요
이 저장소 계정이 구성되어 있지 않으면 역할을 시작할 수 없습니다.

캐시 설정은 명명된 캐시 설정 섹션에서 구성됩니다.

명명된 캐시 속성

캐시 설정은 역할 내 캐시와 Microsoft Azure 공유 캐싱 간에 약간의 차이가 있습니다.

 

기능 역할 내 캐시 지원 Microsoft Azure 공유 캐싱 지원

Name

default 캐시가 구성되어 있으며, 필요한 경우 명명된 캐시를 추가로 구성할 수 있습니다.

기본 캐시만 해당됩니다.

고가용성

캐시 항목에 고가용성이 제공됩니다. 하나의 역할이 중단되면 캐시 내 항목의 백업본을 계속 사용할 수 있습니다.

고가용성이 제공되지 않습니다.

알림

알림을 사용하면 캐시 클러스터에서 여러 캐시 작업이 발생할 때 응용 프로그램이 비동기적 알림을 받을 수 있습니다.

자세한 내용은 TechNet의 알림(Azure 캐시의 역할 내 캐시)

지원되지 않습니다.

제거 정책

LRU(마지막으로 사용한 항목) 또는 없음을 선택할 수 있습니다. 기본값은 LRU입니다.

LRU만 해당됩니다.

TTL(Time to Live)(분)

캐시 항목의 기본 만료 시간은 10분이지만 이 값을 구성할 수 있습니다. 항목을 캐시에 추가할 때 AddPut 오버로드를 사용하면 캐시에 추가된 개별 항목의 만료 시간도 지정할 수 있습니다.

기본 만료 시간은 24시간이며 이 값은 구성할 수 없습니다. 항목을 캐시에 추가할 때 AddPut 오버로드를 사용하면 캐시에 추가된 개별 항목의 만료 시간을 지정할 수 있습니다.

만료 유형

만료 유형에는 없음, 절대슬라이딩 윈도우의 세 가지가 있습니다. 절대를 지정하면 항목이 캐시에 추가될 때 TTL(Time to Live)(분)에 지정된 만료 시간이 시작됩니다. 슬라이딩 윈도우를 지정하면 캐시에서 항목에 액세스할 때마다 만료 시간이 재설정됩니다. 안 함을 지정하면 TTL(Time to Live)(분)0으로 설정되고 항목이 만료되지 않습니다. 기본값은 절대입니다.

자세한 내용은 TechNet의 만료 및 제거(Azure 캐시의 역할 내 캐시).

만료 정책은 절대입니다. 따라서 항목이 캐시에 추가되면 만료 간격이 시작됩니다.

캐시 클러스터를 구성한 후에는 캐시 클라이언트가 캐시에 액세스할 수 있도록 필요한 구성 및 참조를 추가해야 합니다. 역할 내 캐시에서 클라이언트는 캐시 클러스터와 동일한 배포에 있는 임의의 역할이 될 수 있습니다. 같은 위치에 배치된 역할 캐시 클러스터에 액세스하는 경우 클라이언트는 캐시 클러스터를 호스팅하는 역할 자체가 될 수 있습니다. 캐시 클라이언트를 구성하려면 캐시에 액세스하는 각 역할에 대해 다음 단계를 수행합니다.

클라이언트 역할에 역할 내 캐시를 구성하기 전에 기존 공유 캐싱 구성과 어셈블리 참조를 제거해야 합니다. 공유 캐싱이 공유 캐싱 NuGet 패키지를 사용하여 구성된 경우에는 공유 캐싱 NuGet 패키지를 제거하여 해당 구성을 제거할 수 있으며, 그렇지 않으면 수동으로 제거해야 합니다.

공유 캐싱 NuGet 패키지를 제거하려면 솔루션 탐색기에서 원하는 클라이언트 역할을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 선택합니다. 설치된 패키지 노드를 선택하고 설치된 패키지 검색 상자에 캐싱을 입력합니다. Azure 공유 캐싱을 선택하고 제거를 클릭한 다음 닫기를 클릭합니다.

공유 캐싱 NuGet 패키지 제거
note참고
목록에 Microsoft Azure 공유 캐싱 NuGet 패키지가 없으면 닫기를 클릭하고 공유 캐싱 구성 수동 제거의 단계를 따릅니다.

공유 캐싱 NuGet 패키지를 제거하면 공유 캐싱 어셈블리와 함께, 클라이언트 역할의 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">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

공유 캐싱 구성을 제거하고 나면 다음 캐싱 NuGet 패키지를 사용하여 캐시 클라이언트 구성 섹션에 설명된 대로 캐시 클라이언트를 구성할 수 있습니다.

공유 캐싱 구성을 수동으로 제거하려면 공유 캐싱 어셈블리 참조와 함께, app.config 또는 web.config에서 공유 캐싱 구성을 제거해야 합니다.

공유 캐싱 어셈블리 참조를 제거하려면 솔루션 탐색기에서 원하는 클라이언트 역할을 선택하고 참조 폴더를 확장합니다. 다음 목록의 각 어셈블리에 대해, 솔루션 탐색기에서 참조 폴더에 있는 어셈블리를 마우스 오른쪽 단추로 클릭하고 제거를 선택합니다. 클라이언트 역할이 웹 역할인 경우에는 Microsoft.Web.DistributedCache도 제거합니다.

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

공유 캐싱 구성을 제거하려면 클라이언트 역할의 web.config 또는 app.config를 열고 다음 두 항목을 제거합니다.

  • configSections 요소에서 dataCacheClients 항목을 제거합니다. configSections 요소 전체가 아니라 dataCacheClients 항목(있는 경우)만 제거해야 합니다.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 다음 예제와 유사한 dataCacheClients 섹션을 제거합니다.

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

이러한 항목이 제거되고 나면 다음 섹션의 단계를 수행하여 캐시 클라이언트를 구성할 수 있습니다.

역할 내 캐시에서는 클라이언트 역할이 캐시 클러스터에 액세스할 수 있도록 필요한 구성 및 어셈블리 참조를 추가하는 NuGet 패키지를 제공합니다.

Important중요
역할 내 캐시 NuGet 패키지를 사용하여 캐시 클라이언트를 구성하기에 앞서, 이전 섹션의 설명대로 클라이언트 역할의 web.config 또는 app.config에서 공유 캐싱 구성이 완전하게 제거된 상태여야 합니다.

역할 내 캐시 NuGet 패키지를 사용하려면 솔루션 탐색기에서 원하는 클라이언트 역할을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 선택합니다.

NuGet 패키지 관리

Azure 캐싱을 선택하고 설치를 클릭한 다음 동의함을 클릭합니다. 패키지가 역할에 설치되면 닫기를 클릭하여 NuGet 패키지 관리 창을 닫습니다.

note참고
목록에 Azure 캐싱이 나타나지 않으면 온라인 검색 텍스트 상자에 WindowsAzure.Caching을 입력합니다.

NuGet을 사용하는 캐싱 설정

역할 내 캐시 NuGet 패키지가 클라이언트 역할에 설치된 경우 클라이언트 역할이 원하는 캐시 클러스터에 액세스할 수 있도록 필수 구성과 어셈블리 참조가 추가됩니다.

역할의 web.config 또는 app.config에 여러 항목이 추가됩니다.

  1. dataCacheClientscacheDiagnostics라는 두 개의 섹션이 configSections에 추가됩니다.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
      <section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  2. dataCacheClients 섹션이 configuration 섹션에 추가됩니다.

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    
    [cache cluster role name]을 캐시 클러스터를 호스팅하는 역할의 이름으로 바꿉니다. 다음 예제에서는 [cache cluster role name]CacheWorkerRole1로 대체되었습니다.

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    
    Warning경고
    이 설정은 올바르게 구성되어야 합니다. 그렇지 않으면 클라이언트가 캐시에 액세스할 수 없습니다. 식별자가 역할에 매핑되지 않으면 캐시가 액세스될 때 내부 DataCacheException과 함께 TargetInvocationException이 발생하는데, 여기에는 The role [cache cluster role name] was not found in the current deployment와 유사한 메시지가 포함됩니다. 식별자가 캐시 클러스터를 호스팅하지 않는 역할로 매핑되면 InvalidOperationException이 발생하는데, 여기에는 No Endpoints found와 유사한 메시지가 포함됩니다.

  3. cacheDiagnostics 섹션도 configuration 섹션에 추가됩니다.

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    
    note참고
    캐시 클라이언트의 크래시 덤프는 기본적으로 사용하지 않도록 설정되며 이 섹션에 의해 제어됩니다. 캐싱 진단에 대한 자세한 내용은 역할 내 캐시 문제 해결 및 진단(Azure 캐시)을 참조하세요.

역할 내 캐시 NuGet 패키지는 ServiceConfiguration.cscfg에서 캐시 클라이언트 역할의 ConfigurationSettingsClientDiagnosticLevel 설정도 추가합니다. 다음 예제에서는 ServiceConfiguration.cscfg 파일의 WebRole1 섹션으로, ClientDiagnosticLevel이 기본 ClientDiagnosticLevel인 1로 설정되어 있습니다.

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
note참고
캐시 진단 수준에 대한 자세한 내용은 역할 내 캐시 문제 해결 및 진단(Azure 캐시)을 참조하세요.

역할 내 캐시 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

note참고
역할 내 캐시와 Microsoft Azure 공유 캐싱은 동일한 API를 공유하므로 어셈블리 이름이 같더라도 어셈블리 자체는 달라서 다른 위치에 있습니다. 역할 내 캐시 NuGet 패키지는 공유 캐싱 어셈블리 참조를 제거하고 올바른 역할 내 캐시 어셈블리 참조를 추가합니다. 역할 내 캐시 어셈블리는 C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching 폴더에 있습니다.

캐시 클라이언트 구성에 설명된 대로 ASP.NET 웹 역할 클라이언트를 Microsoft Azure 공유 캐싱에서 역할 내 캐시로 마이그레이션한 다음에는 최소한의 변경 작업으로 ASP.NET 세션 상태 또는 페이지 출력 캐싱을 역할 내 캐시에 저장할 수 있습니다. ASP.NET 세션 상태를 캐시에 저장하도록 설정하려면 다음 섹션을 web.configsystem.web에 추가합니다.

note참고
ASP.NET 웹 역할이 Microsoft Azure 캐시의 세션 상태 공급자를 사용하도록 이미 구성되어 있으면 이 섹션은 이미 포함되어 있습니다.

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

캐시 클러스터에서 세션 상태를 저장할 캐시를 지정하려면 cacheName을 업데이트합니다. 기본 캐시를 지정하려면 default를 사용합니다.

페이지 출력 캐싱을 캐시에 저장하도록 설정하려면 다음 섹션을 system.web에 추가합니다.

note참고
ASP.NET 웹 역할이 Microsoft Azure 캐시의 출력 캐시 공급자를 사용하도록 이미 구성되어 있으면 이 섹션은 이미 포함되어 있습니다.

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

캐시 클러스터에서 세션 상태를 저장할 캐시를 지정하려면 cacheName을 업데이트합니다. 기본 캐시를 지정하려면 default를 사용합니다.

출력을 캐시할 각 페이지에 OutputCache 지시문을 추가합니다.

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

이 예제에서는 캐시된 페이지 데이터가 60초 동안 캐시에 남아 있으며 페이지의 다른 버전이 각 매개 변수의 조합 시간 동안 캐시됩니다. 사용 가능한 옵션에 대한 자세한 내용은 OutputCache 지시문을 참조하세요.

표시:
© 2014 Microsoft