2012-02-24 2 views
1

2 개의 작업자 역할 인스턴스가있는 호스트 된 서비스 배포가 이미 있으며 동일한 3 개의 작업자 역할 인스턴스를 동일한 호스트 서비스에 추가하려는 동시에 기존의 2 개의 작업자 역할 인스턴스를 다시 시작하지 않으려합니다.Windows Azure는 다른 인스턴스를 다시 시작하지 않고 호스팅 된 서비스에 추가 인스턴스를 추가 할 수 있습니까?

다른 호스팅 서비스를 만들고 새로운 3 개의 인스턴스를 추가 할 수 있지만, Azure는 계정 당 6 개의 호스팅 서비스 만 지원한다고 들었습니다. 그게 사실이야?

내 응용 프로그램에서 클라우드 드라이브 기능을 사용하므로 역할 당 인스턴스를 하나만 만들 것입니다.

답변

0

여기에 귀하의 질문을 완전히 이해하고 있는지 확실하지 않지만 여기에 몇 가지 아이디어가 있습니다. 1) 이미 언급했듯이, 수행 할 수있는 기존 작업자 역할의 인스턴스를 추가하려면 (자바로 믿어도) 기존 인스턴스를 다시 시작하지 않아야합니다. 2) 새 역할 (새 정의)을 만들려면이 작업을 수행 할 수 있으며 제안 된대로 6 가지 서비스 중 '제한'을 초과 할 수 있습니다. 모든 작업을 다시 시작하지 않고 새 역할을 추가하려는 경우 - 자세한 내용은 http://blogs.msdn.com/b/windowsazure/archive/2011/10/19/announcing-improved-in-place-updates.aspx을 참조하십시오. 3) '클라우드 드라이브'를 사용하기 때문에 각 역할에 대한 단일 인스턴스를 실행하려는 욕구가 있습니다. 여기에서이 문제를 잘 모르겠습니다. 동일한 드라이브를 마운트하는 경우 하나의 역할 인스턴스 또는 여러 역할에서 마운트되거나 다른 역할로 마운트되는 경우 중요하지 않습니다. 어떤 경우 든 쓰기 전용으로 하나의 인스턴스에서 마운트하는 것이 가능하지만 그것을 읽기 위해 여러 인스턴스에서 마운트하십시오.

도움이되기를 바랍니다. 귀하의 문제/질문을 오해 한 경우 알려 주시면 답변을 찾을 수 있는지 알아 보겠습니다.

감사와 행운을 빕니다!

+0

감사합니다. Mike, 제 목적은 기존의 호스팅 서비스에 새로운 역할을 추가하는 것입니다. 귀하의 답변은 거의 내가 원하는 것입니다,하지만 만약 내가 호스팅 서비스에 역할을 추가하려면, 전체 호스트 서비스를 업그레이 드하는 동안 업그레이 드하는 동안 기존의 모든 역할을 다시 시작해야합니다 발견했다. 일부 문서에서는 전체 업그레이드를 수행 할 때 역할 당 최소 2 개의 인스턴스가 실행되어야한다고 언급했음을 기억합니다. 그리고, 내 응용 프로그램은 클라우드 드라이브에 데이터를 쓸 것이므로 역할 당 인스턴스가 하나뿐입니다. – Xilang

+0

당신이 맞습니다. - 역할 당 2 개 이상의 인스턴스가 있다면, 업그레이드 도메인은 완전한 종료없이 역할을 업그레이드 할 수 있습니다. 예를 들어, 각 역할에 대해 두 개의 인스턴스가있는 경우 인스턴스 1 개가 업그레이드되어 다른 인스턴스는 계속 실행됩니다. 완료되면 새 인스턴스가 실행되는 동안 두 번째 인스턴스가 업그레이드됩니다. 그러나 단일 인스턴스로는이 작업을 수행 할 수 없습니다. 또한 각 역할의 인스턴스를 1 개만 실행하면 SLA가없는 것을 기억하십시오. –

+0

감사합니다. Mike, 클라우드 드라이브를 사용할 경우 대답은 "아니오"입니다. 그러나 내 응용 프로그램은 데스크톱 응용 프로그램과 비슷하지만 파일에 데이터를 써야합니다. Seure Azure는 그런 경우를 아주 잘지지하지 않습니다. – Xilang

0

프로덕션 슬롯에 새 역할을 추가하는 대신 새 역할 세트를 준비 슬롯에 배포하고 테스트하고 VIP 스왑을 수행하십시오.

0

Windows Azure를 사용하면 다른 인스턴스를 다시 부팅하지 않고도 즉시 인스턴스를 추가 할 수 있습니다. RoleEnvironment_Changing 이벤트를 처리하는 동안 Azure가이를 알릴 필요가 있습니다.

기본적으로 Windows Azure는 호스팅 서비스의 한도를 계정 당 6 회로 제한합니다. 나는 당신이 지원을 요청하고 신용 조사를 한 후에 제한이 해제되도록함으로써 그 한도를 늘릴 수 있다고 믿습니다 ... 그러나, 수평 확장 할 적절한 패턴은 추가 서비스를 추가하는 것이 아니라 추가 인스턴스를 추가하는 것입니다.

public override bool OnStart() 
{ 
    RoleEnvironment.Changing += RoleEnvironmentChanging; 
return base.OnStart(); 
} 


private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) 
{ 
    // If a configuration setting is changing 
    if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)) 
    { 
     // Set e.Cancel to true to restart this role instance 
     e.Cancel = false; 
    } 
} 

우연히 당신이 당신의 서비스에 인스턴스를 추가하거나 제거하여 설정 자동 스케일링을 찾고 있다면, 다음은

는 새로 추가 한 후 인스턴스를 다시 부팅되지 않도록 만드는 예입니다 수요가 증가하거나 감소하면 AzureWatch라고하는 제 3 자 서비스를 볼 수 있습니다. http://www.paraleap.com

+0

감사합니다. 두 가지 우려 사항 : 1. 인스턴스의 의미는 무엇입니까? 작업자 역할 또는 작업자 역할 아래의 인스턴스? 제 경우에는 새로 추가 된 인스턴스가 기존 인스턴스와 다르기 때문에 새 작업자 역할을 추가하고 싶습니다. 데이터를 공유하지 않기 때문입니다. 2. 내 프로젝트가 Java 프로젝트이므로 C# 코드를 프로젝트에 추가 할 수 없습니다. – Xilang

1

@Igor과 @Mike는 이미 여러분에게 훌륭한 답을주었습니다. Azure Drives에 대한 귀하의 문제를 다루기 위해 약간의 세부 사항을 추가하겠습니다.

인스턴스 당 쓰기 가능한 드라이브를 하나만 가질 수 있도록 역할 별 단일 인스턴스 구성을 설계하는 것처럼 보입니다. 이것이 사실이라면 실제로 확장되지 않습니다. 스케일 아웃하려는 때마다 프로젝트를 수정하고 새 패키지를 배포해야합니다. 대안으로 인스턴스 당 고유 드라이브를 생성하십시오. 같은 역할.인스턴스 ID (간단한 예 : /Drives/Instance0.vhd)를 기반으로하는 명명 체계를 제안하십시오. 인스턴스가 시작될 때 인스턴스에서 ID를 수집하고 드라이브를 만들거나 기존 드라이브를 마운트합니다. ID는 RoleEnvironment.CurrentRoleInstance.Id을 통해 확인할 수 있습니다.

관련 문제