健康检查机制

健康检查是保障微服务系统高可用的关键手段。Envoy 支持主动和被动健康检查,能够自动剔除异常实例,提升整体稳定性和弹性。

主动健康检查

Envoy 支持多种主动健康检查方式:

  • HTTP 健康检查:定期向后端发送 HTTP 请求,响应 2xx/3xx 视为健康。
  • TCP 健康检查:建立 TCP 连接并可选发送/接收特定数据包。
  • gRPC 健康检查:遵循 gRPC Health Checking 协议。
  • Redis 健康检查:发送 PING/EXISTS 命令,响应正常视为健康。

典型配置片段:

health_checks:
  - timeout: 1s
    interval: 5s
    unhealthy_threshold: 3
    healthy_threshold: 2
    http_health_check:
      path: "/healthz"
      expected_statuses:
        - start: 200
          end: 399
  • timeout:单次健康检查超时时间。
  • interval:健康检查周期。
  • unhealthy_threshold:连续失败多少次判定为不健康。
  • healthy_threshold:连续成功多少次判定为健康。

被动健康检查(异常检测)

被动健康检查通过 Outlier Detection 机制,自动检测并剔除响应异常的实例。

常见检测类型:

  • 连续 5xx 错误:连续返回 5xx 响应即剔除。
  • 连续本地错误:如连接超时、重置等。
  • 成功率异常:统计周期内成功率低于阈值即剔除。

典型配置片段:

outlier_detection:
  interval: 10s
  base_ejection_time: 30s
  max_ejection_percent: 50
  consecutive_5xx: 5
  success_rate_minimum_hosts: 5
  success_rate_request_volume: 100
  success_rate_stdev_factor: 1900
  • interval:异常检测周期。
  • base_ejection_time:剔除实例的基础时长。
  • max_ejection_percent:最大可被剔除实例比例。
  • consecutive_5xx:连续 5xx 错误阈值。
  • success_rate_*:成功率异常检测相关参数。

工程实践建议

  • 所有生产集群建议开启主动健康检查,优先 HTTP/gRPC。
  • 配合被动异常检测,自动剔除故障实例,防止雪崩。
  • 合理设置阈值,兼顾敏感性与误判容忍度。
  • 健康检查接口应轻量、幂等,避免业务副作用。
  • 监控健康检查与异常检测相关指标,及时发现和优化配置。

健康检查与异常检测是微服务高可用的基石,建议在设计之初就纳入服务治理体系。

文章导航

章节内容

这是章节的内容页面。

章节概览