Load Balancer 상태 프로브

Azure Load Balancer에서 부하 분산 규칙을 사용하는 경우 Load Balancer에서 백 엔드 엔드포인트 상태를 검색할 수 있도록 상태 프로브를 지정해야 합니다. 상태 프로브 및 프로브 응답의 구성에 따라 새 흐름을 수신할 백 엔드 풀 인스턴스가 결정됩니다. 상태 프로브를 사용하여 백 엔드 엔드포인트에서 애플리케이션 오류를 검색할 수 있습니다. 또한 상태 프로브에 대한 사용자 지정 응답을 생성하고 흐름 제어를 위해 상태 프로브를 사용하여 부하 또는 계획된 가동 중지 시간을 관리할 수 있습니다. 상태 프로브가 실패하면 Load Balancer에서 각 비정상 인스턴스에 대한 새 연결 보내기를 중지합니다. 아웃바운드 연결에는 영향을 주지 않으며 인바운드 연결만 영향을 받습니다.

상태 프로브는 여러 프로토콜을 지원합니다. 특정 상태 프로브 프로토콜의 가용성은 Load Balancer SKU에 따라 다릅니다. 또한 서비스 동작은 다음 표에 표시된 대로 Load Balancer SKU에 따라 다릅니다.

표준 SKU 기본 SKU
프로브 유형 TCP, HTTP, HTTPS TCP, HTTP
프로브 다운 동작 모든 프로브가 다운되고, 모든 TCP 흐름이 계속됩니다. 모든 프로브가 다운되고, 모든 TCP 흐름이 만료됩니다.

중요

Load Balancer 상태 프로브는 168.63.129.16 IP 주소에서 시작되며, 프로브에서 인스턴스를 표시하기 위해 차단되지 않아야 합니다. 자세한 내용은 원본 IP 주소 프로브를 검토하세요. 백 엔드 인스턴스 내에서 이 프로브 트래픽을 보려면 이 FAQ를 검토하세요.

중요

구성된 시간 제한 임계값에 관계없이 HTTP(S) Load Balancer 상태 프로브는 서버가 HTTP 200 OK가 아닌 상태 코드를 반환하거나 TCP 재설정을 통해 연결을 종료하는 경우 인스턴스를 자동으로 프로브 다운합니다.

프로브 구성

상태 프로브 구성은 다음 요소로 구성됩니다.

  • 개별 프로브 사이의 간격 기간
  • 프로브의 프로토콜
  • 프로브의 포트
  • HTTP(S) 프로브를 사용할 때 HTTP GET에 사용할 HTTP 경로

참고

Azure PowerShell, Azure CLI, 템플릿 또는 API를 사용하는 경우 프로브 정의가 필수가 아니거나 확인되지 않습니다. 프로브 유효성 검사 테스트는 Azure Portal을 사용하는 경우에만 수행됩니다.

애플리케이션 신호 이해, 신호 검색 및 플랫폼 반응 이해

간격 값은 상태 프로브가 백 엔드 풀 인스턴스의 응답을 프로브하는 빈도를 결정합니다. 상태 프로브가 실패하면 즉시 백 엔드 풀 인스턴스를 비정상 상태로 표시합니다. 마찬가지로 다음 정상 프로브가 업되면 상태 프로브는 백 엔드 풀 인스턴스를 다시 정상 상태로 즉시 표시합니다.

상태 프로브 간격이 5초로 설정된 예제를 사용하여 동작을 추가적으로 설명할 수 있습니다. 프로브가 전송되는 시간은 애플리케이션 상태가 변경될 수 있는 시간과 동기화되지 않으므로 상태 프로브가 애플리케이션 상태를 반영하는 데 걸리는 총 시간은 다음 두 시나리오 중 하나에 속할 수 있습니다.

  1. 애플리케이션이 다음 프로브가 도착하기 직전에 시간 제한 프로브 응답을 생성하기 시작하면 이러한 이벤트의 검색에 5초가 더해지며 프로브가 도착할 때 시간 제한을 신호하기 시작하는 애플리케이션의 기간이 더해집니다. 이 검색은 5초가 약간 넘게 소요된다고 가정할 수 있습니다.
  2. 애플리케이션이 다음 프로브가 도착한 직후에 시간 제한 프로브 응답을 생성하기 시작하면 프로브가 도착(및 시간 제한)한 후 5초를 더한 시간이 될 때까지 이러한 이벤트 검색은 시작하지 않습니다. 이 검색은 10초 이내에 완료된다고 가정할 수 있습니다.

