Envoy
AI生成声明: 本文档由AI辅助生成,旨在提供Envoy代理的完整指南。
🎯 概述
Envoy是一个高性能的云原生边缘和服务代理,由Lyft开发并开源。它被设计为服务网格的数据平面,提供负载均衡、服务发现、健康检查、熔断、限流等功能。
📚 核心概念
架构组件
- Listener: 监听器,接收网络流量
- Filter: 过滤器,处理请求和响应
- Cluster: 集群,上游服务组
- Route: 路由,请求路由规则
过滤器类型
- HTTP过滤器: HTTP协议处理
- Network过滤器: TCP/UDP协议处理
- Access Log过滤器: 访问日志记录
核心功能
- 负载均衡: 多种负载均衡算法
- 服务发现: 支持多种服务发现机制
- 健康检查: 主动和被动健康检查
- 熔断器: 防止级联故障
- 限流: 请求速率限制
🔧 核心功能
负载均衡
- Round Robin: 轮询
- Least Request: 最少请求
- Ring Hash: 一致性哈希
- Maglev: Maglev哈希
- Random: 随机
服务发现
- Static: 静态配置
- DNS: DNS服务发现
- EDS (Endpoint Discovery Service): 端点发现服务
- CDS (Cluster Discovery Service): 集群发现服务
健康检查
- Active Health Check: 主动健康检查
- Passive Health Check: 被动健康检查
- Outlier Detection: 异常检测
🚀 实践要点
基本配置
yaml
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 10000
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: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: service_cluster负载均衡配置
yaml
clusters:
- name: service_cluster
connect_timeout: 0.25s
type: LOGICAL_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: service_cluster
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: service.example.com
port_value: 8080熔断配置
yaml
circuit_breakers:
thresholds:
- priority: DEFAULT
max_connections: 1000
max_pending_requests: 100
max_requests: 500
max_retries: 3📖 学习资源
💡 最佳实践
- 配置管理: 使用动态配置管理
- 监控指标: 启用详细的监控指标
- 访问日志: 配置访问日志用于调试
- 安全配置: 启用TLS和mTLS
- 性能优化: 根据场景调整连接池和超时设置
最后更新时间: 2025-01-20