使用Envoy做反向代理服务器

公众号:yunops

Envoy 代理

一、定义:

Envoy 是一款现代化的,高性能,小体积的边缘及服务代理,可用于容器应用的反代,相比 nginx 的优势:

二、 架构与基本术语:

参考:https://jimmysong.io/posts/envoy-archiecture-and-terminology/
【示例】使用 Envoy 作为前端代理:https://jimmysong.io/posts/envoy-as-front-proxy/
【示例】用 Envoy+Docker 打造轻量级 Sidecar 代理:https://osswangxining.github.io/envoy/

三、配置说明:

Envoy 中的配置包括两大类:listenner 配置和 cluster 配置:
【Listener】:envoy 的路由规则,在  edge envoy 中表示流量进出 mesh 时候的规则相当于 kubernetes 中的 ingress;在 service envoy 中表示定义 host 组及 host 的监听地址;

【Cluster】:Service envoy 的集合,服务 envoy 是跟每个 serivce 实例一起运行的,应用程序无感知的进程外工具,在 kubernetes 中会与应用容器以 sidecar 形式运行在同一个 pod 中;

四、实践/参考:

【实践】cluster.hosts 动态配置参考:https://juejin.im/post/5ad6fb06518825364001f619
【实践】为 Envoy 开启 TLS :https://mp.weixin.qq.com/s/Bk5iq1dUoOJI4q-Ffil8rg
              为 Envoy 启用证书验证:https://www.yangcs.net/posts/setting-up-ssl-in-envoy/
【实践】一套应用:

  1. 在你的笔记本上运行 Envoy:https://www.yangcs.net/posts/run-envoy-on-your-laptop/
  2. Envoy 的 HTTP 路由解析:https://www.yangcs.net/posts/routing-basics/
  3. 通过 Envoy 实现增量部署:https://www.yangcs.net/posts/incremental-deploys/
  4. 为 Envoy 启用证书验证:https://www.yangcs.net/posts/setting-up-ssl-in-envoy/
  5. 将服务发现与 Envoy 集成(为 Envoy 配置 CDS 和 EDS):https://www.yangcs.net/posts/integrating-service-discovery-with-envoy/
  6. 通过控制平面提供路由:https://www.yangcs.net/posts/routing-with-a-control-plane/
  7. Envoy 熔断器的原理和使用:https://www.yangcs.net/posts/circuit-breaking/

五、问题:

edge envoy 时怎么发现  Service envoy 的 cluster 的(下游主机是怎么通过 Envoy 与上游主机交互的)?
ps:内置一个 dns 服务器?