AWS ALB上gRPC健康检查异常:仅匹配码0时检查通过
AWS ALB gRPC健康检查匹配码异常解决办法
问题本质
AWS ALB的gRPC健康检查不解析业务层返回值,它的“匹配码”对应的是gRPC协议标准状态码:
- 匹配码
0对应gRPC协议的OK状态(grpc.StatusCode.OK) - 你自定义健康检查方法返回的
1属于业务逻辑返回值,ALB完全不识别这个,只看请求是否在协议层面返回了OK状态
配置修正步骤
- 放弃用业务返回值匹配:不管你的服务实现了怎样的健康检查逻辑,只要确保服务处理健康检查请求时,gRPC协议层返回
OK状态,ALB匹配码设为0就能通过检查 - 默认路径说明:
/AWS.ALB/healthcheck是AWS为ALB预留的健康检查路径,只要服务能正常响应这个路径的gRPC请求并返回协议层OK,就会通过检查 - 服务器反射的作用:开启反射只是让ALB能发现服务的gRPC方法列表,但不影响健康检查的判断逻辑,健康检查只看协议状态码
额外排查点
你提到输入任意路径都能通过匹配码0的检查,说明你的gRPC服务对未知路径的请求,默认返回了协议层的OK状态,这可能是框架的默认行为,和ALB配置无关。
内容的提问来源于stack exchange,提问作者Jailbot
相关产品推荐
相关产品推荐

