1

谷歌云网络深度解析:流量指挥官如何为服务网格提供全局负载均衡

 2 years ago
source link: http://zablog.me/2019/05/16/2019-05-16/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

谷歌云网络深度解析:流量指挥官如何为服务网格提供全局负载均衡

2019年5月16日

原文:https://cloud.google.com/blog/products/networking/traffic-director-global-traffic-management-for-open-service-mesh
作者:Anna Berenberg & Arunkumar Jayaraman April 18, 2019

服务网格为不同队伍用不同语言开发的独立微服务提供了基础。服务网格将开发和运维进行解耦,开发者再也不用在应用代码中维护一套网络路由规则了。所有的流量路由规则都被Envoy等服务代理所接管,由服务网格控制面提供动态的流量管控。

Traffic_Director_for_service_mesh.max-1200x1200.png

流量指挥官让服务网格和Envoy更容易在生产环境中使用。 —— Matt Klein, Envoy的创始人

流量指挥官是谷歌云全方位管控的服务网格流量控制面。流量指挥官对于虚拟机和容器都有效,它使用开源的xDS接口来与数据面的服务代理进行交互。

流量指挥官的能力

  1. 全局负载均衡
  2. 中心化健康检查
  3. 基于Load的自动扩缩容
  4. 内嵌的弹性(高可用)
  5. 强大的流量控制能力

全局负载均衡

你们很多人肯定都使用过谷歌面向互联网服务的全局负载均衡。流量指挥官把全局负载均衡带到了服务网格的微服务场景下。通过全局负载均衡,我们可以为你在GCP上全球部署的服务实例赋能。流量指挥官提供了一套智能的通信方案,是的客户端自动把流量发往容量有空余的最近服务节点。
这可以大大优化服务上下游之间的流量分布,为请求提供最短的RTT时间。

全局负载均衡

如果距离客户端最近的服务节点挂掉了,那么流量指挥官会智能无缝地把流量切换到最近的健康节点。

切换到最近的健康节点

中心化健康监测

大规模部署的服务网格会产生大量的健康检查的流量,因为每一个代理都要去检查下游的所有服务的健康状态。当服务网格的体量增长的时候,健康检查就称为了一个 n2 的问题(假设 client 的数量和 server 的数量级都是n)。这会成为服务伸缩的一个重大障碍。

流量指挥官通过中心化的服务健康检查解决了这个问题。它使用一个全局分布式的弹性系统监控器去监控所有的服务实例。接下来,流量指挥官使用EDS API,把健康检查的结果分发到全球所有的代理。

基于Load的自动扩缩容

流量指挥官可以基于Load,支持自动扩容和缩容。Load信号是由proxy上报给它的。流量指挥官通知计算引擎扩/缩容到具体的大小。

当计算引擎扩容成功之前,流量指挥官会临时把流量打到其他可用的实例上,如果需要的话甚至会把流量临时打到其他的区域。一旦自动扩容成功,流量指挥官会把流量重新定位到最近的区域上。

内嵌弹性(高可用)

流量指挥官是全面部署在GCP上的,你不用担心它的启动时间、生命周期管理、扩缩容、可用性等任何问题。流量指挥官的架构是全球分部署弹性部署的,它与Google自身的2C业务使用同样的系统。
流量指挥官可以提供 99.99% GA(Generally Available) 的 SLA(Service Level Aggreement)。

流量控制能力

流量指挥官让你可以在不修改应用代码的情况下控制流量
你可以创建一个自定义的流量控制规则或者策略

  • HTTP匹配:指定参数,包括host,path以及header
  • HTTP行为:在匹配成功之后,指定需要进行的行为,包括重定向、重写、header变换、镜像、故障注入等等
  • 每个服务的流量策略:可以设置负载均衡算法、熔断参数等其他服务级别的配置
  • 配置过滤:把配置推送到客户端的部分子集的能力

使用上述路由规则和流量策略,你可以轻松地使得流量控制能力足够强大。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK