Consul健康检查支持HTTP、TCP、Script、TTL、gRPC五种方式:HTTP通过GET请求检测响应码;TCP验证端口连通性;Script执行本地脚本依退出码判定;TTL由服务主动上报心跳;gRPC调用标准健康接口。

Consul 的健康检查机制支持五种主要探测方式,每种适用于不同场景和部署需求。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
HTTP 检查
Consul 定期向服务指定的 HTTP 接口(如 /health)发起 GET 请求。
- 必须配置
http字段(含完整 URL)和interval(检查间隔) - 可选设置
timeout(默认 10s),超时或返回非 2xx 状态码即标记为不健康 - 示例:
"http": "http://192.168.1.200:8080/health", "interval": "5s", "timeout": "2s"
TCP 检查
尝试与服务的 IP 和端口建立 TCP 连接,不发送应用层数据。
- 配置
tcp(格式如"127.0.0.1:8080")和interval - 连接失败、拒绝或超时均视为异常
- 轻量高效,适合无 HTTP 接口但需验证端口可达性的服务
Script 检查
由 Consul 主动执行本地脚本(如 Shell、Python),依据退出码判断状态。
- 必须提供
script(绝对路径)和interval - 脚本输出限制 4KB,超时默认 30s(可配
timeout) - 退出码 0 → passing;1 → warning;2 → critical
TTL 检查
服务实例主动上报“我还活着”,Consul 依赖定时心跳维持健康状态。
- 仅需配置
ttl(如"30s"),无需脚本或远程请求 - 服务必须定期调用
/v1/agent/check/pass/<check-id>接口续命 - 适合无法被外部访问、或需自定义健康逻辑的场景
gRPC 检查
针对 gRPC 服务的原生健康检查,调用标准 HealthCheckService 接口。
- 配置
grpc(如"127.0.0.1:9000")和interval - 支持 TLS 配置(
grpc_use_tls: true) - 自动解析响应中的
status字段(SERVING / NOT_SERVING)
以上方式可单独使用,也可为同一服务配置多个 check,Consul 会综合所有结果判定最终健康状态。实际部署中,HTTP 和 TCP 最常用,TTL 多用于容器或 Serverless 环境,Script 和 gRPC 则面向定制化强或协议特定的系统。

















