什么是 Envoy #
Envoy 是一个高性能的 L7 代理和通信总线,专为大型现代服务导向架构设计。它是云原生计算基金会(CNCF)的毕业项目。
核心特性 #
- L3/L4 代理:支持 TCP 和 UDP 代理
- L7 代理:支持 HTTP、HTTP/2、gRPC
- 服务发现:动态配置支持
- 负载均衡:多种负载均衡策略
- 可观测性:集成 Prometheus、StatsD 等
基础配置示例 #
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
codec_type: auto
stat_prefix: http ingress
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: echo_service
http_filters:
- name: envoy.filters.http.router
clusters:
- name: echo_service
connect_timeout: 0.25s
type: STATIC
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: echo_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 8081常用命令 #
# 启动 Envoy
envoy -c config.yaml
# 查看统计信息
curl http://localhost:8081/stats下一步 #
- 深入了解 Envoy 官方文档
- 学习 xDS 动态配置
- 探索 Istio 集成
架构概述 #
Envoy 采用单进程多线程架构,主线程负责协调,控制平面线程处理配置更新,工作线程处理实际请求。
为什么选择 Envoy #
- 高性能:基于 EventLoop 模型
- 可扩展:支持自定义过滤器
- 云原生:Kubernetes 原生支持
- 动态配置:无需重启即可更新配置