Azure Cloud Services(클래식) 정의 LoadBalancerProbe 스키마
Important
이제 Cloud Services(클래식)는 2024년 9월 1일부터 모든 고객을 대상으로 더 이상 사용되지 않습니다. 기존 실행 중인 배포는 Microsoft에서 중지 및 종료되며, 데이터는 2024년 10월부터 영구적으로 손실됩니다. 새 배포에서는 새로운 Azure Resource Manager 기반 배포 모델인 Azure Cloud Services(추가 지원)를 사용해야 합니다.
부하 분산 장치 프로브는 UDP 엔드포인트와 역할 인스턴스의 엔드포인트에서 고객이 정의한 상태 프로브입니다. LoadBalancerProbe
는 독립적인 요소가 아니며 서비스 정의 파일의 웹 역할이나 작업자 역할과 결합되어 있습니다. 여러 개의 역할이 LoadBalancerProbe
를 사용할 수 있습니다.
서비스 정의 파일의 기본 확장명은 .csdef입니다.
부하 분산 장치 프로브 함수
Azure Load Balancer는 들어오는 트래픽을 역할 인스턴스로 라우팅합니다. 부하 분산 장치는 해당 인스턴스의 상태를 판단하기 위해 각 인스턴스를 정기적으로 검색함으로써 트래픽을 수신할 수 있는 인스턴스를 결정합니다. 부하 분산 장치는 분당 여러 번 모든 인스턴스를 검색합니다. 부하 분산 장치에 인스턴스 상태를 제공하기 위한 옵션에는 기본 부하 분산 장치 프로브와 .csdef 파일에서 LoadBalancerProbe를 정의하여 구현하는 사용자 지정 부하 분산 장치 프로브, 이렇게 두 가지가 있습니다.
기본 부하 분산 장치 프로브는 수신 대기하여 인스턴스가 Ready 상태인 경우(즉, 인스턴스가 Busy, Recycling, Stopping 등의 상태가 아닌 경우)에만 HTTP 200 확인 응답으로 응답하는 가상 머신 내의 게스트 에이전트를 활용합니다. 게스트 에이전트가 HTTP 200 OK로 응답하지 않으면 Azure Load Balancer에서 인스턴스를 응답하지 않는 것으로 표시하고 해당 인스턴스로 트래픽 전송을 중지합니다. Azure Load Balancer는 인스턴스를 계속 ping하고, 게스트 에이전트가 HTTP 200에 응답하는 경우 Azure Load Balancer가 해당 인스턴스로 다시 트래픽을 보냅니다. 웹 역할을 사용하는 경우 웹 사이트 코드는 일반적으로 w3wp.exe에서 실행되는데, Azure 패브릭과 게스트 에이전트는 이를 모니터링하지 않습니다. w3wp.exe의 오류(예: HTTP 500 응답)는 게스트 에이전트에 보고되지 않으며, 부하 분산 장치는 해당 인스턴스를 순환에서 제거할 방법을 모릅니다.
사용자 지정 부하 분산 장치 프로브는 기본 게스트 에이전트 프로브를 재정의하고, 사용자가 역할 인스턴스의 상태를 판단할 수 있도록 고유의 사용자 지정 논리를 만들 수 있습니다. 부하 분산 장치는 정기적으로 엔드포인트를 검색합니다(기본적으로 15초마다). 시간 제한 기간(기본값 31초) 내에 TCP ACK 또는 HTTP 200으로 응답하는 인스턴스는 순환 중인 것으로 간주됩니다. 이 프로세스는 인스턴스가 90% CPU 이상일 경우 200이 아닌 상태를 반환하는 것과 같이 부하 분산 장치 회전에서 인스턴스를 제거하는 사용자 고유의 논리를 구현하는 데 유용할 수 있습니다. w3wp.exe를 사용하는 웹 역할의 경우 이 설정은 웹 사이트 코드에 오류가 있으면 부하 분산 장치 프로브에 200이 아닌 상태가 반환되므로 웹 사이트의 자동 모니터링도 사용할 수 있습니다. .csdef 파일에서 LoadBalancerProbe를 정의하지 않으면 기본 부하 분산 장치 동작(이전에 설명)이 사용됩니다.
사용자 지정 부하 분산 장치 프로브를 사용하는 경우 사용자의 논리가 RoleEnvironment.OnStop 메서드를 이용하도록 해야 합니다. 기본 부하 분산 장치 프로브를 사용하는 경우 OnStop이 호출되기 전에 인스턴스가 순환에서 제거되지만 사용자 지정 부하 분산 장치 프로브는 OnStop 이벤트 중에 계속해서 200 확인을 반환할 수 있습니다. 캐시를 정리하거나 서비스를 중지하거나 서비스의 런타임 동작에 영향을 줄 수 있는 변경을 하기 위해 OnStop 이벤트를 사용하는 경우 사용자 지정 부하 분산 장치 프로브 논리가 해당 인스턴스를 회전에서 제거하도록 해야 합니다.
부하 분산 장치 프로브에 대한 기본 서비스 정의 스키마
부하 분산 장치 프로브를 포함하는 서비스 정의 파일의 기본 형식은 다음과 같습니다.
<ServiceDefinition …>
<LoadBalancerProbes>
<LoadBalancerProbe name="<load-balancer-probe-name>" protocol="[http|tcp]" path="<uri-for-checking-health-status-of-vm>" port="<port-number>" intervalInSeconds="<interval-in-seconds>" timeoutInSeconds="<timeout-in-seconds>"/>
</LoadBalancerProbes>
</ServiceDefinition>
스키마 요소
서비스 정의 파일의 LoadBalancerProbes
요소에는 다음과 같은 요소가 포함됩니다.
LoadBalancerProbes 요소
LoadBalancerProbes
요소는 부하 분산 장치 프로브의 컬렉션을 설명합니다. 이 요소는 LoadBalancerProbe 요소의 부모 요소입니다.
LoadBalancerProbe 요소
LoadBalancerProbe
요소는 모델에 대한 상태 프로브를 정의합니다. 여러 부하 분산 장치 프로브를 정의할 수 있습니다.
다음 표에서는 LoadBalancerProbe
요소의 특성을 설명합니다.
Attribute | Type | 설명 |
---|---|---|
name |
string |
필수입니다. 부하 분산 장치 프로브의 이름입니다. 이름은 고유해야 합니다. |
protocol |
string |
필수입니다. 끝점의 프로토콜을 지정합니다. 가능한 값은 http 또는 tcp 입니다. tcp 가 지정된 경우 프로브가 성공하려면 수신된 ACK가 필요합니다. http 가 지정된 경우 프로브가 성공하려면 지정한 URI로부터의 200 OK 응답이 필요합니다. |
path |
string |
VM에서 상태를 요청하는 데 사용되는 URI입니다. protocol 이 http 로 설정된 경우 path 가 필요합니다. 그렇지 않으면 허용되지 않습니다.기본값이 없습니다. |
port |
integer |
선택 사항. 프로브 통신을 위한 포트입니다. 프로브에 동일한 포트가 사용되므로 이 특성은 모든 엔드포인트에 대해 선택 사항입니다. 검색을 위해 다른 포트를 구성할 수도 있습니다. 가능한 값 범위는 1에서 65535 사이입니다. 엔드포인트가 설정한 기본값입니다. |
intervalInSeconds |
integer |
선택 사항. 상태에 대한 엔드포인트를 검색하는 빈도에 대한 간격(초)입니다. 일반적으로 간격은 인스턴스가 순환에서 제거되기 전에 전체 두 프로브를 허용하는 할당된 시간 제한 기간(초)의 절반보다 약간 더 짧습니다. 기본값은 15입니다. 최소값은 5입니다. |
timeoutInSeconds |
integer |
선택 사항. 시간 제한 기간(초)은 응답이 없으면 엔드포인트에 향후 트래픽을 전달하지 않는 프로브에 적용됩니다. 이 값을 사용하면 엔드포인트를 Azure에서 사용되는 일반적인 시간에 비해 더 빠르거나 더 느리게 순환에서 제거할 수 있습니다. 기본값은 31입니다. 최솟값은 11입니다. |