응용 프로그램 요청 라우팅을 이용한 공유 호스팅

등록일시: 2011-07-10 13:34,  수정일시: 2013-11-26 14:46
조회수: 4,030
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

개요

공유 호스팅 환경에서 응용 프로그램 요청 라우팅을 도입하면 공유 호스트 서비스 제공자들에게 추가적인 혜택과 기회를 제공해주는 새로운 배포 아키텍처를 적용할 수 있습니다. 이 시나리오는 응용 프로그램 요청 라우팅에서 제공해주는 호스트 이름 친화성이라는 기능을 활용함으로서 얻어지는 결과입니다. 호스트 이름 친화성 기능에 관한 더 많은 정보와 이 기능을 공유 호스팅에 적용하는 방법에 관해서는 응용 프로그램 요청 라우팅 2.0을 이용한 공유 호스팅의 배포 개요 문서를 참고하시기 바랍니다.

본문에서는 응용 프로그램 요청 라우팅의 호스트 이름 친화성 기능을 구성하여 다음과 같은 환경을 구성하는 과정을 살펴봅니다:

목표

본문의 목표는 공유 호스팅 환경에서 응용 프로그램 요청 라우팅을 구성하는 것입니다.

전제조건

본문의 과정들을 정상적으로 따라해보기 위해서는 먼저 다음과 같은 조건들을 만족해야만 합니다:

  • IIS 7.0이 설치되어 있는 윈도우 2008(모든 SKU 가능) 이상의 시스템
  • 마이크로소프트 응용 프로그램 요청 라우팅 버전 1 및 관련 모듈들
  • 사이트 및 응용 프로그램이 실행되고 있는 최소한 두 개 이상의 응용 프로그램 서버
    • 이 서버들은 공유 구성 및 공유 콘텐츠를 사용하도록 구성되어 있어야만 합니다. 공유 구성에 관한 더 자세한 정보는 이 문서를 참고하시기 바랍니다.
    • 이 서버들에서 실행되는 사이트들은 호스트 이름 바인딩을 사용하고 있어야만 합니다.

만약, 아직 응용 프로그램 요청 라우팅을 설치하지 않았다면, 다음 링크에서 다운로드가 가능합니다: *

응용 프로그램 요청 라우팅을 설치하는 보다 자세한 방법은 응용 프로그램 요청 라우팅 설치하기를 참고하시기 바랍니다.

그리고, 마지막으로 응용 프로그램 요청 라우팅 모듈 서버 팜 정의 및 구성하기 문서에서 설명하는 과정에 따라 정의 및 구성된 서버 팜이 준비되어 있어야만 합니다.

* 이전 문서에서 설명했던 것처럼 현재 ARR의 최신 버전은 2.5로(2011년 7월 10일 현재), 두 링크 중 어떤 것을 선택하더라도 그 결과는 같습니다. 결론적으로 웹 플랫폼 설치 관리자에 의해서 모든 설치 과정이 이뤄지도록 변경되었습니다.

단계 1 - 호스트 이름 친화성 활성화시키기

본문을 계속 진행하기 전에, 공유 구성 및 공유 콘텐츠를 사용하도록 구성된 응용 프로그램 서버들로 이뤄진 서버 팜이 생성되어 있어야만 한다는 점을 기억하시기 바랍니다. 그리고, 응용 프로그램 서버에서 실행되는 사이트들은 반드시 호스트 이름 바인딩을 사용하고 있어야만 합니다.

UI를 이용해서 호스트 이름 친화성을 활성화하려면:

  1. IIS 관리자를 실행합니다.
  2. 본문에 사용하기 위해서 생성한 서버 팜을 선택합니다.
  3. 그러면, 다음과 같은 아이콘들이 나타납니다.
  4. "Server Affinity" 아이콘을 마우스로 더블 클릭합니다.
  5. "Use host name" 체크 박스를 체크하고 "Apply" 버튼을 클릭해서 호스트 이름 친화성을 활성화시킵니다.


    호스트 이름 친화성이 부여될 서버(들)을 결정하는데 사용되는 두 종류의 공급자가 존재한다는 점을 주의 깊게 살펴보시기 바랍니다. 이 공급자들은 로드 밸런스 알고리즘 공급자와는 별개로 단지 호스트 이름 친화성 기능에서만 사용됩니다. 두 가지 공급자는 다음과 같습니다:
    • Microsoft.Web.Arr.HostNameRoundRobin
    • Microsoft.Web.Arr.HostNameMemory
    Microsoft.Web.Arr.HostNameRoundRobin 공급자는 친화성이 부여될 호스트 이름의 갯수를 라운드 로빈 방식으로 균등하게 분배합니다. 이 공급자를 사용하는 경우, 응용 프로그램 서버에 요구되는 특별한 요구사항은 없습니다.

    Microsoft.Web.Arr.HostNameMemory 공급자는 사용 가능한 메모리의 양이 가장 많은 서버에 다음 호스트 이름을 할당하는 방식으로, 응용 프로그램 서버의 사용 가능한 메모리의 총량을 기준으로 친화성이 부여될 호스트 이름의 갯수를 분배합니다. 이 공급자는 WMI를 이용해서 사용 가능한 메모리의 양을 조회합니다 (committed memory를 physical memory로 나눈 값으로 정의됩니다). 따라서, 이 공급자를 사용하려면 응용 프로그램 서버가 반드시 윈도우즈 서버여야 하고 원격 WMI 쿼리가 허용되도록 응용 프로그램 서버가 추가 구성되어야 합니다. 이에 대한 보다 자세한 내용은 How to configure WMI service on application servers for HostNameMemory affinity provider 문서를 참고하시기 바랍니다.

    그리고, "Time-out" 항목의 값은 동일한 호스트 이름에 대한 요청이 마지막으로 전달된 뒤, 얼마나 많은 시간이 흘러야 친화성이 재설정되는 지를 결정하는데 사용됩니다. 이 값은 응용 프로그램 서버의 응용 프로그램 풀의 유휴 시간 제한 값과 동일한 값으로 지정되어야만 합니다. 기본값은 20분 입니다.
  6. 지금까지 구성한 내용들이 정상적으로 동작하는지 확인해 보려면 "Display Routing Table" 버튼을 클릭합니다.
  7. 호스트의 이름을 입력하고 "Lookup by host name"을 클릭합니다. 그러면, 서버의 주소가 나타나는데 바로 이 서버가 호스트 이름 친화성이 부여된 서버입니다.

