服务发现

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

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

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

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

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

服务发现

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

例如:

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

使用此配置时,当应用(在虚拟机上)发送 HTTP 请求时, payments.example.com,则 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 中的 Sidecar 代理流量拦截

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

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

后续步骤