2. Envoy网关架构概览:数据面与控制面、xDS协议与核心配置模型
在构建基于 Envoy 的网关 SLO 预算体系之前,必须理解 Envoy 的架构分层与配置驱动模型。Envoy 并非单体代理,而是由 数据面(Data Plane) 与 控制面(Control Plane) 组成的解耦系统。两者通过 xDS 协议 通信,实现动态、热更新的流量治理。
2.1 数据面与控制面架构
Envoy 数据面负责实际流量转发、负载均衡、健康检查与指标采集;控制面则负责将路由规则、集群端点、监听器配置等下发至数据面。这种分离设计使得 SLO 预算的配置变更无需重启代理,直接通过控制面热更新。
架构要点: 数据面是无状态的,所有配置状态由控制面管理。SLO 预算的阈值、窗口、聚合规则均属于控制面配置,通过 xDS 下发至数据面执行。
2.2 xDS 协议:动态配置的核心
xDS(Discovery Service)是 Envoy 控制面与数据面之间的标准通信协议族。每个 xDS 资源类型对应 Envoy 配置模型中的一个核心组件。SRE 在制定 SLO 预算时,需要理解哪些配置通过哪些 xDS 通道下发。
| xDS 类型 | 全称 | 对应配置模型 | SLO 预算关联 |
|---|---|---|---|
| LDS | Listener Discovery Service | 监听器(Listener) | 监听端口、TLS 配置、过滤器链 |
| RDS | Route Discovery Service | 路由(Route) | 请求匹配规则、超时、重试策略 |
| CDS | Cluster Discovery Service | 集群(Cluster) | 负载均衡、熔断、连接池、健康检查 |
| EDS | Endpoint Discovery Service | 端点(Endpoint) | 上游实例列表、权重、区域 |
| SDS | Secret Discovery Service | 证书/密钥 | TLS 证书轮换 |
SRE 实践提示: 在 SLO 预算复核中,RDS 和 CDS 是最常调整的 xDS 资源。例如,调整重试次数或超时时间会直接影响请求成功率,进而影响 SLO 预算消耗。务必在控制面中记录每次 xDS 变更的版本号,便于回滚与审计。
2.3 Listener / Cluster / Route 配置模型
Envoy 的配置模型围绕三个核心资源构建:Listener(监听器)、Cluster(集群)和 Route(路由)。理解这三者的关系是配置 SLO 预算的基础。
- Listener: 定义 Envoy 监听的端口、协议(HTTP/HTTPS/TCP)、过滤器链。每个 Listener 可以关联多个过滤器,例如 HTTP 连接管理器(HCM)用于处理七层流量。
- Route: 定义请求的匹配规则(域名、路径、Header)与转发目标。Route 可以指定超时、重试、镜像、流量分割等策略,这些策略直接影响 SLO 指标。
- Cluster: 定义上游服务集群的端点列表、负载均衡算法(轮询、最少请求、一致性哈希)、熔断阈值、健康检查参数。Cluster 是 SLO 预算中“错误预算”消耗的主要来源。
2.4 配置模型与 SLO 预算的映射
在 SLO 预算复核中,Envoy 的配置模型直接决定了哪些指标可以被采集、哪些策略会消耗错误预算。以下表格总结了核心配置项与 SLO 指标的映射关系:
| 配置资源 | 关键配置项 | 影响的 SLO 指标 | 预算消耗场景 |
|---|---|---|---|
| Listener | 监听端口、TLS 证书、连接超时 | 连接成功率、TLS 握手延迟 | 证书过期导致连接失败,消耗错误预算 |
| Route | 超时时间、重试次数、请求镜像 | 请求成功率、延迟 P99 | 超时过短导致请求失败,重试放大流量 |
| Cluster | 熔断阈值、健康检查频率、连接池大小 | 上游错误率、熔断触发次数 | 熔断开启后拒绝请求,消耗错误预算 |
| Endpoint | 端点权重、健康状态 | 负载均衡分布、端点可用性 | 端点异常导致流量倾斜,增加延迟 |
常见误区: 很多团队在配置 SLO 预算时只关注 Route 层的超时和重试,忽略了 Cluster 层的熔断和健康检查。实际上,熔断触发时 Envoy 会直接返回 503,这是错误预算消耗最快的场景之一。务必在 Cluster 层设置合理的熔断阈值,并与 SLO 预算窗口对齐。