2014-09-24 2 views
1

나는/관리 자 경로가있는 Azure Worker Role을 가지고 있습니다. 이 경로는이 인스턴스에 대한 카운터 및 로그를 표시합니다. 이 역할을 두 개 이상의 인스턴스로 만들면 액세스하는 인스턴스를 제어 할 수 없습니다. 내 질문은 : 어떻게 공용 IP에서 역할의 특정 인스턴스에 안정적으로 액세스합니까?특정 Azure 인스턴스에 대한 HTTP 요청

나는 Instance Level Public Ip을 알고 있습니다. 그것은 약간의 추가 설정이 필요하기 때문에 원하는 것이 아닙니다.

원격 데스크톱 클라이언트 (mstsc.exe)의 기능과 비슷합니다. 개별 인스턴스마다 하나의 원격 데스크톱 연결을 열었습니다. 두 사람이 동일한 공용 IP와 내 직원 역할 포트에 액세스하지만 어떻게 든 mstsc.exe는 각 인스턴스에 대해 하나씩 두 개의 개별 화면을 관리한다는 것을 알았습니다. mstsc.exe는 TCP 수준에서 두 개의 서버 화면을 멀티플렉싱하고있는 것 같습니다. 이것은 멋지다. 나는 그다지 멀리 가고 싶지 않다.

원하는 모든 개별 인스턴스에 HTTP 요청을 발급하는 것입니다. 그것을 할 방법이 있습니까? 예 : X-Azure-Instance-Id = ???와 같은 HTTP 헤더.

+0

경로를 인스턴스 ID로 분리하고 다른 인스턴스에 대해 별도의 작업자 역할을 만듭니다. 인스턴스 당 1 개의 작업자 역할. –

+0

인스턴스가 실제로 수행하는 작업은 응용 프로그램을로드 밸런서 뒤에있는 다른 VM에 넣는 것입니다. 따라서 어느 인스턴스 요청이 –

+0

으로 라우팅되는지에 대한 제어권이 없습니다. 그래, 각 인스턴스가 별도의 VM이라는 것을 알고 있습니다. 경로 분할을 어떻게 수행합니까? – Gatis

답변

1

RDP의 방법은 각 인스턴스마다 RemoteForwarderAgent.exe 및 RemoteAccessAgent.exe를 사용하는 것입니다. mstsc.exe가 연결하는 데 사용하는 RDP 파일은 연결할 인스턴스를 식별하는 쿠키를 포함합니다. RDP 연결을 시작하면 연결은 임의의 인스턴스로 무작위로 이동하여 RemoteForwarderAgent.exe에 연결됩니다. RemoteForwarderAgent는 쿠키를 읽고 InternalAndpoint를 사용하여 RemoteAccessAgent를 통해 쿠키에 지정된 인스턴스에 내부적으로 연결합니다. 당신은 당신의 경로와 비슷한 것을 설정할 수 있습니다, 그러나 나는 당신이 실제로 필요로하는 것보다 더 많은 일이 있다고 생각합니다.

가장 쉬운 옵션은 InstanceInputEndpoint - http://msdn.microsoft.com/en-us/library/azure/hh180158.aspx을 사용하는 것입니다. 이렇게하면 고유 한 포트에서 각 인스턴스에 도달 할 수 있으므로 특정 인스턴스에서/janitor 라우트를 조회하려면 http://myservice.cloudapp.net/janitor:81 (여기서 "81"은 연결할 특정 인스턴스에 대한 InstanceInputEndpoint 포트 임)으로 요청할 것입니다. . 이것은 약간의 추가 설정 (.csdef에 여분의 라인이 있고, 클라이언트가 포트 번호를 결정할 수있는 로직)을 필요로하지만, 인스턴스 레벨 공용 IP 만큼은 아닙니다.

+0

'InstanceInputEndpoint' 접근법의 문제점은 사용 가능한 포트 번호가 모두 매우 높고 (10000+라고 생각합니다) 방화벽, 프록시 등에서 자주 금지됩니다. 많은 클라이언트가 연결 문제가있어서 아키텍처를 변경했습니다. – enzi