说明
- NP: NGINX Plus
- AG: Admin Guide
- 会话: session
- 上游: upstream
- 流量:traffic
- 后端:backend
目录
1.gRPC健康检查
本章介绍如何为负载平衡的上游服务器组中的gRPC服务器配置运行状况检查。
2.介绍
NGINX Plus可以通过进行主动运行状况检查来监视上游服务器的运行状况。 NGINX Plus R23支持gRPC运行状况检查协议,以便可以测试上游gRPC服务处理新请求的能力。 这在动态和容器化环境中尤其重要。 添加gRPC服务的新实例时,将请求发送到完全运行的服务很重要。
3.先决条件
你已经配置了处理gRPC网络流量的上游服务器组,并指定了一个保留这些服务器状态的共享内存区域,例如:
stream {
#...
upstream grpc_backend {
zone grpc_backend 64k;
server 10.0.0.1:50051;
server 10.0.0.2:50051;
}
#...
}
你已经配置了将gRPC请求路由到上游服务器组的服务器:
location /grpc {
grpc_pass grpc://grpc_backend;
}
4.接受健康检查协议的gRPC服务器
如果你的gRPC服务支持gRPC运行状况检查协议,请指定health_check
指令的type=grpc
参数:
location / {
grpc_pass grpc://grpc_backend;
health_check mandatory type=grpc;
}
在此示例中,根据运行状况检查协议,将调用运行Health
服务的Check
方法,并且将以SERVING
响应的gRPC服务器视为运行状况良好。
mandatory
参数确保运行状况检查必须在实例上发送流量之前通过,例如引入或重新加载时。 请注意,必须在所有其他health_check
参数之后指定type=grpc
。
如果每个上游服务器上都有多个gRPC服务公开,则可以通过使用grpc_service
参数指定服务名称来监视最重要的服务:
location / {
grpc_pass grpc://grpc_backend;
health_check mandatory type=grpc grpc_service=MyStatus;
}
5.不接受运行状况检查协议的gRPC服务器
如果你的gRPC服务未实现gRPC运行状况检查协议,则仍然可以通过发送Check
方法并期望使用特定的状态代码来执行运行状况检查。 这将测试上游服务器是否正在响应gRPC请求。 使用grpc_status
参数指定gRPC错误响应代码:
location / {
grpc_pass grpc://grpc_backend;
health_check type=grpc grpc_status=12; # 12=unimplemented
}
在这种情况下,gRPC状态为12
/ UNIMPLEMENTED
的响应将被认为是健康的。
请注意,type=grpc
参数与uri
或health_check
指令的match
参数不兼容。 必须在所有其他指令参数之后指定type=grpc
参数:grpc_service
和grpc_status
必须遵循 type=grpc
。
6.也可以看看