背景
我来自 HAproxy 背景,最近有很多关于“服务网格”架构的炒作。长话短说,我开始学习“特使”和“领事”。
我理解 Envoy 是一个代理软件,但使用 sidecar 来抽象输入输出网络,并将“xDS”作为数据平面作为数据平面以获取事实来源(集群、路由、过滤器等)。Consul 是 Service Discovery、Segmentation 等。它也抽象网络并有 Data Plane 但 Consul 不能像 Envoy 那样做复杂的负载均衡、过滤路由。
作为独立的,我可以理解它们是如何工作并设置它们的,因为文档相对较好。但是,如果我想集成 Envoy 和 Consul,它很快就会变得令人头疼,因为 Envoy 和 Consul 的文档都缺乏具体的集成、用例和最佳实践。
示意图
考虑以下简单的基础架构设计:
传说:
- CS:领事服务器
- CA:领事代理
- MA:微服务 A
- MB:微服务 B
- MC:微服务 C
- EF:特使正面/边缘代理
问题
以下是我的问题:
- 在多实例微服务的情况下,Consul(作为独立的)将随机循环。使用 Envoy & Consul 集成,consul 如何处理多实例微服务?哪个软件做负载均衡?
- Consul 有 Consul Server 来存储其数据,但是,Envoy 似乎没有“Envoy Server”来存储其数据,那么它的数据在哪里存储和分布在多个实例中呢?
- Envoy 集群(Envoy 前端代理的逻辑组而不是服务集群)呢?领导怎么选的?
- 正如我上面提到的,Consul 和 Envoy 分别在每台机器上都有他们的 sidecar/agent。我读到在集成时,Consul 会注入 Envoy Sidecar,但没有关于它如何工作的更多信息?
- 如果 Envoy 使用 Consul Server 作为“xDS”,例如,如果我想添加一个高级过滤器,以便对于某个 URL 段,它必须转发到某个实例怎么办?
- 如果 Envoy 使用 Consul Server 作为“xDS”,如果我有另一台机器和服务(出于某种原因)不受 Consul Server 管理,该怎么办。如何配置 Envoy 为该机器和服务添加过滤器、集群等?
谢谢你,我很兴奋,我希望这个帖子也能对其他人有所帮助。