웹 팜에 응용 프로그램 배포/웹 팜의 모든 컴퓨터 동기화

이 샘플에서는 웹 팜 시나리오에서 다음과 같은 작업을 수행하는 명령줄 스크립트를 작성하는 방법을 보여 줍니다.

  1. 개발자가 제공한 패키지의 응용 프로그램을 웹 팜의 여러 컴퓨터에 배포합니다.

    여러 컴퓨터에서 새 응용 프로그램 패키지를 배포하거나 응용 프로그램을 최신 버전으로 업그레이드하는 작업은 번거로울 수 있습니다. 그러나 원격 컴퓨터에 패키지를 보내고 배포를 수행하는 스크립트를 사용하면 이 작업이 간단해집니다.

  2. 웹 팜에 있는 모든 컴퓨터의 콘텐츠와 구성을 하나의 모델 컴퓨터와 동기화합니다.

    웹 팜에 여러 가지 변경을 적용하려면 모든 컴퓨터에 모든 변경 내용이 정확하게 동일한 방식으로 적용되어야 합니다. 이때 적용해야 할 모든 변경 내용이 스크립팅되어 있으면 손쉽게 처리할 수 있지만, 그렇지 않을 경우 웹 팜의 모든 컴퓨터에 모든 변경 내용을 기록하고 재현하는 방법에 문제가 발생합니다. 또 다른 해결 방법은 모든 변경 사항을 한 컴퓨터에 적용한 후 이를 웹 팜 전체에 복제하는 것입니다.

이 샘플에서는 웹 배포 도구(MSDeploy)를 사용하여 응용 프로그램 패키지를 배포하거나 한 서버의 콘텐츠와 구성을 웹 팜의 모든 컴퓨터로 복제하는 방법을 보여 줍니다. 이 샘플은 모든 MSDeploy 응용 프로그램 패키지에서 작동합니다. Windows Server AppFabric 샘플과 함께 사용하도록 만들어진 공통 Windows Server AppFabric 샘플 응용 프로그램을 사용하는 것이 좋습니다. 이 응용 프로그램 패키지를 찾으려면 <samples>\ Samples\Management\MultiMachineSyncAndDeploy \Code\CalculatorService.zip 파일을 찾습니다. 여기서 <samples>는 AppFabric 샘플을 설치한 경로입니다. 이 스크립트는 배포된 응용 프로그램의 이름을 바꿔야 하거나 한 사이트만 동기화해야 하는 등의 특정 요구를 충족하도록 손쉽게 수정할 수 있습니다.

참고

샘플은 교육용으로만 제공됩니다. 프로덕션 환경에서 사용하도록 작성된 것은 아니며 프로덕션 환경에서 테스트되지 않았습니다. Microsoft는 이러한 샘플에 대한 기술 지원을 제공하지 않습니다.

사전 요구 사항

이 샘플을 사용하려면 다음 요구 사항을 만족하는 컴퓨터가 두 대 이상 필요합니다.

  1. 웹 배포 도구의 원격 에이전트 서비스(배포 에이전스 서비스라고도 함)가 모든 컴퓨터에 설치되어 실행 중이어야 합니다. AppFabric에서는 웹 배포 도구가 기본적으로 설치되지만 웹 배포 도구의 원격 에이전트 서비스는 기본 설치에 포함되지 않습니다. 설치에 원격 에이전트 서비스를 추가하려면 다음을 수행하십시오.

    1. 프로그램 및 기능 제어판을 열고 웹 배포 도구를 선택한 다음 변경을 클릭합니다.

    2. 메시지가 표시되면 다음을 클릭하고 그다음 화면에서 변경을 클릭합니다.

    3. 기능 목록이 표시되면 원격 에이전트 서비스로컬 하드 드라이브에 설치됩니다로 표시되어 있는지 확인한 후 설치 마법사를 완료합니다.

    4. 마법사가 완료되면 명령 창에 net start msdepsvc를 입력하여 서비스를 시작합니다. Windows가 시작될 때마다 서비스를 자동으로 시작하려면 명령 창에 sc config msdepsvc start=auto를 입력합니다.

    웹 배포 도구 설치 및 구성과, AppFabric이 설치되지 않은 컴퓨터에 웹 배포 도구를 설치하는 방법에 대한 자세한 내용은 http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/을 참조하십시오.

  2. 동기화하는 동안 수정될 모든 컴퓨터는 방화벽을 통해 World Wide Web 서비스(HTTP)를 허용해야 합니다.

  3. 웹 팜의 모든 컴퓨터는 도메인의 일부여야 하고, 팜을 동기화하는 데 사용하는 계정은 모든 컴퓨터에 대한 관리자 권한을 가져야 합니다.