이 예에서는 검색이 발생하면 플랫폼이 이 변경에 대응하는 데 약간의 시간이 소요됩니다. 즉, 다음에 따라 좌우됩니다.

  1. 애플리케이션이 상태 변경을 시작하는 경우
  2. 이 변경이 검색되는 경우(다음 상태 프로브가 전송될 때)
  3. 플랫폼 간에 검색이 전달된 경우

시간 제한 프로브 응답에 대한 반응에서 애플리케이션의 신호 변경에 반응하는 데 최소 5초에서 최대 10초를 약간 넘는 시간이 소요된다고 가정할 수 있습니다. 이 예는 발생하는 상황을 설명하기 위해 제공되지만, 이 예에 설명된 위의 대략적인 지침 이상으로 정확한 기간을 예측할 수는 없습니다.

참고

상태 프로브는 백 엔드 풀에서 실행 중인 모든 인스턴스를 프로브합니다. 인스턴스가 중지되면 다시 시작될 때까지 프로브되지 않습니다.

프로브 유형

상태 프로브에서 사용하는 프로토콜을 다음 중 하나로 구성할 수 있습니다.

사용 가능한 프로토콜은 사용되는 Load Balancer SKU에 따라 달라집니다.

TCP HTTP HTTPS
표준 SKU
기본 SKU

TCP 프로브

TCP 프로브는 정의된 포트를 통해 3방향 개방형 TCP 핸드셰이크를 수행하여 연결을 시작합니다. TCP 프로브는 4방향 폐쇄형 TCP 핸드셰이크를 사용하여 연결을 종료합니다.

최소 프로브 간격은 5초이고, 비정상 응답의 최소 수는 2입니다. 모든 간격의 총 지속 시간은 120초를 초과할 수 없습니다.

TCP 프로브가 실패하는 경우는 다음과 같습니다.

  • 인스턴스의 TCP 수신기가 제한 시간 동안 전혀 응답하지 않습니다. 프로브는 프로브 다운을 표시하기 전에 응답하지 않도록 구성된 시간이 초과된 프로브 요청의 수에 따라 표시됩니다.
  • 프로브가 인스턴스에서 TCP 재설정을 받습니다.

