Application Gateway 상태 프로브 개요
Azure Application Gateway는 백 엔드 풀에 있는 모든 서버의 상태를 모니터링하고 비정상으로 간주되는 모든 서버로의 트래픽 전송을 자동으로 중지합니다. 프로브는 이러한 비정상 서버를 계속 모니터링하고, 게이트웨이는 프로브가 해당 서버를 정상으로 감지하는 즉시 트래픽을 다시 한 번 라우팅하기 시작합니다.
기본 프로브는 연결된 백 엔드 설정 및 기타 미리 설정된 구성의 포트 번호를 사용합니다. 사용자 지정 프로브를 사용하여 원하는 방식으로 구성할 수 있습니다.
프로브의 원본 IP 주소는 백 엔드 서버 유형에 따라 달라집니다.
- 백 엔드 풀의 서버가 퍼블릭 엔드포인트인 경우 원본 주소는 애플리케이션 게이트웨이의 프런트 엔드 공용 IP 주소가 됩니다.
- 백 엔드 풀의 서버가 프라이빗 엔드포인트인 경우 원본 IP 주소는 애플리케이션 게이트웨이 서브넷의 주소 공간에서 가져옵니다.
게이트웨이는 규칙을 백 엔드 설정 및 백 엔드 풀(및 리스너)과 연결하여 규칙을 구성한 직후 프로브 실행을 시작합니다. 이 그림에서는 게이트웨이가 모든 백 엔드 풀 서버를 독립적으로 프로브하는 것을 보여 줍니다. 도착하기 시작하는 들어오는 요청은 정상 서버로만 전송됩니다. 백 엔드 서버는 프로브 응답이 성공적으로 수신될 때까지 기본적으로 비정상으로 표시됩니다.
필요한 프로브는 백 엔드 서버와 백 엔드 설정의 고유한 조합에 따라 결정됩니다. 예를 들어 서버 2개와 백 엔드 설정 2개가 각각 다른 포트 번호를 갖는 단일 백 엔드 풀이 있는 게이트웨이를 고려해 보세요. 이러한 고유한 백 엔드 설정이 해당 규칙을 사용하여 동일한 백 엔드 풀과 연결된 경우 게이트웨이는 각 서버에 대한 프로브와 백 엔드 설정의 조합을 만듭니다. 백 엔드 상태 페이지를 볼 수 있습니다.
또한 애플리케이션 게이트웨이의 모든 인스턴스는 서로 독립적으로 백 엔드 서버를 프로브합니다.
Application Gateway의 각 인스턴스에 동일한 프로브 구성이 적용됩니다. 예를 들어 애플리케이션 게이트웨이에 두 개의 인스턴스가 있고 프로브 간격이 20초로 설정된 경우 두 인스턴스 모두 20초마다 상태 프로브를 보냅니다.
프로브가 실패한 응답을 감지하면 연속 실패 횟수가 구성된 임계값과 일치하는 경우 "비정상 임계값"에 대한 카운터가 해제되고 서버를 비정상으로 표시합니다. 따라서 이 비정상 임계값을 2로 설정하면 후속 프로브가 먼저 이 오류를 검색합니다. 그런 다음, 애플리케이션 게이트웨이는 2회 연속 실패한 프로브[첫 번째 검색 20초 + (2회 연속 실패한 프로브 * 20초)] 후에 서버를 비정상으로 표시합니다.
참고
백 엔드 상태 보고서는 각 프로브의 새로 고침 간격에 따라 업데이트되며 사용자의 요청에 따라 달라지지 않습니다.
애플리케이션 게이트웨이는 사용자 지정 프로브 구성을 설정하지 않는 경우 기본 상태 프로브를 자동으로 구성합니다. 모니터링 동작은 백 엔드 풀에서 구성된 IP 주소 또는 FQDN에 대해 HTTP GET 요청을 수행하는 방식으로 작동합니다. 기본 프로브의 경우 백 엔드 HTTP 설정이 HTTPS로 구성되어 있으면 프로브는 HTTPS를 사용하여 백 엔드 서버의 상태를 테스트합니다.
예: 포트 80에서 HTTP 네트워크 트래픽을 수신할 백 엔드 서버 A, B, C를 사용하도록 애플리케이션 게이트웨이를 구성합니다. 기본 상태 모니터링은 30초마다 서버 3대를 테스트하여 각 요청에 30초 시간 제한으로 정상 HTTP 응답을 확인합니다. 정상 HTTP 응답은 상태 코드 200에서 399 사이입니다. 이 경우 상태 프로브에 대한 HTTP GET 호스트 헤더는 다음과 같습니다 http://127.0.0.1/
.
Application Gateway의 HTTP 응답 코드도 참조하세요.
서버 A에 대한 기본 프로브 검사가 실패하면 애플리케이션 게이트웨이는 이 서버에 더 이상 요청을 전달하지 않습니다. 기본 프로브는 서버 A에 대해 30초마다 계속 확인합니다. 서버 A가 기본 상태 프로브의 요청에 성공적으로 응답하면 애플리케이션 게이트웨이가 다시 서버에 요청을 전달하기 시작합니다.
프로브 속성 | 값 | 설명 |
---|---|---|
프로브 URL | <protocol>://127.0.0.1:<port>/ | 프로토콜과 포트는 프로브가 연결된 백 엔드 HTTP 설정에서 상속됩니다. |
간격 | 30 | 다음 상태 프로브가 전송되기 전에 대기할 시간의 양(초)입니다. |
시간 제한 | 30 | 프로브를 비정상으로 표시하기 전에 애플리케이션 게이트웨이에서 프로브 응답에 대해 대기할 시간의 양(초)입니다. 프로브가 정상으로 반환하는 경우 해당 백 엔드는 즉시 정상으로 표시됩니다. |
비정상 임계값 | 3 | 일반 상태 프로브에 오류가 발생하는 경우 보내는 프로브의 수를 제어합니다. v1 SKU에서는 추가 상태 프로브가 연속해서 빠르게 전송되어 백 엔드의 상태를 빠르게 확인하고 프로브 간격 동안 기다리지 않습니다. v2 SKU의 경우 상태 프로브에서 간격을 기다립니다. 연속된 프로브 실패 횟수가 비정상 임계값에 도달하면 백 엔드 서버가 다운된 것으로 표시됩니다. |
기본 프로브는 <protocol>://127.0.0.1:<port>만 조사하여 상태를 확인합니다. 사용자 지정 URL로 이동하거나 다른 모든 설정을 수정하도록 상태 프로브를 구성하려면 사용자 지정 프로브를 사용해야 합니다. HTTPS 프로브에 대한 자세한 내용은 Application Gateway를 사용한 TLS 종료 및 엔드투엔드 TLS 개요를 참조하세요.
사용자 지정 프로브를 통해 상태 모니터링을 보다 세부적으로 제어할 수 있습니다. 사용자 지정 프로브를 사용하는 경우 사용자 지정 호스트 이름, URL 경로, 프로브 간격, 백 엔드 풀 인스턴스를 비정상으로 표시하기 전에 허용할 실패 응답 횟수를 구성할 수 있습니다.
다음 표에는 사용자 지정 상태 프로브의 속성을 위한 정의가 나와 있습니다.
프로브 속성 | 설명 |
---|---|
속성 | 프로브 이름입니다. 이 이름은 백 엔드 HTTP 설정에서 프로브를 식별하고 참조하는 데 사용됩니다. |
프로토콜 | 프로브를 보내는 데 사용하는 프로토콜입니다. 연결된 백 엔드 HTTP 설정에서 정의된 프로토콜과 일치해야 합니다. |
호스트 | 프로브를 보내는 데 사용할 호스트 이름입니다. v1 SKU에서 이 값은 프로브 요청의 호스트 헤더에만 사용됩니다. v2 SKU에서는 호스트 헤더와 SNI로 모두 사용됩니다. |
경로 | 프로브의 상대 경로입니다. 올바른 경로는 '/'부터 시작합니다. |
포트 | 정의된 경우 이 포트가 대상 포트로 사용됩니다. 그렇지 않으면 연결된 HTTP 설정과 동일한 포트가 사용됩니다. 이 속성은 v2 SKU에서만 사용할 수만 있습니다. |
간격 | 프로브 간격(초). 이 값은 연속된 두 프로브 사이의 시간 간격입니다. |
시간 제한 | 프로브 시간 제한(초) 이 시간 제한 기간 내에 유효한 응답을 받지 못하면 프로브가 실패로 표시됩니다. |
비정상 임계값 | 프로브 재시도 횟수. 연속된 프로브 실패 횟수가 비정상 임계값에 도달하면 백 엔드 서버가 다운된 것으로 표시됩니다. |
기본적으로 상태 코드가 200-399인 HTTP(S) 응답은 정상으로 간주됩니다. 사용자 지정 상태 프로브는 또한 일치하는 두 조건을 지원합니다. 일치하는 조건을 사용하여 정상 응답을 만드는 항목에 대한 기본 해석을 필요에 따라 수정할 수 있습니다.
다음이 일치하는 조건입니다.
- HTTP 응답 상태 코드 일치 - 사용자 지정 http 응답 코드 또는 응답 코드 범위를 수용하기 위한 프로브 일치 조건입니다. 응답 상태 코드 또는 상태 코드 범위를 구분하는 개별 쉼표가 지원됩니다.
- HTTP 응답 본문 일치 - HTTP 응답 본문을 살펴보고 사용자 지정 문자열과 일치하는 프로브 일치 조건입니다. 일치는 응답 본문에서 사용자 지정 문자열의 존재만 찾으며 전체 정규식과 일치하지는 않습니다. 지정된 일치 항목은 4090자 이하여야 합니다.
New-AzApplicationGatewayProbeHealthResponseMatch
cmdlet을 사용하여 일치 조건을 지정할 수 있습니다.
예시:
$match = New-AzApplicationGatewayProbeHealthResponseMatch -StatusCode 200-399
$match = New-AzApplicationGatewayProbeHealthResponseMatch -Body "Healthy"
일치 조건은 PowerShell에서 -Match
연산자를 사용하여 프로브 구성에 연결할 수 있습니다.
- 백 엔드 서버가 인증된 사용자만 액세스할 수 있도록 허용하는 경우 애플리케이션 게이트웨이 프로브는 200 대신 403 응답 코드를 받습니다. 클라이언트(사용자)는 라이브 트래픽에 대해 자신을 인증하도록 바인딩되므로 예상 응답으로 403을 허용하도록 프로브 트래픽을 구성할 수 있습니다.
- 백 엔드 서버에 다른 하위 도메인을 제공하기 위해 와일드카드 인증서(*.contoso.com)가 설치된 경우 성공적인 TLS 프로브를 설정하고 해당 서버를 정상으로 보고하는 데 허용되는 특정 호스트 이름(SNI에 필요)이 있는 사용자 지정 프로브를 사용할 수 있습니다. 백 엔드 설정에서 "호스트 이름 재정의"를 NO로 설정하면 다른 수신 호스트 이름(하위 도메인)이 백 엔드에 있는 그대로 전달됩니다.
NSG 규칙을 통해 Application Gateway 서브넷에 대한 세밀한 제어가 공개 미리 보기에서 가능합니다. 자세한 내용은 여기에서 찾을 수 있습니다.
현재 기능에는 몇 가지 제한 사항이 있습니다.
들어오는 인터넷 트래픽을 Application Gateway v1 SKU의 경우 65503-65534 TCP 포트에서 허용하고, 대상 서브넷이 Any이고 원본이 GatewayManager 서비스 태그인 v2 SKU의 경우 65200-65535 TCP 포트에서 허용해야 합니다. 이 포트 범위는 Azure 인프라 통신에 필요합니다.
또한 아웃바운드 인터넷 연결은 차단할 수 없으며, AzureLoadBalancer 태그에서 들어오는 인바운드 트래픽은 허용해야 합니다.
자세한 내용은 Application Gateway 구성 개요를 참조하세요.
Application Gateway 상태 모니터링에 대해 알아본 후에 PowerShell 및 Azure Resource Manager 배포 모델을 사용하여 Azure Portal의 사용자 지정 상태 프로브 또는 사용자 지정 상태 프로브를 구성할 수 있습니다.