사용지 지정 공급자를 사용하는 경우 이를 원격 에이전트 서비스에서 인식하는지를 확인하는 것이 유용한 경우가 있습니다. 어떤 공급자가 사용 가능한지 확인하는 두 가지 방법이 있습니다.

  1. IIS 사용 - IIS 관리자에서 응용 프로그램을 마우스 오른쪽 단추를 클릭하고 배포를 선택한 다음 응용 프로그램 내보내기를 선택합니다. 응용 프로그램 내보내기 대화 상자에서 구성 요소 관리를 클릭합니다. 공급자 열에서 마지막 빈 줄을 클릭한 다음 아래쪽 화살표를 클릭합니다. 이렇게 하면 원격 에이전트 서비스에서 인식하는 모든 사용자 지정 공급자를 비롯하여 사용 가능한 공급자 목록이 표시됩니다.

  2. 명령줄 사용 – 웹 배포 도구 명령줄에서 명령 프롬프트에 MSDEPLOY.EXE를 입력합니다. 표시되는 정보의 일부가 사용 가능한 사용자 지정 공급자입니다. 웹 배포 도구를 설치하는 방법에 대한 자세한 내용은 웹 배포 도구 설치를 참조하십시오.

샘플 스크립트를 수정하여 도메인이 아닌 환경에서도 실행할 수 있습니다. 웹 배포 도구의 인증 옵션에 대한 자세한 내용은 https://technet.microsoft.com/en-us/library/dd569001(WS.10).aspx에서 authType 옵션을 참조하십시오.

샘플 위치 및 파일

이 샘플을 실행하는 데 필요한 모든 파일은 <samples>\Samples\Management\MultiMachineSyncAndDeploy\Code에 있으며 다음과 같습니다.

  • machines.txt

  • sync.cmd

  • syncOne.cmd

  • deployOne.cmd

이 샘플 설정 및 실행

작업 1: 패키지 배포

  1. <samples>\Samples\Management\SyncConfigFromModelMachine\Code에서 모든 파일을 관리자 컴퓨터로 복사합니다.

  2. 한 번의 일괄 처리로 수정하려는 팜의 나머지 모든 컴퓨터의 이름이 포함되도록 machines.txt 파일을 편집합니다. 컴퓨터 이름을 한 줄에 하나씩 배치해야 합니다.

  3. sync.cmd -fromPackage <package file path> 명령을 실행합니다.

  4. 로그 파일에서 오류를 검사합니다. 컴퓨터마다 자체 로그 파일인 sync-MACHINE.log가 있습니다. 여기서 MACHINE 부분은 해당 컴퓨터의 이름으로 대체됩니다.

