Skip to content
作者:daily5am创建:-更新:-
字数:预计阅读: 分钟访问量:--

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

📖 学习资源

💡 最佳实践

  1. 配置管理: 使用动态配置管理
  2. 监控指标: 启用详细的监控指标
  3. 访问日志: 配置访问日志用于调试
  4. 安全配置: 启用TLS和mTLS
  5. 性能优化: 根据场景调整连接池和超时设置

最后更新时间: 2025-01-20