跳到主要内容

Envoy 代理

Envoy 核心概念

Envoy 是 Istio 数据平面的核心组件,一个高性能的 L4/L7 代理。

概念说明
Listener监听端口,接收下游连接
Filter请求处理链(认证、限流、路由等)
Route匹配规则,决定请求发往哪个 Cluster
Cluster上游服务集群(一组 Endpoint)
Endpoint具体的后端服务实例 IP:Port

xDS 动态配置

Envoy 通过 xDS API 从控制平面(Istiod)获取配置,无需重启:

API全称功能
LDSListener Discovery监听器配置
RDSRoute Discovery路由规则
CDSCluster Discovery服务集群
EDSEndpoint Discovery后端实例列表
SDSSecret DiscoveryTLS 证书

静态配置示例

envoy.yaml
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 8080
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: backend_service
http_filters:
- name: envoy.filters.http.router
clusters:
- name: backend_service
connect_timeout: 5s
type: STRICT_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: backend_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: backend
port_value: 3000

常见面试问题

Q1: Envoy 相比 Nginx 有什么优势?

答案

特性EnvoyNginx
动态配置xDS API 热更新reload 重载
可观测性内置丰富 Metrics需要额外模块
L7 协议HTTP/2、gRPC 原生支持gRPC 需额外配置
服务发现内置 EDS需要配合 Consul 等
定位服务间通信代理Web 服务器/反向代理

Envoy 更适合微服务间的东西向流量,Nginx 更适合南北向入口流量。

相关链接