Skip to main content

Envoy 入门指南

·379 words·1 min
Author
lyonmu

什么是 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 采用单进程多线程架构,主线程负责协调,控制平面线程处理配置更新,工作线程处理实际请求。

为什么选择 Envoy
#

  1. 高性能:基于 EventLoop 模型
  2. 可扩展:支持自定义过滤器
  3. 云原生:Kubernetes 原生支持
  4. 动态配置:无需重启即可更新配置