명령 프롬프트를 이용해서 호스트 이름 친화성을 활성화하려면:

  1. 관리자 권한으로 명령 프롬프트를 엽니다.
  2. %windir%\system32\inetsrv로 이동합니다.
  3. 다음의 명령어를 입력하여 호스트 이름 친화성을 활성화합니다 (여기에서는 서버 팜의 이름을 "myServerFarm"으로 가정합니다):
    appcmd.exe set config -section:webFarms 
        /[name='myServerFarm'].applicationRequestRouting.affinity.useHostName:"True" 
        /commit:apphost

단계 2 - 호스트 이름별로 사용할 서버의 갯수 지정하기

기본적으로 모든 호스트 이름은 하나의 응용 프로그램 서버만 사용할 수 있습니다. 그러나, 만약 사이트의 소유자가 추가적인 용량을 원한다면, 서비스 제공자가 해당 사이트가 호스트 이름마다 사용할 수 있는 응용 프로그램 서버의 숫자를 직접 지정할 수도 있습니다.

UI를 이용해서 사용할 서버의 갯수를 지정하려면:

  1. "Server Affinity" 페이지에서 "Advanced Settings" 머튼을 마우스로 클릭합니다.
  2. "Host Name" 컬럼에 호스트 이름을 입력합니다. 이 항목은 필수입니다.
  3. "Number of Allocated Servers" 컬럼에 해당 호스트 이름이 사용할 수 있는 서버의 갯수를 입력합니다.
  4. "Alternate Host Names" 컬럼은 "Host Name" 컬럼의 값과 동일한 방법으로 취급되야 하는 추가적인 호스트 이름을 지정하기 위해서 사용됩니다. 가령, 특정 사이트는 그 소유자가 해당 사이트에 대해 여러 개의 DNS 항목을 보유하고 있을 수 있습니다. 이런 경우, 아마도 사이트 소유자는 ARR이 여러 개의 DNS 항목들을 동일한 방식으로 취급해서 모든 도메인 이름에 대해서 응용 프로그램 서버에서 단 하나의 작업자 프로세스만 시작되기를 원할 것입니다.
  5. "OK" 버튼을 클릭해서 변경 사항을 저장합니다.
  6. 지금까지 구성한 내용들이 정상적으로 동작하는지 확인해 보려면 "Display Routing Table" 버튼을 클릭합니다.
  7. 호스트의 이름을 입력하고 "Lookup by host name"을 클릭합니다. 그러면, "Number of Allocated Servers" 컬럼에 지정한 값과 같은 갯수의 서버 주소들이 반환될 것입니다. 이 서버들이 바로 호스트 이름 친화성이 부여된 서버들입니다.

명령 프롬프트를 이용해서 사용할 서버의 갯수를 지정하려면:

  1. 관리자 권한으로 명령 프롬프트를 엽니다.
  2. %windir%\system32\inetsrv로 이동합니다.
  3. 다음의 명령어를 입력하여 호스트 이름에 대한 서버의 갯수를 지정합니다 (여기에서는 서버 팜의 이름을 "myServerFarm"으로 가정하고 있으며 www.contoso.com 도메인 이름에 대해서 서버 갯수를 2로 지정합니다):
    appcmd.exe set config -section:webFarms 
        /+"[name='myServerFarm'].applicationRequestRouting.affinity.[name='www.contoso.com',servers='2']" 
        /commit:apphost

요약

본문에서는 공유 호스팅 시나리오에서 응용 프로그램 요청 라우팅이 제공해주는 호스트 이름 친화성 기능을 정상적으로 구성해 봤습니다. 응용 프로그램 요청 라우팅의 보다 많은 속성 및 기능들에 관해서는 응용 프로그램 요청 라우팅 모듈 사용하기를 참고하시기 바랍니다.

관련 자료