작업 2 모델 컴퓨터와 동기화

  1. 팜의 모든 컴퓨터가 사전 요구 사항을 만족하면 컴퓨터 중 하나에 응용 프로그램 또는 사이트 구성 변경을 만들어 이 과정을 시작할 수 있습니다. 이 컴퓨터를 "모델 컴퓨터"라 하겠습니다.

  2. 구성이 완료되면 <samples>\Samples\Management\SyncConfigFromModelMachine\Code에서 모든 파일을 모델 컴퓨터로 복사합니다.

  3. 한 번의 일괄 처리로 수정하려는 팜의 나머지 모든 컴퓨터의 이름이 포함되도록 machines.txt 파일을 편집합니다. 컴퓨터 이름을 한 줄에 하나씩 배치해야 합니다.

  4. sync.cmd -fromLocalServer 명령을 실행하고 확인을 위해 Y를 입력합니다.

  5. 로그 파일에서 오류를 검사합니다. 컴퓨터마다 자체 로그 파일인 sync-MACHINE.log가 있습니다. 여기서 MACHINE 부분은 해당 컴퓨터의 이름으로 대체됩니다.

이 샘플 이해

sync.cmd 스크립트는 먼저 사용자가 제공하는 명령줄 인수의 유효성을 다음과 같이 검사합니다.

if "%1"=="" goto print_syntax
if "%1"=="-fromLocalServer" goto sync_server
if "%1"=="-fromPackage" goto sync_package
goto print_syntax

스크립트는 인수에 따라 machines.txt에 지정된 각 컴퓨터에 대해 한 번씩 deployOne.cmd 또는 syncOne.cmd 스크립트를 호출합니다. 이렇게 하기 위해 스크립트는 for 명령 및 start 명령을 사용하여 작업이 대상 시스템에서 동시에 수행되도록 이후 스크립트를 호출합니다.

for /f %%i in ('type machines.txt') do (start deployOne.cmd %%i %2 %3 )

또는

for /f %%i in ('type machines.txt') do ( start syncOne.cmd %%i %1) 

SyncOne.cmd/DeployOne.cmd는 msdeploy.exe라는 명령인 웹 배포 도구의 명령줄 인터페이스를 사용하는 스크립트로서, 원격 IIS 웹 서버를 로컬 컴퓨터의 전체 IIS 웹 서버나 패키지와 동기화합니다.

msdeploy.exe -verb:sync -source:package=%2 -dest:auto,computername=%1 %3

또는

msdeploy.exe -verb:sync -source:webServer -dest:webServer,computername=%1 %2

첫 번째 매개 변수는 sync.cmd에서 전달된 컴퓨터 이름이고 두 번째 매개 변수는 deployOne.cmd 스크립트에 필요한 패키지 파일 경로입니다. 마지막 매개 변수는 선택적이며, MSDeploy에 전달할 모든 매개 변수입니다. 이 스크립트는 별도의 수정 없이 추가 매개 변수를 웹 배포에 전달하려고 할 때 유용합니다. 이러한 추가 매개 변수의 예로 be -whatif가 있습니다.

sync.cmd -whatif

웹 배포를 -whatif 매개 변수와 함께 실행하면 명령을 실제로 실행하지 않고도 해당 명령을 실행하는 동안 발생할 수 있는 모든 오류가 확인됩니다. 프로덕션 환경에서 어떤 오류가 발생할 수 있는지 확인하려면 sync 명령을 -whatif와 함께 실행하는 것이 좋습니다. 이 사전 준비 단계를 수행하면 일관되지 않은 상태로 끝나는 것을 막을 수 있습니다.

이 샘플 제거

이 샘플을 제거하려면 관리자/모델 컴퓨터에서 모든 관련 파일을 삭제합니다.

다른 리소스

웹 배포 도구에 대한 자세한 내용은 http://learn.iis.net/page.aspx/346/web-deployment-tool/을 참조하십시오.

웹 배포 도구를 사용하여 IIS 7.0을 실행하는 두 서버를 동기화하는 방법에 대한 자세한 내용은 http://learn.iis.net/page.aspx/446/synchronize-iis-70/.(영문)을 참조하십시오.

웹 배포 도구의 설치 및 구성에 대한 자세한 내용은 http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/.(영문)을 참조하십시오.

  2011-12-05