Traffic Director 的目标代理

配置 Traffic Director 时,您配置的某个资源是目标代理。

在 Traffic Director 的环境中,目标代理有两个主要用途:

  1. 它们具有特定的类型。使用此类型时,Traffic Director 客户端知道在打开与服务关联的后端/端点时使用的协议。

  2. 它们可与其他资源(例如转发规则和网址映射)结合使用来创建路由规则映射。路由规则映射提供额外的功能(例如路由规则),具体取决于目标代理的类型。无效选择通常会在界面中隐藏或被 API 拒绝。

目标代理类型对应于不同的请求协议

Traffic Director 会根据您配置的目标代理类型为其客户端生成不同的配置。配置其他目标代理类型时,客户端将使用特定的请求协议。

  • 目标 HTTP 代理:Traffic Director 的客户端将启动 HTTP 连接
  • 目标 gRPC 代理:Traffic Director 的客户端将启动 gRPC 连接
  • 目标 TCP 代理:Traffic Director 的客户端将启动 TCP 连接

请注意,您并非只能选择一种类型。例如,您的应用可能希望在解析一些服务时使用 HTTP,但在处理其他服务时使用 TCP。对于此类使用场景,您需要创建目标 HTTP 代理和目标 TCP 代理。

路由规则映射中的有效资源组合

为避免配置错误,Traffic Director 仅允许创建如下所示的路由规则映射:

  • 转发规则 -> 全局目标 HTTP 代理 -> 网址映射 ->(一项或多项后端服务)
  • 转发规则 -> 全局目标 gRPC 代理 -> 网址映射 ->(一项或多项后端服务)
  • 转发规则 -> 全球目标 TCP 代理 ->(一项后端服务)

请注意,上面的列表中未显示运行状况检查和后端组。

如果您使用 Google Cloud Console 设置目标 HTTP 代理,则系统会在路由规则映射配置中隐式设置目标代理。请注意,控制台目前不支持 TCP 代理设置。

如果您使用的是 gcloud 命令行界面或 API,则需要明确配置目标代理。

使用目标 HTTP 代理时的流量处理

配置基于 HTTP 的服务时,每个服务实例通常会一并部署 Envoy 代理。此 Envoy 代理由 Traffic Director 配置,属于服务网格数据平面,并按如下方式处理流量。

Envoy 代理接收出站请求,并将请求的目标 IP 和端口与引用目标 HTTP 代理的每个转发规则中配置的 IP 和端口进行比较。如果找到匹配项,则 Envoy 代理将根据目标 HTTP 代理的相应网址映射评估请求。

使用目标 TCP 代理时的流量处理

配置基于 TCP 的服务时,每个服务实例通常会一并部署 Envoy 代理。此 Envoy 代理由 Traffic Director 配置,属于服务网格数据平面,并按如下方式处理流量。

Envoy 代理接收出站请求,并将请求的目标 IP 和端口与引用目标 TCP 代理的每个转发规则中配置的 IP 和端口进行比较。每条转发规则都会将 TCP 流量路由到目标代理,后者指向默认后端服务,该后端服务会指定运行状况检查并确定相应的后端。

使用目标 gRPC 代理时的流量处理

配置基于 gRPC 的服务时,您的服务实例通常不会一并部署 Envoy 代理。相反,gRPC 库由 Traffic Director 配置,属于服务网格数据平面,并按如下方式处理流量。

gRPC 库将 URI 中指定的 hostname[:port] 与目标 gRPC 代理引用的所有网址映射中的主机规则进行比较。如果找到匹配项,gRPC 库将根据与匹配主机规则关联的路径规则评估请求。

为网关和中间代理配置流量拦截

通常,您在服务网格中具备以下各项:

  • 每个服务实例都有一个专用的 Envoy Sidecar 代理或 gRPC 库。
    • 如果您使用的是 Envoy,则服务实例已配置为拦截出站请求并将其重定向到 Envoy 代理。
  • Envoy 代理或 gRPC 库会处理出站请求。

但是,您也可以使用 Traffic Director 来配置网关或中间代理。在此设置中,Envoy 代理与您的服务实例是分开的。它会侦听端口上的入站请求,并在接收请求时进行处理。

对于此类设置,您无需配置拦截或重定向操作。您只需在目标 HTTP 代理上启用 --proxy-bind 标志即可。此操作会配置入站流量拦截,并使 Envoy 代理侦听 IP 地址和端口(在转发规则中配置)上的入站请求。

上文已经提过,转发规则引用目标代理。因此,如果您在目标 HTTP 代理上启用 --proxy-bind,则代理会侦听引用此目标 HTTP 代理的转发规则的 IP 地址和端口。

注意事项:

  • 如果您为服务网格使用 Traffic Director,则无需使用 --proxy-bind,因为 Sidecar 代理通常用来接收和转发出站流量。
  • --proxy-bind 标志不适用于目标 gRPC 代理。

目标代理资源

要添加、删除、列出和获取有关目标代理的信息,可以使用 REST API 或 gcloud SDK。

但是,您可以使用以下 gcloud 命令获取有关目标代理的信息:

gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies ] list
gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies ] describe target-proxy-name

API

如需了解通过 REST API 使用目标代理时可用的属性和方法,请参阅以下页面:

gcloud SDK

对于 gcloud 命令行工具,请参阅以下页面:

后续步骤

有关详情,请参阅: