使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

服务发现

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

Traffic Director 会监控这些服务,以便与其客户端共享最新信息。因此,当您的某个应用使用其 Traffic Director 客户端(例如 Envoy Sidecar 代理)发送请求时,它可以利用关于您服务的最新信息。

在 Traffic Director 环境中,客户端是在虚拟机或容器上运行的应用代码,它编制发送到服务器的请求。服务器是接收此类请求的应用代码。Traffic Director 客户端为 Envoy、gRPC 或其他 xDS 客户端,连接到 Traffic Director 并且是数据层面的一部分。

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

  1. 它会检查请求,并将请求与后端服务(您在部署期间配置的资源)相匹配。
  2. 匹配请求后,Envoy 或 gRPC 会选择一个后端或端点并将请求定向到该后端或端点。

服务发现

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

例如:

  • 您有一个运行应用的虚拟机。此虚拟机具有连接到 Traffic Director 并代表应用处理出站请求的 Envoy Sidecar 代理。
  • 您配置了名为 payments 的后端服务。此后端服务有两个网络端点组 (NEG) 后端,它们指向运行 payments 服务代码的各个容器实例。
  • 您配置了具有转发规则(示例:IP 地址 0.0.0.0 和端口 80)、目标代理和网址映射(示例:指向 payments 服务的主机名 payments.example.com)的路由规则映射。

使用此配置时,如果您的应用(在虚拟机上)向端口 80 上的 payments.example.com 发送 HTTP 请求,则 Traffic Director 客户端知道这是目标为 payments 服务的请求。

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

端点发现

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

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

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

在上面的示例中,Traffic Director 会为服务 shopping-cart 返回 MIG-1 中的两个运行状况良好的端点以及 MIG-2 中的三个运行状况良好的端点。除了向 MIG 或 NEG 添加端点并设置 Traffic Director 之外,您无需进行任何其他配置即可通过 Traffic Director 启用服务发现。

Traffic Director 中的 Sidecar 代理流量拦截

Traffic Director 支持 Sidecar 代理模型。在此模型中,当应用将流量发送到其目标时,iptables 会拦截流量并将其重定向到运行应用的主机上的 Sidecar 代理。Sidecar 代理决定如何对流量进行负载平衡,然后将流量发送到其目标。

在下图中(假设已正确配置 Traffic Director),Envoy 是 Sidecar 代理。Sidecar 代理与应用在相同的主机上运行。

名为 Web 的示例服务配置在虚拟 IP 地址 (VIP) 10.0.0.1:80 上,Traffic Director 可在该地址上发现该服务并对其进行负载平衡。Traffic Director 通过转发规则配置(提供 VIP 和端口)发现设置。服务 Web 的后端已配置且正常运行,但它们位于图中 Compute Engine 虚拟机主机的外部。

Traffic Director 决定从主机到服务 Web 的流量的最佳后端是 192.168.0.1:80

Traffic Director 主机网络。
Traffic Director 主机网络(点击可放大)

图中的流量流动路径如下:

  1. 应用将流量发送到服务 Web,该服务解析为 IP 地址 10.0.0.1:80
  2. 主机上配置了 netfilter,因此前往 10.0.0.1:80 的流量会重定向到 10.0.0.1:15001
  3. 流量重定向到 Envoy 代理的拦截端口 127.0.0.1:15001
  4. 127.0.0.1:15001 上的 Envoy 代理拦截侦听器接收流量并执行对请求的原始目标 (10.0.0.1:80) 的查询。查询结果是 192.168.0.1:8080 被选为最佳后端(由 Traffic Director 编程)。
  5. Envoy 通过网络与 192.168.0.1:8080 建立连接,并代理应用和此后端之间的 HTTP 流量,直到连接终止。

具有自动 Envoy 部署的流量拦截选项

如果将自动 Envoy 部署与虚拟机配合使用,则 Traffic Director 具有其他流量拦截选项。您可以使用这些选项执行以下操作:

  • 拦截所有流量
  • 排除特定端口、端口范围、IP 地址或 CIDR 范围

如果您使用的是新版服务路由 API MeshGateway 资源,则所有流量都会被自动拦截。

如需了解详情,请参阅为 Compute Engine 虚拟机进行自动 Envoy 部署的设置选项

后续步骤