
gRPC Health Check
NGINX Plus 기능을 사용하여 주기적인 Health Check를 전송하여 Upstream 그룹에 있는 gRPC 서버의 상태를 모니터링하세요.
목차
1. 소개
2. 전제 조건
3. Health Check 프로토콜을 허용하는 gRPC 서버
4. Health Check 프로토콜을 허용하지 않는 gRPC 서버
1. 소개
NGINX Plus 는 Active Health Check를 통해 Upstream 서버의 상태를 모니터링할 수 있습니다. NGINX Plus R23은 gRPC Health Check 프로토콜을 지원하므로 Upstream gRPC 서비스가 새로운 요청을 처리할 수 있는지 테스트할 수 있습니다. 이는 동적이고 컨테이너화된 환경에서 특히 중요합니다. gRPC 서비스의 새 인스턴스를 추가할 때는 요청이 완전히 작동하는 서비스로 전송되는 것이 중요합니다.
2. 전제 조건
예를 들어 gRPC 네트워크 트래픽을 처리하는 서버의 Upstream 그룹을 구성하고 이러한 서버의 상태를 유지하는 공유 메모리 Zone을 지정했습니다.
stream {
#...
upstream grpc_backend {
zone grpc_backend 64k;
server 10.0.0.1:50051;
server 10.0.0.2:50051;
}
#...
}
gRPC 요청을 Upstream 서버 그룹으로 라우팅하는 서버를 구성하였습니다.
location /grpc {
grpc_pass grpc://grpc_backend;
}
3. Health Check 프로토콜을 허용하는 gRPC 서버
gRPC 서비스가 gRPC Health Check 프로토콜을 지원하는 경우, health_check
지시문의 type=grpc
매개변수를 지정하세요.
location / {
grpc_pass grpc://grpc_backend;
health_check mandatory type=grpc;
}
이 예제에서는 Health Check 프로토콜에 따라 Health 서비스의 check
메서드가 호출되며, SERVING
으로 응답한 gRPC 서버는 정상으로 간주됩니다.
mandatory
매개변수는 인스턴스가 도입되거나 Reload될 때와 같이 인스턴스에서 트래픽이 전송되기 전에 Health Check를 통과해야 한다는 것을 보장합니다. type=grpc
는 다른 모든 health_check
매개변수 뒤에 지정해야 합니다.
각 Upstream 서버에 노출된 gRPC 서비스가 여러 개 있는 경우, grpc_service
매개변수로 서비스 이름을 지정하여 가장 중요한 서비스를 모니터링할 수 있습니다.
location / {
grpc_pass grpc://grpc_backend;
health_check mandatory type=grpc grpc_service=MyStatus;
}
4. Health Check 프로토콜을 허용하지 않는 gRPC 서버
gRPC 서비스가 gRPC Health Check 프로토콜을 구현하지 않는 경우에도 check
메서드를 전송하고 특정 상태 코드
를 예상하여 Health Check 을 수행할 수 있습니다. 이렇게 하면 Upstream 서버가 gRPC 요청에 응답하는지 테스트합니다. grpc_status
매개변수로 gRPC 오류 응답 코드를 지정합니다.
location / {
grpc_pass grpc://grpc_backend;
health_check type=grpc grpc_status=12; # 12=unimplemented
}
이 경우 gRPC 상태가 12
/ UNIMPLEMENTED
인 응답은 정상으로 간주됩니다.
Note: type=grpc
매개변수는 health_check
지시문의 uri
또는 match
매개변수와 호환되지 않습니다. type=grpc
매개변수는 다른 모든 지시문 매개변수 다음에 지정해야 합니다. grpc_service
및 grpc_status
는 type=grpc
를 따라야 합니다.