Envoy 是一个高性能、可扩展的 L7 代理和通信总线,最初由 Lyft 开发,现在已经成为 CNCF(Cloud Native Computing Foundation)的毕业项目之一。Envoy 支持多种协议和语言,可以与多种平台和服务集成,被广泛用于微服务架构中的服务网格、API 网关、负载均衡等场景。
gitee仓库主页:https://gitee.com/mirrors/Envoy
github仓库主页:https://github.com/envoyproxy/envoy
Envoy 的优势
Envoy 具有以下优势:
- 高性能:Envoy 采用 C++ 开发,性能优异,能够处理大量的网络流量。
- 可扩展:Envoy 支持多进程、多核心的模式,可以根据需要进行扩展。
- 功能丰富:Envoy 提供了负载均衡、服务发现、流量管理、熔断限流、安全认证等多种功能。
- 易于使用:Envoy 提供了多种部署方式和配置选项,易于使用和管理。
Envoy 的部署方式
Envoy 可以通过多种方式部署,包括:
- Docker 镜像:Envoy 官方提供了 Docker 镜像,可以直接下载使用。
- 二进制文件:Envoy 官方提供了各个平台的二进制文件,可以直接下载使用。
- 包管理器:Envoy 可以通过包管理器进行安装,例如在 Ubuntu 上可以使用
apt-get install envoy
命令进行安装。
Envoy 的配置方式
Envoy 的配置可以通过两种方式进行:
- 静态配置:将所有配置信息都写入配置文件中,启动 Envoy 时加载配置文件。
- 动态配置:通过 Envoy 的 xDS 协议进行动态配置,Envoy 会定期向 xDS 服务器拉取最新的配置信息。
静态配置
Envoy 的配置文件为 YAML 格式,可以使用文本编辑器进行编辑。配置文件中需要指定以下信息:
- 监听地址:Envoy 监听的地址和端口。
- 上游服务:Envoy 要代理的后端服务。
- 负载均衡策略:Envoy 如何选择上游服务。
- 其他配置:例如超时时间、重试策略、安全配置等。
动态配置
Envoy 的 xDS 协议定义了三种类型的配置:
- LDS:Listener Discovery Service,用于配置 Envoy 的监听地址。
- CDS:Cluster Discovery Service,用于配置 Envoy 的上游服务。
- RDS:Route Discovery Service,用于配置 Envoy 的路由规则。
xDS 服务器可以是 Envoy 自身的 xDS 代理,也可以是第三方实现的 xDS 服务器。
Envoy 的使用案例
Envoy 可以用于多种场景,包括:
- 服务网格:Envoy 可以作为服务网格中的数据平面代理,提供负载均衡、服务发现、流量管理等功能。
- API 网关:Envoy 可以作为 API 网关,提供安全认证、限流、监控等功能。
- 负载均衡:Envoy 可以作为负载均衡器,为多个后端服务提供负载均衡服务。