2014-08-28 3 views
1

우리는 Azure에 배포하는 앱을 가지고 있습니다. 여기에는 웹 역할과 작업자 역할이 혼합 된 여러 클라우드 서비스가 배포됩니다. 일부 작업자 역할은 항목을 큐에서 선택하여 처리합니다. 또한 주기적으로 실행되는 일부 예약 된 작업 (Azure 테이블 스토리지 백업 등)이 있습니다.시작 역할없이 Azure에 배포

우리가 배포 할 때마다 포털에서 준비 환경을 관찰하고 수동으로 역할 시작을 중지해야합니다. 스테이징 및 프로덕션 슬롯에서 동시에 처리 정보 (예 : 동일한 대기열에서 가져 오기를 처리하지만 다르게 처리하거나 둘 다 동일한 예약 된 작업을 동시에 실행하는 등)를 원하지 않기 때문에이 작업을 수행해야합니다.

배치가있는 것으로 밝혀진 유일한 방법은 중지 된 상태의 스테이징이며 마지막으로 배치가 중단 된 상태입니다. 단점은 실행 중이 아닌 경우에도 해당 인스턴스에 비용이 부과된다는 것입니다.

그래서 배포를 시작하지 않고 Azure의 빈 스테이징 슬롯에 어떻게 배포합니까?

편집 : Visual Studio 또는 Visual Studio Online (예 : TFS)을 통해 빌드를 시작합니다. 일반적으로 powershell을 사용하지 마십시오.

답변

1

이 시작 가지고 배치를 작성하지만 할 수있는 방법이 없습니다. 대신 할 수있는 일은 OnStart 중에 코드가 읽을 csdef/cscfg에 설정이 있어야합니다.

예를 들어 "ShouldRun"이라는 설정을 False로 설정하면됩니다. OnStart에서 ShouldRun == True 인 경우 루프를 설정하고 루프를 종료합니다. 배포 한 후에는 포털로 이동하여 처리를 시작할 준비가 될 때마다 해당 설정을 True로 변경합니다. 루프가 종료되면 OnStart 메소드가 완료되어 Azure가 Run 메소드를 호출하고 인스턴스를 준비 상태로 만듭니다.

또한 설정이 False로 변경되었을 때 메시지 처리를 중지하는 Changed 이벤트 처리기를 추가 할 수 있습니다. 그러면 프로덕션 배포를 먼저 중단 한 다음 준비 배포를 시작할 수 있습니다.

+1

여기서 'StartDeployment' 매개 변수는 어떻습니까? http://msdn.microsoft.com/ en-us/library/azure/ee460813.aspx? 하지만 코드가 TFS를 통해 배포 될 때 어떻게 작동하는지 잘 모릅니다. –

+0

위대한 포인트 Gaurav, 나는 그 속성에 대해 잊어 버렸습니다. – kwill

0

나를 위해, 대기열과 구성을 분리해야합니다. 또 다른 옵션으로, PowerShell 스크립트를 작성하여 클라우드 서비스를 게시 한 후 중지 할 수 있습니다.

http://msdn.microsoft.com/en-us/library/dn495211.aspx

+0

Production에서 Staging을 완전히 분리하려면 스토리지 계정을 두 배로 늘리십시오. 또한 배포에 관계없이 데이터를 유지해야하는 경우에도 작동하지 않습니다. 즉, 항상 Production에있는 저장소가 항상 특정 저장소 계정을 가리 키도록해야합니다. – scottndecker

관련 문제