다음은 Resource Manager 템플릿에서 이러한 종류의 프로브 구성을 표현할 수 있는 방법을 보여 줍니다.

    {
      "name": "tcp",
      "properties": {
        "protocol": "Tcp",
        "port": 1234,
        "intervalInSeconds": 5,
        "numberOfProbes": 1
      },

HTTP/HTTPS 프로브

참고

HTTPS 프로브는 표준 Load Balancer에만 제공됩니다.

HTTP 및 HTTPS 프로브는 TCP 프로브에서 구축되고, 지정된 경로가 포함된 HTTP GET을 실행합니다. 두 프로브 모두 HTTP GET에 대한 상대 경로를 지원합니다. HTTPS 프로브는 TLS(전송 계층 보안, SSL이라고도 함)가 추가되었다는 점을 제외하면 HTTP 프로브와 동일합니다. 인스턴스에서 제한 시간 내에 200 HTTP 상태로 응답하면 상태 프로브가 표시됩니다. 이 상태 프로브는 기본적으로 구성된 상태 프로브 포트를 15초마다 확인하려고 합니다. 최소 프로브 간격은 5초입니다. 모든 간격의 총 지속 시간은 120초를 초과할 수 없습니다.

HTTP/HTTPS 프로브는 프로브 포트가 서비스 자체의 수신기이기도 한 경우 부하 분산 장치 순환에서 인스턴스를 제거하는 고유한 논리를 구현하는 데도 유용할 수 있습니다. 예를 들어 CPU 백분율이 90%를 초과하고 200 이외의 HTTP 상태를 반환하는 경우 인스턴스를 제거하도록 결정할 수 있습니다.

참고

HTTPS 프로브를 사용하려면 전체 체인에서 최소 서명 해시가 SHA256인 인증서 기반 인증서를 사용해야 합니다.

Cloud Services를 사용하고 w3wp.exe를 사용하는 웹 역할이 있는 경우 웹 사이트의 자동 모니터링도 수행할 수 있습니다. 웹 사이트 코드에서 실패하면 부하 분산 장치 프로브로 200이 아닌 상태를 반환합니다.

HTTP/HTTPS 프로브가 실패하는 경우는 다음과 같습니다.

  • 프로브 엔드포인트에서 200 이외의 HTTP 응답 코드(예: 403, 404 또는 500)를 반환합니다. 이 경우 상태 프로브가 즉시 가동 중단 상태로 표시됩니다.
  • 프로브 엔드포인트는 최소 프로브 간격 및 30초 제한 시간 동안 응답하지 않습니다. 프로브가 실행 중이 아니라고 표시되고, 모든 시간 제한 간격의 합계에 도달하기 전에 다중 프로브 요청이 응답하지 않을 수 있습니다.
  • 프로브 엔드포인트에서 TCP 재설정을 통해 연결을 닫습니다.

다음은 Resource Manager 템플릿에서 이러한 종류의 프로브 구성을 표현할 수 있는 방법을 보여 줍니다.

    {
      "name": "http",
      "properties": {
        "protocol": "Http",
        "port": 80,
        "requestPath": "/",
        "intervalInSeconds": 5,
        "numberOfProbes": 1
      },
    {
      "name": "https",
      "properties": {
        "protocol": "Https",
        "port": 443,
        "requestPath": "/",
        "intervalInSeconds": 5,
        "numberOfProbes": 1
      },

프로브 업 동작

TCP, HTTP 및 HTTPS 상태 프로브는 정상으로 간주되며 다음과 같은 경우 백 엔드 엔드포인트를 정상으로 표시합니다.

  • VM이 부팅된 후에는 상태 프로브가 성공 상태로 표시됩니다.

정상 상태를 달성한 모든 백 엔드 엔드포인트는 새 흐름을 받을 수 있습니다.

참고

프로브의 상태가 변동되는 경우 부하 분산 디바이스는 백 엔드 엔드포인트를 다시 정상 상태로 전환하기 전에 좀 더 오래 기다립니다. 이러한 추가 대기 시간은 의도적인 정책으로, 사용자 및 인프라를 보호합니다.

프로브 다운 동작

TCP 연결

새 TCP 연결은 남은 정상 백 엔드 엔드포인트에 성공합니다.

백 엔드 엔드포인트의 상태 프로브가 실패하면 이 백 엔드 엔드포인트에 대해 설정된 TCP 연결이 계속됩니다.

백 엔드 풀의 모든 인스턴스에 대한 모든 프로브가 실패하면 새 흐름을 백 엔드 풀로 보내지 않습니다. 표준 Load Balancer는 설정된 TCP 흐름이 계속되도록 허용합니다. 기본 Load Balancer는 백 엔드 풀에 대한 기존의 모든 TCP 흐름을 종료합니다.

Load Balancer는 통과 서비스(TCP 연결을 종료하지 않음)이며, 클라이언트와 VM의 게스트 OS 및 애플리케이션 사이에 항상 흐름이 존재합니다. 흐름을 받고 SYN-ACK로 응답할 정상적인 백 엔드 엔드포인트가 없으므로 모든 프로브가 가동 중단된 풀로 인해 프런트 엔드에서 TCP 연결 열기 시도(SYN)에 응답하지 않게 됩니다.

UDP 데이터그램

UDP 데이터그램은 정상 백 엔드 엔드포인트로 전달됩니다.

UDP는 비연결형이며 UDP에 대해 추적된 흐름 상태가 없습니다. 백 엔드 엔드포인트의 상태 프로브가 실패하면 기존 UDP 흐름이 백 엔드 풀에서 정상적인 다른 인스턴스로 이동할 수 있습니다.

백 엔드 풀의 모든 인스턴스에 대한 모든 프로브가 실패하면 기본 및 표준 Load Balancer에 대한 기존 UDP 흐름이 종료됩니다.

원본 IP 주소 프로브

Load Balancer는 내부 상태 모델에 분산 프로빙 서비스를 사용합니다. 프로빙 서비스는 VM이 있는 각 호스트에 상주하며, 필요할 때 고객 구성별로 상태 프로브를 생성하도록 프로그래밍할 수 있습니다. 상태 프로브 트래픽은 상태 프로브를 생성하는 프로빙 서비스와 고객 VM 간을 직접 이동합니다. 모든 Load Balancer 상태 프로브는 해당 원본으로 168.63.129.16 IP 주소에서 시작됩니다. RFC1918 공간이 아닌 VNet 내의 IP 주소 공간을 사용할 수 있습니다. 전역적으로 예약된 Microsoft 소유의 IP 주소를 사용하면 IP 주소가 VNet 내에서 사용하는 IP 주소 공간과 충돌할 가능성이 줄어듭니다. 이 IP 주소는 모든 지역에서 동일하고 변경되지 않으며, 내부 Azure 플랫폼 구성 요소만 이 IP 주소에서 패킷을 소싱할 수 있으므로 보안 위험을 초래하지 않습니다.

AzureLoadBalancer 서비스 태그는 네트워크 보안 그룹에서 이 원본 IP 주소를 식별하고 기본적으로 상태 프로브 트래픽을 허용합니다.

Load Balancer 상태 프로브 외에도 이 IP 주소는 다음 작업에서 사용합니다.

  • VM 에이전트에서 플랫폼과 통신하도록 설정하여 "준비" 상태에 있음을 알립니다.
  • DNS 가상 서버와 통신하도록 설정하여 사용자 지정 DNS 서버를 정의하지 않은 고객에게 필터링된 이름 확인을 제공합니다. 이 필터링을 통해 고객은 배포의 호스트 이름만 확인할 수 있습니다.
  • VM이 Azure의 DHCP 서비스에서 동적 IP 주소를 가져올 수 있도록 합니다.

디자인 지침

상태 프로브는 서비스를 탄력적으로 유지하고 확장할 수 있도록 하는 데 사용됩니다. 구성 또는 디자인 패턴이 잘못되면 서비스의 가용성 및 확장성에 영향을 줄 수 있습니다. 이 전체 문서를 검토하고, 이 프로브 응답이 가동 중지 또는 가동 상태로 표시될 경우 시나리오에 미치는 영향과 애플리케이션 시나리오의 가용성에 어떤 영향을 미칠지 고려하세요.

애플리케이션에 대한 상태 모델을 디자인할 경우, 해당 인스턴스의 상태 사용자가 제공하는 애플리케이션 서비스를 반영하는 백 엔드 엔드포인트에서 포트를 프로브해야 합니다. 애플리케이션 포트와 프로브 포트는 동일하지 않아도 됩니다. 일부 시나리오에서는 프로브 포트가 애플리케이션이 서비스를 제공하는 포트와 달라야 할 수 있습니다.

때때로 애플리케이션이 애플리케이션 상태를 검색할 뿐만 아니라 인스턴스가 새 흐름을 수신할지 여부를 Load Balancer에 직접 신호로 알리는 상태 프로브 응답을 생성하는 것이 유용할 수 있습니다. 상태 프로브가 실패하도록 하여 애플리케이션이 새 흐름에 대한 역압 및 스로틀 전달을 생성할 수 있도록 프로브 응답을 조작하거나 애플리케이션의 유지 관리를 준비하고 시나리오 드레이닝을 시작할 수 있습니다. 표준 Load Balancer를 사용하는 경우 프로브의 작동 중지 신호가 발생하면 유휴 시간 종료 또는 연결 종료가 나타날 때까지 항상 TCP 흐름이 계속됩니다.

UDP 부하 분산을 위해서는 백 엔드 엔드포인트에서 사용자 지정 상태 프로브 신호를 생성하고, 해당 수신기를 대상으로 하는 TCP, HTTP 또는 HTTPS 상태 프로브를 사용하여 UDP 애플리케이션의 상태를 반영해야 합니다.

표준 Load Balancer와 함께 HA 포트 부하 분산 규칙을 사용하면, 모든 포트의 부하가 분산되고 단일 상태 프로브 응답에는 전체 인스턴스의 상태가 반영되어야 합니다.

이 구성을 사용할 경우 시나리오에서 연속 오류로 이어질 수 있으므로 VNet의 다른 인스턴스로 상태 프로브를 받는 인스턴스를 통해 상태 프로브를 변환하거나 프록시하지 않아야 합니다. 타사 어플라이언스 세트가 Load Balancer 리소스의 백 엔드 풀에 배포되어 어플라이언스에 대한 확장 및 중복성을 제공하고, 타사 어플라이언스가 어플라이언스 뒤에 있는 다른 가상 머신으로 프록시 또는 변환하는 포트를 프로브하도록 상태 프로브가 구성되어 있다고 가정합니다. 사용 중인 동일한 포트를 프로브하여 요청을 변환하거나 어플라이언스 뒤의 다른 가상 머신으로 프록시하려는 경우, 어플라이언스 뒤의 단일 가상 머신에서 어떤 프로브 응답이 발생하더라도 어플라이언스 자체는 중단 상태로 표시됩니다. 이와 같이 구성하면 어플라이언스 뒤에 단일 백 엔드 엔드포인트가 있게 되므로 전체 애플리케이션 시나리오가 연속적으로 실패할 수 있습니다. 간헐적 프로브 실패는 Load Balancer가 원래 대상(어플라이언스 인스턴스)을 작동 중단으로 표시하도록 하고, 전체 애플리케이션 시나리오를 비활성화하도록 하는 트리거로 작용할 수 있습니다. 대신 어플라이언스 자체의 상태를 프로브합니다. 상태 신호를 판별하기 위한 프로브는 NVA(네트워크 가상 어플라이언스) 시나리오에서 중요한 고려 사항이며, 이러한 시나리오에 적합한 상태 신호는 애플리케이션 공급업체에 문의해야 합니다.

방화벽 정책에서 프로브의 원본 IP를 허용하지 않으면 인스턴스에 연결할 수 없으므로 상태 프로브가 실패하게 됩니다. 차례로 상태 프로브 실패로 인해 Load Balancer에서 인스턴스를 표시합니다. 이 잘못된 구성으로 인해 부하 분산된 애플리케이션 시나리오가 실패할 수 있습니다.

Load Balancer의 상태 프로브에서 인스턴스를 표시하려면 모든 Azure 네트워크 보안 그룹 및 로컬 방화벽 정책에서 이 IP 주소를 허용해야 합니다. 기본적으로, 모든 네트워크 보안 그룹은 상태 프로브 트래픽을 허용하기 위해 서비스 태그 AzureLoadBalancer를 포함합니다.

상태 프로브 실패를 테스트하거나 개별 인스턴스를 표시하려는 경우 네트워크 보안 그룹을 사용하여 상태 프로브(대상 포트 또는 원본 IP)를 명시적으로 차단하고 프로브 실패를 시뮬레이트할 수 있습니다.

168.63.129.16이 포함된 Microsoft 소유의 IP 주소 범위를 사용하여 VNet을 구성하지 않도록 합니다. 이러한 구성은 상태 프로브의 IP 주소와 충돌하여 시나리오 실패를 야기할 수 있습니다.

VM에 여러 인터페이스가 있는 경우 받은 인터페이스의 프로브에 응답하도록 보장해야 합니다. 인터페이스당 VM에서 이 주소를 변환하려면 네트워크 주소를 소싱해야 할 수 있습니다.

TCP 타임스탬프를 사용하지 않도록 설정합니다. TCP 타임스탬프를 사용하도록 설정하면 VM의 게스트 OS TCP 스택에서 TCP 패킷이 삭제되어 상태 프로브가 실패할 수 있으며, 이로 인해 Load Balancer가 각 엔드포인트를 표시합니다. TCP 타임스탬프는 기본적으로 보안이 강화된 VM 이미지에서 주기적으로 사용하도록 설정되며 사용하지 않도록 설정해야 합니다.

모니터링

퍼블릭 및 내부 표준 Load BalancerAzure Monitor를 통해 엔드포인트 및 백 엔드 엔드포인트별 상태 프로브 상태를 다차원 메트릭으로 공개합니다. 이러한 메트릭은 다른 Azure 서비스나 파트너 애플리케이션에서 사용할 수 있습니다.

Azure Monitor 로그를 퍼블릭 및 프라이빗 기본 Load Balancer 둘 다에서 사용할 수 없는 것은 아닙니다.

제한 사항

  • HTTPS 프로브는 클라이언트 인증서를 사용한 상호 인증을 지원하지 않습니다.
  • TCP 타임스탬프를 사용하도록 설정하면 상태 프로브가 실패한다고 가정해야 합니다.
  • 기본 SKU Load Balancer 상태 프로브는 가상 머신 확장 집합에서 지원되지 않습니다.

다음 단계