Azure Load Balancer 상태 프로브
Azure Load Balancer 상태 프로브는 애플리케이션 인스턴스의 상태를 검색하는 기능입니다. 인스턴스에 요청을 보내 사용 가능한지 확인하고 요청에 응답합니다. 상태 프로브는 TCP, HTTP 또는 HTTPS와 같은 다른 프로토콜을 사용하도록 구성할 수 있습니다. 이는 애플리케이션 오류를 감지하고, 부하를 관리하고, 가동 중지 시간을 계획하는 데 도움이 되므로 중요한 기능입니다.
Azure Load Balancer 규칙에는 엔드포인트 상태를 검색하기 위한 상태 프로브가 필요합니다. 상태 프로브 및 프로브 응답의 구성에 따라 새 연결을 수신할 백 엔드 풀 인스턴스가 결정됩니다. 상태 프로브를 사용하여 애플리케이션의 실패를 검색합니다. 상태 프로브에 대한 사용자 지정 응답을 생성합니다. 흐름 제어를 위한 상태 프로브를 사용하여 부하 또는 계획된 가동 중지 시간을 관리합니다. 상태 프로브가 실패하면 부하 분산 장치는 각각의 비정상 인스턴스에 대한 새 연결 전송을 중지합니다. 아웃바운드 연결은 영향을 받지 않고 인바운드만 영향을 받습니다.
프로브 프로토콜
상태 프로브는 여러 프로토콜을 지원합니다. 특정 상태 프로브 프로토콜의 가용성은 Load Balancer SKU에 따라 다릅니다. 또한 서비스 동작은 다음 표에 표시된 대로 Load Balancer SKU에 따라 다릅니다.
표준 SKU | 기본 SKU | |
---|---|---|
프로브 프로토콜 | TCP, HTTP, HTTPS | TCP, HTTP |
프로브 다운 동작 | 모든 프로브가 다운되고, 모든 TCP 흐름이 계속됩니다. | 모든 프로브가 다운되고, 모든 TCP 흐름이 만료됩니다. |
프로브 속성
상태 프로브는 다음과 같은 속성을 가집니다.
상태 프로브 속성 이름 | 세부 정보 |
---|---|
이름 | 상태 프로브의 이름. 이는 상태 프로브에 대해 정의할 수 있는 이름입니다. |
프로토콜 | 상태 프로브의 프로토콜 이는 상태 프로브가 사용하려는 프로토콜 유형입니다. 옵션은 TCP, HTTP, HTTPS입니다. |
포트 | 상태 프로브의 포트 상태 프로브가 상태를 검사 위해 가상 머신에 연결할 때 사용할 대상 포트입니다. |
간격(초) | 상태 프로브 간격 가상 머신에 대한 서로 다른 프로브 두 개의 연속 상태 검사 시간(초) |
사용 대상 | 이 특정 상태 프로브를 사용하는 부하 분산 장치 규칙 목록입니다. 유효하려면 상태 프로브를 사용하는 규칙이 하나 이상 있어야 합니다. |
프로브 구성
상태 프로브 구성은 다음 요소로 구성됩니다.
상태 프로브 구성 | 세부 정보 |
---|---|
프로토콜 | 상태 프로브의 프로토콜 이는 상태 프로브가 사용하려는 프로토콜 유형입니다. 사용 가능한 옵션은 TCP, HTTP, HTTPS입니다. |
포트 | 상태 프로브의 포트 상태 프로브가 가상 머신에 연결하여 가상 머신의 상태 검사 때 사용할 대상 포트입니다. 가상 머신이 이 포트에서도 수신 대기하고 있는지 확인해야 합니다(즉, 포트가 열려 있음). |
Interval | 상태 프로브 간격. 가상 머신에 대한 연속 상태 검사 간 시간(초) |
프로브 프로토콜
상태 프로브에서 사용하는 프로토콜을 TCP, HTTP, HTTPS 옵션 중 하나로 구성할 수 있습니다.
시나리오 | TCP 프로브 | HTTP/HTTPS 프로브 |
---|---|---|
개요 | TCP 프로브는 정의된 포트를 통해 3방향 개방형 TCP 핸드셰이크를 수행하여 연결을 시작합니다. TCP 프로브는 4방향 폐쇄형 TCP 핸드셰이크를 사용하여 연결을 종료합니다. | HTTP 및 HTTPS는 지정된 경로로 HTTP GET을 발행합니다. 두 프로브 모두 HTTP GET에 대한 상대 경로를 지원합니다. HTTPS 프로브는 TLS(전송 계층 보안)가 추가된 HTTP 프로브와 동일합니다. HTTP/HTTPS 프로브는 프로브 포트가 서비스의 수신기이기도 한 경우 부하 분산 장치에서 인스턴스를 제거하는 자체 논리를 구현하는 데 유용할 수 있습니다. |
프로브 오류 동작 | TCP 프로브가 실패하는 경우는 다음과 같습니다. 1. 인스턴스의 TCP 수신기가 제한 시간 동안 전혀 응답하지 않습니다. 프로브는 프로브 다운을 표시하기 전에 응답하지 않도록 구성된 시간이 초과된 프로브 요청의 수에 따라 표시됩니다. 2. 프로브가 인스턴스에서 TCP 재설정을 받습니다. | HTTP/HTTPS 프로브가 실패하는 경우는 다음과 같습니다. 1. 프로브 엔드포인트에서 200 이외의 HTTP 응답 코드(예: 403, 404 또는 500)를 반환합니다. 2. 프로브 엔드포인트는 최소 프로브 간격 및 30초 제한 시간 동안 응답하지 않습니다. 프로브가 실행 중이 아니라고 표시되고, 모든 시간 제한 간격의 합계에 도달하기 전에 다중 프로브 요청이 응답하지 않을 수 있습니다. 3. 프로브 엔드포인트에서 TCP 재설정을 통해 연결을 닫습니다. |
프로브 업 동작 | TCP 상태 프로브는 정상으로 간주되며 다음과 같은 경우 백 엔드 엔드포인트를 정상으로 표시합니다. 1. VM이 부팅된 후에는 상태 프로브가 성공 상태로 표시됩니다. 2. 정상 상태를 달성한 모든 백 엔드 엔드포인트는 새 흐름을 받을 수 있습니다. | 인스턴스에서 제한 시간 내에 200 HTTP 상태로 응답하면 상태 프로브가 표시됩니다. HTTP/HTTPS 상태 프로브는 정상으로 간주되며 다음과 같은 경우 백 엔드 엔드포인트를 정상으로 표시합니다. 1. VM이 부팅된 후에는 상태 프로브가 성공 상태로 표시됩니다. 2. 정상 상태를 달성한 모든 백 엔드 엔드포인트는 새 흐름을 받을 수 있습니다. |
참고 항목
HTTPS 프로브를 사용하려면 전체 체인에서 최소 서명 해시가 SHA256인 인증서 기반 인증서를 사용해야 합니다.
프로브 다운 동작
시나리오 | TCP 연결 | UDP 데이터그램 |
---|---|---|
단일 인스턴스 프로브 다운 | 새 TCP 연결은 정상적인 백 엔드 엔드포인트를 계속 이어 받았습니다. 이 백 엔드 엔드포인트에 대한 설정된 TCP 연결은 계속됩니다. | 기존 UDP 흐름은 백 엔드 풀의 다른 정상 인스턴스로 이동합니다. |
모든 인스턴스 프로브 다운 | 백 엔드 풀에 새 흐름이 전송되지 않습니다. 표준 Load Balancer는 백 엔드 풀에 백 엔드 인스턴스가 두 개 이상 있는 경우 설정된 TCP 흐름이 계속되도록 허용합니다. 기본 Load Balancer는 백 엔드 풀에 대한 기존의 모든 TCP 흐름을 종료합니다. | 모든 기존 UDP 흐름이 종료됩니다. |
프로브 간격 및 시간 제한
간격 값은 상태 프로브가 백 엔드 풀 인스턴스의 응답을 확인하는 빈도를 결정합니다. 상태 프로브가 실패하면 백 엔드 풀 인스턴스는 즉시 비정상으로 표시됩니다. 다음 정상 프로브에서 상태 프로브가 성공하면 Azure Load Balancer는 백 엔드 풀 인스턴스를 정상으로 표시합니다. 상태 프로브는 기본적으로 Azure Portal에서 구성된 상태 프로브 포트를 5초마다 확인하려고 시도하지만, 명시적으로 다른 값으로 설정할 수 있습니다.
적시에 응답을 받을 수 있도록 HTTP/S 상태 프로브에는 기본 제공 시간 제한이 있습니다. 다음은 TCP 및 HTTP/S 프로브의 시간 제한 기간입니다.
- TCP 프로브 시간 제한 기간: N/A(구성된 프로브 간격 기간이 경과하고 다음 프로브가 전송되면 프로브가 실패함)
- HTTP/S 프로브 시간 제한 기간: 30초
HTTP/S 프로브의 경우 구성된 간격이 위의 제한 시간보다 긴 경우 상태 프로브는 시간 초과되고 제한 시간 동안 응답이 수신되지 않으면 실패합니다. 예를 들어, HTTP 상태 프로브가 120초(2분마다)의 프로브 간격으로 구성되어 있고 처음 30초 이내에 프로브 응답이 수신되지 않으면 프로브가 제한 시간에 도달하여 실패하게 됩니다. 구성된 간격이 위의 제한 시간보다 짧은 경우, 구성된 간격 기간이 완료되기 전에 응답을 받지 못하면 상태 프로브가 실패하고 다음 프로브가 즉시 전송됩니다.
디자인 지침
애플리케이션의 상태 모델을 설계할 때 인스턴스 및 애플리케이션 서비스의 상태를 반영하는 백 엔드 엔드포인트의 포트를 조사합니다. 애플리케이션 포트와 프로브 포트는 동일하지 않아도 됩니다. 일부 시나리오에서는 프로브 포트가 애플리케이션에서 사용하는 포트와 다를 수 있지만 일반적으로 동일한 포트인 것이 좋습니다.
애플리케이션이 상태 프로브 응답을 생성하고 인스턴스가 새 연결을 수신해야 하는지 여부를 부하 분산 장치에 알리는 것이 유용할 수 있습니다. 상태 프로브에 실패하여 인스턴스에 대한 새 연결 배달을 제한하기 위해 프로브 응답을 조작할 수 있습니다. 애플리케이션 유지 관리를 준비하고 애플리케이션에 대한 연결 드레이닝을 시작할 수 있습니다. 표준 Load Balancer에서 프로브 다운 신호가 발생하면 유휴 시간 종료 또는 연결 종료가 나타날 때까지 항상 TCP 흐름이 계속됩니다.
UDP 부하 분산 애플리케이션의 경우 백 엔드 엔드포인트에서 사용자 지정 상태 프로브 신호를 생성합니다. 해당 수신기와 일치하는 상태 프로브에 대해 TCP, HTTP 또는 HTTPS를 사용합니다.
표준 Load Balancer를 사용하는 HA 포트 부하 분산 규칙. 모든 포트는 부하 분산되며 단일 상태 프로브 응답은 전체 인스턴스의 상태를 반영해야 합니다.
상태 프로브를 수신하는 인스턴스를 통해 상태 프로브를 가상 네트워크의 다른 인스턴스로 변환하거나 프록시하지 마세요. 이 구성을 사용하면 시나리오에서 오류가 발생할 수 있습니다. 예: 타사 어플라이언스 집합이 부하 분산 장치의 백 엔드 풀에 배포되어 어플라이언스에 확장성과 중복성을 제공합니다. 상태 프로브는 타사 어플라이언스가 어플라이언스 뒤의 다른 가상 머신을 프록시하거나 변환하는 포트를 조사하도록 구성됩니다. 어플라이언스 뒤의 다른 가상 머신으로 요청을 변환하거나 프록시하는 데 사용된 동일한 포트를 조사하는 경우 단일 가상 머신의 조사 응답은 어플라이언스를 표시합니다. 이 구성은 애플리케이션의 계단식 오류로 이어질 수 있습니다. 트리거는 부하 분산 장치가 어플라이언스 인스턴스를 마크다운하게 하는 일시적 프로브 실패일 수 있습니다. 이 작업은 애플리케이션을 사용하지 않도록 설정할 수 있습니다. 어플라이언스 자체의 상태를 조사합니다. 상태 신호를 결정하기 위해 프로브를 선택하는 것은 NVA(네트워크 가상 어플라이언스) 시나리오에서 중요한 고려 사항입니다. 이러한 시나리오에 대한 적절한 상태 신호는 애플리케이션 공급업체에 문의합니다.
가상 머신에 여러 인터페이스가 구성되어 있는 경우 수신한 인터페이스에서 프로브에 응답해야 합니다. 인터페이스당 VM에서 이 주소를 변환하려면 네트워크 주소를 소싱해야 할 수 있습니다.
Azure PowerShell, Azure CLI, 템플릿 또는 API를 사용하는 경우 프로브 정의가 필수가 아니거나 확인되지 않습니다. 프로브 유효성 검사 테스트는 Azure Portal을 사용하는 경우에만 수행됩니다.
프로브의 상태가 변동되는 경우 부하 분산 디바이스는 백 엔드 엔드포인트를 다시 정상 상태로 전환하기 전에 좀 더 오래 기다립니다. 이러한 추가 대기 시간은 의도적인 정책으로, 사용자 및 인프라를 보호합니다.
가상 머신 인스턴스가 실행 중인지 확인합니다. 백 엔드 풀에서 실행 중인 각 인스턴스에 대해 상태 프로브는 가용성을 확인합니다. 인스턴스가 중지되면 다시 시작될 때까지 프로브되지 않습니다.
168.63.129.16이 포함된 Microsoft 소유 IP 주소 범위로 가상 네트워크를 구성하지 마세요. 구성이 상태 프로브의 IP 주소와 충돌하여 시나리오가 실패할 수 있습니다.
상태 프로브 실패를 테스트하거나 개별 인스턴스를 표시하려면 네트워크 보안 그룹을 사용하여 상태 프로브를 명시적으로 차단합니다. 대상 포트 또는 원본 IP를 차단하여 프로브 실패를 시뮬레이션하는 NSG 규칙을 만듭니다.
부하 분산 규칙과 달리 인바운드 NAT 규칙에는 연결된 상태 프로브가 필요하지 않습니다.
NSG 규칙을 사용하여 Azure Load Balancer 상태 프로브 IP 또는 포트를 차단하는 것은 권장되지 않습니다. 이는 지원되지 않는 시나리오이며 NSG 규칙의 적용이 지연되어 상태 프로브가 백 엔드 인스턴스의 가용성을 부정확하게 나타낼 수 있습니다.
모니터링
표준 Load Balancer는 Azure Monitor를 통해 엔드포인트별 및 백 엔드 엔드포인트 상태 프로브 상태를 노출합니다. 다른 Azure 서비스나 파트너 애플리케이션은 이러한 메트릭을 사용할 수 있습니다. 기본 Load Balancer에는 Azure Monitor 로그가 지원되지 않습니다.
원본 IP 주소 프로브
Azure Load Balancer의 상태 프로브에서 인스턴스를 표시하려면 모든 Azure 네트워크 보안 그룹 및 로컬 방화벽 정책에서 168.63.129.16 IP 주소를 허용해야 합니다. AzureLoadBalancer 서비스 태그는 네트워크 보안 그룹에서 이 원본 IP 주소를 식별하고 기본적으로 상태 프로브 트래픽을 허용합니다. 이 IP에 대한 자세한 내용은 여기에서 알아볼 수 있습니다.
방화벽 정책에서 프로브의 원본 IP를 허용하지 않으면 인스턴스에 연결할 수 없으므로 상태 프로브가 실패합니다. 그러면 Azure Load Balancer는 상태 프로브 오류로 인해 인스턴스를 다운으로 표시합니다. 이 잘못된 구성으로 인해 부하 분산된 애플리케이션 시나리오가 실패할 수 있습니다. 모든 IPv4 Load Balancer 상태 프로브는 해당 원본으로 168.63.129.16 IP 주소에서 시작됩니다. IPv6 프로브는 링크 로컬 주소(fe80::1234:5678:9abc)를 원본으로 사용합니다. 이중 스택 Azure Load Balancer의 경우 IPv6 상태 프로브가 작동하도록 네트워크 보안 그룹을 구성해야 합니다.
제한 사항
HTTPS 프로브는 클라이언트 인증서와의 상호 인증을 지원하지 않습니다.
HTTP 프로브는 백 엔드를 프로브하기 위해 호스트 이름을 사용하는 것을 지원하지 않습니다.
TCP 타임스탬프를 사용하도록 설정하면 제한이나 기타 성능 문제가 발생할 수 있으며, 이로 인해 상태 프로브가 시간 초과될 수 있습니다.
기본 SKU Load Balancer 상태 프로브는 가상 머신 확장 집합에서 지원되지 않습니다.
HTTP 프로브는 19, 21, 25, 70, 110, 119, 143, 220, 993의 보안 문제로 인해 다음 포트에서 프로빙을 지원하지 않습니다.