Envoy代理出现503或UH怎么办?Cluster、Endpoint、重试与熔断排查

先看Access Log响应标志和Upstream Host,再判断是发现、健康还是容量问题
发布于
7

Envoy返回503时,响应可能来自上游应用,也可能由Envoy本地生成。只看HTTP状态无法定位。访问日志中的Response Flags、Upstream Host、Cluster、连接时间和详细传输失败原因,才是判断“无健康上游”“连接失败”还是“本地熔断”的入口。

503常见来源

现象 可能原因 检查方向
UH 无健康上游 Endpoint发现、健康检查与权重
UF 上游连接失败 DNS、TCP、TLS与端口
URX等重置标志 上游重置或重试耗尽 连接池、超时和上游日志
本地限流/熔断 并发、连接或请求达到阈值 Circuit Breaker与资源容量

具体标志含义可能随版本变化,应以运行版本文档和管理接口为准。

先确认请求路由到哪个Cluster

Host、Path、Header和Route配置可能把请求送到错误Cluster,或因Virtual Host不匹配返回本地响应。日志中记录路由名和Cluster,并通过配置转储核对实际生效版本,不要只看控制面配置文件。

为什么Endpoint存在却仍是UH

Endpoint可能被主动健康检查判为不健康,也可能因异常检测被暂时驱逐,权重为零,或属于未匹配的Locality。服务发现控制面还可能推送空列表。应查看每个Endpoint健康标志、最后检查结果和驱逐统计。

xDS更新失败怎样识别

Envoy可能对不合法配置发送NACK并继续使用旧版本。控制面显示“已发布”不等于数据面接受。检查配置版本、ACK/NACK、错误详情与管理接口中的动态资源状态,并避免在日志中泄露Secret资源。

连接失败从DNS还是TLS开始查

STRICT_DNS Cluster依赖Envoy DNS解析,EDS Cluster依赖控制面提供地址。TCP可达后,上游TLS还涉及SNI、CA、客户端证书和ALPN。若Cluster地址是IP但证书只覆盖域名,应正确配置验证主机,不要关闭证书验证。

重试为什么会放大过载

原请求失败后立即在多个Endpoint重试,会增加已经过载的后端流量。应设置重试预算、可重试条件、单次尝试超时和总请求Deadline;写操作还需业务幂等。持续UH和认证错误通常不应高频重试。

熔断器限制哪些资源

Envoy可限制连接、待处理请求、请求和重试等资源。达到阈值时保护上游和自身,但客户端会看到快速失败。应结合正常峰值、Endpoint数量和应用连接池设定,不要仅为消除503无限提高阈值。

主动健康检查会不会误判

检查路径、Host、协议或期望状态设置错误,会让所有Endpoint被判不健康。检查接口还可能依赖数据库等下游,造成级联摘除。健康检查应轻量且代表可服务状态,深度业务监控可另行进行。

Outlier Detection怎样影响流量

连续错误或成功率异常可暂时驱逐Endpoint。参数过于敏感时,小流量节点会频繁被踢出;恢复过快又可能抖动。应观察驱逐原因、最大驱逐比例和基准时长,并用故障注入验证。

关键观测字段

  • Response Code与Flags;
  • Route、Cluster与Upstream Host;
  • 连接、首字节和总耗时;
  • 重试次数与Attempt Count;
  • Endpoint健康与异常驱逐;
  • 熔断溢出和xDS NACK。

排查顺序

  1. 从访问日志确认503由谁生成;
  2. 核对Route和实际Cluster;
  3. 查看Endpoint健康、权重和Locality;
  4. 检查xDS ACK/NACK与配置版本;
  5. 验证DNS、TCP和上游TLS;
  6. 审查重试、熔断和异常驱逐;
  7. 模拟单Endpoint故障并观察恢复。

延伸阅读

若故障表现为多层网关超时,可结合代理407、502、503与504分层排查一起查看。

结论

Envoy 503的关键证据是Response Flags和实际数据面配置。沿Route、Cluster、Endpoint、连接和容量逐层检查,才能避免用增加重试掩盖无健康上游或配置NACK。

常见问题(FAQ)

Envoy的503一定来自上游应用吗?
不一定。Envoy可能因无健康上游、连接失败、熔断或本地策略直接生成503。
UH响应标志通常说明什么?
通常指没有健康上游,但应结合Envoy版本、访问日志、Cluster和Endpoint状态确认。
增加重试次数能解决503吗?
不能解决无健康Endpoint、认证或持续过载,还可能放大上游压力。
xDS控制面正常就代表数据面配置已经生效吗?
不一定。应检查Envoy实际接收的配置、版本、NACK和对应Cluster状态。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600