领事和特使一体化

问题描述 投票:2回答:1

背景资料


我是HAproxy出身,最近围绕着 "Service Mesh "架构炒得沸沸扬扬。长话短说,我开始学习 "Envoy "和 "Consul"。

我了解到,Envoy是一个代理软件,但使用sidecar来抽象in-out网络,以 "xDS "作为Data Plane作为真相来源(Cluster、Route、Filter等)。Consul是Service Discovery,Segmentation等。它也是抽象网络,也有Data Plane,但Consul不能像Envoy那样做复杂的Load Balancing、过滤路由。

作为Standalone,我可以理解它们的工作原理,也可以进行设置,因为文档比较好。但是如果我想整合Envoy和Consul的话,很快就会变得很头疼,因为Envoy和Consul的文档都缺乏具体的整合、用例和最佳实践。

示意图


考虑以下简单的基础设施设计。

enter image description here

传奇:

  • CS: 领事服务器
  • CA:领事代理
  • MA:微服务A
  • MB:微服务B
  • MC:微服务C
  • EF: Envoy正面边缘代理

疑问


以下是我的问题。

  1. 在多实例微服务的情况下,Consul(stand-alone)会随机循环。有了Envoy&ConsulIntegration,consul如何处理多实例微服务,哪个软件做负载均衡?
  2. Consul有Consul Server来存储数据,但是,Envoy好像没有 "Envoy Server "来存储数据,那么它的数据在哪里存储,分布在多个实例中?
  3. Envoy Cluster(Envoy Front Facing Proxy的逻辑组而非服务集群)呢?领导如何选举?
  4. 正如我上面提到的,Consul和Envoy分别在每台机器上有自己的sidecaragent。我读到,当整合后,Consulinjects Envoy Sidecar,但没有进一步的信息如何工作?
  5. 如果Envoy使用Consul Server作为 "xDS",如果我想添加一个高级过滤器,使某些URL段必须转发到某个实例,该怎么办?
  6. 如果Envoy使用Consul Server作为 "xDS",如果我有另一台机器和服务(由于某些原因)不在Consul Server的管理范围内,怎么办?如何配置Envoy为该机器和服务添加过滤器、集群等?

谢谢你,我很激动,希望这个帖子也能对其他人有所帮助。

consul envoyproxy mesh-network
1个回答
0
投票

很抱歉,我的回复晚了。我想迟到总比没有好。 :-)

  1. 如果你只是使用Consul进行服务发现,直接通过DNS查询,那么Consul会随机返回给客户端的IP地址。如果你是通过HTTP接口查询,则由客户端根据响应中返回的主机来实现负载均衡策略。当你使用Consul服务mesh时,负载均衡功能将完全由Envoy处理。
  2. Consul是一个xDS服务器。数据存储在Consul内,并分发到集群内的代理。请参阅 连接架构 文档中获取更多信息。
  3. Envoy集群类似于后端服务器池。代理包含每个上游服务的集群。在每个集群中,有Endpoints,代表上游服务的各个代理实例。
  4. 当Envoy sidecar部署在Kubernetes上时,Consul可以注入它。它通过Kubernetes的 变异录取网钩. 见 在Kubernetes上连接Sidecar。安装和配置 了解更多信息。
  5. Consul支持高级第7层路由功能。您可以配置一个 service-router 通过URL路径、头文件、查询参数等将请求路由到不同的目的地。
  6. Consul在1.8版本中有一个即将推出的功能,叫做终止网关,可以实现这个用例。请参阅GitHub问题 "Connect.Gateways"。终止(外部服务)网关" (hashicorpconsul#6357)了解更多信息。
© www.soinside.com 2019 - 2024. All rights reserved.