2012-01-12 1 views
3

간략히 설명하면 배치의 다른 역할을 재부팅하거나 패치를 위해 오프라인으로 전환 할 때 코드에서 처리 할 수있는 RoleEnvironment 이벤트가 있습니까?Azure - 역할을 재부팅하거나 패치를 취소 할 때 Azure - RoleEnvironment 이벤트가 실행되지 않음

웹 프런트 엔드 용 웹 역할과 응용 프로그램 계층 (비즈니스 논리, 데이터 액세스 등)으로 WCF 서비스를 실행하는 웹 역할을 모두 갖춘 프로덕션 환경의 응용 프로그램이 있습니다. 웹 계층은 내부 끝점을 통해 WCF 계층과 통신합니다.이 시점에서 서비스를 노출하고 싶지 않기 때문입니다. 따라서로드 밸런서를 사용하여 단일 URL을 통해 내 서비스 계층을 호출하는 것은 불가능합니다.

그래서 WCF 웹 역할에 수동으로 균형 요청을로드해야합니다. 이로 인해 과거 패브릭 컨트롤러가 패칭을 위해 기계를 재활용 할 때 문제가 발생했습니다.

내가 통신하고있는 백엔드 웹 역할의 목록을 조정하는 RoleEnvironment.Changing 및 RoleEnvironment.Changed 이벤트를 처리하고 있습니다. 구성 변경시 인스턴스의 수를 늘리거나 줄이기 위해 테스트 할 때 잘 작동합니다. 내 배포. 그러나 포털을 통해 역할을 다시 부팅하면 RoleEnvironment 이벤트가 발생하지 않습니다.

덕분에, 롭

답변

5

RoleEnvironment.Changing이 실행됩니다 "before a change to the service configuration" (필자 강조). 이 경우 구성 변경이 발생하고 있습니다. 서비스가 여전히 이고이 정확히 같은 수의 인스턴스를 갖도록 구성되어 있습니다. AFAIK는 배포가 오프라인으로 전환 된 시점을 알 수있는 방법이 없으며 예고가 일 수없는 경우 (예 : 하드웨어 오류) 수 있습니다. 따라서 통신 실패를 코드 작성하고 오류를 가로 채고 다른 역할 인스턴스를 시도해야합니다.

+0

올리버 씨 감사합니다. 지금까지의 경험에 어울립니다. 통신 장애를 처리하는 것이 훨씬 더 어렵습니다 .-) –

0

는 당신이 쉽게 다른 역할에서 RoleEnvironment 변화를 가로 챌 수 있다고 생각하지 않습니다.

RoleEnvironment 변경 사항이 발생하는 역할에 갇히고 일부 영구 저장 장치에 메시지/레코드를 보내고 웹 역할이 해당 일정을 정기적으로 또는 매번 확인하도록 할 것을 제안합니다. WCF 역할에 대해 의사 소통 할 때 당신이 당신의 자신의 내부 부하 분산을하고 있다면 당신은 당신의 WCF 노동자

+0

감사합니다. Igorek에게 감사 드리며, 나는 이벤트를 유발 한 것에 대해 혼란스러워합니다. Oliver Bock이 지적한 바와 같이, 이는 우리가 통보받은 구성 변경 일 뿐이며, 영향을 받는지 여부에 관계없이 모든 역할에 구성 변경 알림이 수신됩니다. –

0

을 관리 할 수 ​​있도록

기본적으로, 당신은 당신은 푸른 저장 큐를 사용하여 인스턴스의 등록/눈물 다운을위한 메커니즘이 필요 역할이 중단 될 때 메시지를 게시하고 해당 대기열에서 수신 대기하고 그에 따라 작업자 역할을 수행합니다.

관련 문제