컨테이너용 Application Gateway에 대한 사용자 지정 상태 프로브
컨테이너용 Application Gateway는 기본적으로 모든 백 엔드 대상의 상태를 모니터링합니다. 백 엔드 대상이 정상이거나 비정상이 되면 컨테이너용 Application Gateway는 트래픽을 정상 엔드포인트로만 분산합니다.
기본 상태 프로브 모니터링 사용 외에도 애플리케이션 프로그의 요구 사항에 맞게 상태 프로브를 사용자 지정할 수도 있습니다. 이 문서에서는 기본 상태 프로브와 사용자 지정 상태 프로브를 모두 설명합니다.
상태 검색의 순서와 논리는 다음과 같습니다.
- HealthCheckPolicy CR(사용자 지정 리소스)의 정의를 사용합니다.
- HealthCheckPolicy CR이 없는 경우 준비 프로브를 사용합니다.
- 준비 프로브가 정의되지 않은 경우 기본 상태 프로브를 사용합니다.
다음 속성은 사용자 지정 상태 프로브를 구성합니다.
속성 | 기본값 |
---|---|
interval | 백 엔드 대상에 상태 프로브를 전송해야 하는 빈도(초)입니다. 최소 간격은 > 0초여야 합니다. |
시간 제한 | 요청이 실패로 표시될 때까지 기다려야 하는 시간(초). 최소 간격은 > 0초여야 합니다. |
healthyThreshold | 대상 엔드포인트를 정상 상태로 표시하기 전의 상태 프로브 수입니다. 최소 간격은 > 0이어야 합니다. |
port | 백 엔드 대상을 조사할 때 사용되는 포트 번호. |
unhealthyTreshold | 백 엔드 대상에 비정상 레이블을 지정하기 전에 실패할 상태 프로브의 수입니다. 최소 간격은 > 0이어야 합니다. |
grpc | 백 엔드 서비스가 gRPC 연결을 기대하는 경우 지정됩니다. 값은 {} 여야 합니다. |
(http) | 백 엔드 서비스가 http 연결을 예상하는 경우 지정됩니다. |
(http) 호스트 | 백 엔드 대상에 대한 요청에 지정된 호스트 이름입니다. |
(http) 경로 | 요청의 특정 경로입니다. 단일 파일을 로드해야 하는 경우 경로는 /index.html일 수 있습니다. |
(http -> 일치) statusCodes | 백 엔드에서 반환된 유효한 HTTP 상태 코드의 범위를 정의하는 두 가지 속성(start 및 end )을 포함합니다. |
useTLS | 상태 검사에서 TLS를 적용해야 하는지 여부를 지정합니다. 지정하지 않으면, 상태 검사는 동일한 포트가 상태 검사에 사용되는 경우 서비스와 동일한 프로토콜을 사용합니다. 포트가 다르면 상태 검사는 일반 텍스트입니다. |
기본 상태 프로브
사용자 지정 프로브 구성을 정의하지 않거나 준비 프로브를 구성하지 않은 경우 컨테이너용 Application Gateway는 기본 상태 프로브를 자동으로 구성합니다. 모니터링 동작은 구성된 백 엔드 대상의 IP 주소에 대해 HTTP GET 요청을 수행하는 방식으로 작동합니다. 기본 프로브의 경우 백 엔드 대상이 HTTPS용으로 구성된 경우 프로브는 HTTPS를 사용하여 백 엔드 대상의 상태를 테스트합니다.
구현에 대한 자세한 내용은 API 사양의 HealthCheckPolicyConfig를 참조하세요.
기본 상태 프로브를 사용하는 경우 각 상태 프로브 속성에 대해 다음 값이 사용됩니다.
속성 | 기본값 |
---|---|
interval | 5초 |
시간 제한 | 30초 |
healthyTrehshold | 프로브 1개 |
unhealthyTreshold | 프로브 3개 |
port | 사용되는 포트 번호는 수신 리소스의 백 엔드 포트 번호 또는 HttpRoute 리소스의 HttpRoute 백 엔드 포트로 정의됩니다. |
(http) 호스트 | localhost |
(http) 경로 | / |
useTLS | TLS가 지정된 경우 HTTP 및 HTTPS용 HTTP. |
1 backendTLSPolicy가 대상 백 엔드 서비스(게이트웨이 API 구현용)를 참조하거나 HTTPS의 backendSetting 프로토콜(수신 API 구현용)이 있는 IngressExtension이 지정된 경우 HTTPS가 사용됩니다.
참고 항목
상태 프로브는 Microsoft-Azure-Application-LB/AGC
의 User-Agent
값으로 시작됩니다.
사용자 지정 상태 프로브
게이트웨이 API와 수신 API 모두에서 HealthCheckPolicyPolicy 리소스를 정의하고 상태 프로브가 확인해야 하는 서비스를 참조하여 사용자 지정 상태 프로브를 정의할 수 있습니다. 서비스가 컨테이너용 Application Gateway에 대한 클래스 참조가 있는 HTTPRoute 또는 수신 리소스에서 참조되므로 사용자 지정 상태 프로브는 각 참조에 사용됩니다.
이 예제에서 컨테이너용 Application Gateway에서 내보낸 상태 프로브는 test-service를 구성하는 Pod에 호스트 이름 contoso.com을 보냅니다. 요청된 프로토콜은 http
이며 경로는 /
입니다. 5초마다 프로브가 발사되고 연결 시간이 초과되었는지 확인하기 전까지 3초 동안 기다립니다. 응답이 수신되면 200~299(200 및 299 포함) 사이의 HTTP 응답 코드는 정상으로 간주되며 다른 모든 응답은 비정상으로 간주됩니다.
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
name: gateway-health-check-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: test-service
namespace: test-infra
default:
interval: 5s
timeout: 3s
healthyThreshold: 1
unhealthyThreshold: 1
port: 8123
# grpc: {} # defined if probing a gRPC endpoint
http:
host: contoso.com
path: /
match:
statusCodes:
- start: 200
end: 299
useTLS: true
EOF