服务发现

Cloud Service Mesh 提供服务和端点发现。借助这些功能,您可以对将代码作为服务端点运行的虚拟机 (VM) 实例和容器实例进行分组。

Cloud Service Mesh 会监控这些服务,以便与其客户端共享最新的健康检查信息。因此,当您的某个应用使用其 Cloud Service Mesh 客户端(例如 Envoy 边车代理或无代理 gRPC 应用)发送请求时,它可以利用有关服务的最新信息。

在 Cloud Service Mesh 上下文中,客户端是在虚拟机或容器上运行的应用代码,它会编制发送到服务器的请求。服务器是接收此类请求的应用代码。Cloud Service Mesh 客户端是 Envoy、gRPC 或其他连接到 Cloud Service Mesh 的 xDS 客户端,是数据平面的一部分。

在数据层面中,Envoy 或 gRPC 执行以下操作:

  1. 它会检查请求,并将请求与后端服务(您在部署期间配置的资源)相匹配。
  2. 匹配请求后,Envoy 或 gRPC 会应用之前配置的所有流量或安全政策,选择一个后端或端点,并将请求定向到该后端或端点。

服务发现

Cloud Service Mesh 提供服务发现功能。配置 Cloud Service Mesh 时,您可以创建后端服务。您还可以定义路由规则,以指定出站请求(由应用代码发送并由 Cloud Service Mesh 客户端处理的请求)与特定服务的匹配方式。当 Cloud Service Mesh 客户端处理与规则匹配的请求时,它可以选择应接收请求的服务。

例如:

  • 您有一个运行应用的虚拟机。该虚拟机具有连接到 Cloud Service Mesh 的 Envoy 边车代理,并代表应用处理出站请求。
  • 您配置了名为 payments 的后端服务。此后端服务有两个网络端点组 (NEG) 后端,它们指向运行 payments 服务代码的各个容器实例。
  • 您配置了 Mesh 资源,用于定义称为 sidecar-mesh 的网格。
  • 您配置了 Route 资源,用于为后端服务 payments 和主机名 helloworld-gce 定义流量目的地。

使用此配置时,如果您的应用(在虚拟机上)向 payments.example.com 发送 HTTP 请求,则 Cloud Service Mesh 客户端会识别出此请求目标是 payments 服务的请求。

如果您将 Cloud Service Mesh 与无代理 gRPC 服务结合使用,则服务发现的工作原理类似。但是,作为 Cloud Service Mesh 客户端的 gRPC 库仅会获取有关为其指定 xDS 解析器的服务的信息。默认情况下,Envoy 会获取在 Envoy 引导文件中指定的 Virtual Private Cloud (VPC) 网络上配置的所有服务的信息。

端点发现

服务发现可让客户端了解您的服务。端点发现则使客户端可以了解运行您代码的实例。

创建服务时,您还需要指定该服务的后端。这些后端是代管式实例组 (MIG) 中的虚拟机或 NEG 中的容器。Cloud Service Mesh 会监控这些 MIG 和 NEG,以便了解实例和端点何时创建和移除。

Cloud Service Mesh 会持续与其客户端共享这些服务的最新信息。此信息可让客户端避免将流量发送到不再存在的端点。它还能让客户端了解新端点并利用这些端点提供的额外容量。

除了将端点添加到 MIG 或 NEG 中并设置 Cloud Service Mesh 外,您无需进行任何其他配置即可启用 Cloud Service Mesh 的服务发现功能。

Cloud Service Mesh 中的边车代理流量拦截

Cloud Service Mesh 支持边车代理模型。在此模型中,当应用将流量发送到其目的地时,流量会被拦截并重定向到应用运行所在主机上的边车代理的端口。Sidecar 代理决定如何对流量进行负载平衡,然后将流量发送到其目标。

借助 Cloud Service Mesh 和服务路由 API,系统会自动管理流量拦截。

后续步骤