路由规则映射概览

本文档仅适用于使用负载均衡 API 的 Cloud Service Mesh。我们强烈建议您使用服务路由 API

路由规则映射包含以下内容:

为 Cloud Service Mesh 创建和配置这些资源时,Cloud Service Mesh 使用这些值创建发送到您的数据平面的配置,包括 xDS 客户端(如 Envoy 代理和无代理 gRPC 应用)。随后,数据平面会根据此配置处理流量。

转发规则引用目标代理,并具有 IP 地址和端口。对于 Cloud Service Mesh 部署,必须将转发规则的负载平衡方案设置为 INTERNAL_SELF_MANAGED。目标代理又会引用网址映射。这三种资源相结合可形成路由规则映射。

引用目标 gRPC 代理并将 validateForProxyless 字段设置为 TRUE 的转发规则必须将其 IP 地址设置为 0.0.0.0validateForProxyless 设置为 TRUE 时,系统会拒绝指定除 0.0.0.0 以外的 IP 地址的配置。

路由规则映射定义流量从客户端传递到服务网格内的服务器的方式。

支持的目标代理类型

Cloud Service Mesh 支持以下目标代理类型:

  • 目标 HTTP 代理,可在客户端和服务器发送或接收 HTTP 或 HTTP/2 流量时进行配置。
  • 目标 HTTPS 代理,可在客户端和服务器发送或接收 HTTPS 流量时进行配置。使用 Envoy 代理设置服务安全时,此字段是必需的。
  • 目标 TCP 代理 - 您在客户端和服务器发送或接收 TCP 流量时配置。
  • 目标 gRPC 代理,可在客户端和服务器发送或接收 gRPC 流量时进行配置。目标 gRPC 代理包含字段 validateForProxyless,当您部署无代理的 gRPC 服务时,此字段会设置为 TRUE

使用 Envoy Sidecar 代理进行流量路由

当您将 Cloud Service Mesh 与 Envoy Sidecar 代理搭配使用时,客户端请求的路由方式如下:

  • 网络堆栈会拦截请求并将其重定向到您的 Envoy Sidecar 代理。
  • Envoy Sidecar 代理会查看请求的 IP 地址和端口。
  • 根据将负载平衡方案设置为 INTERNAL_SELF_MANAGED 的任何转发规则中指定的 IP 地址和端口检查 IP 地址和端口对。
  • 如果找到具有匹配 IP 地址和端口的转发规则,Envoy 将查看转发规则引用的目标 HTTP 代理或目标 gRPC 代理。
  • Envoy 检查目标代理引用的网址映射。
  • Envoy 根据网址映射中指定的规则路由请求。

如需了解如何使用目标 TCP 代理路由流量,请参阅使用 Cloud Service Mesh 路由 TCP 流量

使用无代理 gRPC 应用的流量路由

对于无代理 gRPC 应用,此行为有所不同。配置 gRPC 客户端时,您可指定客户端需要联系的服务的目标 URI。此 URI 使用 xds 名称解析器架构和 hostname:port 格式,例如 xds:///example.hostname:8080

当无代理 gRPC 客户端连接到 Cloud Service Mesh 时,Cloud Service Mesh 会向其发送与服务对应的信息,如下所示:

  • Cloud Service Mesh 查找负载平衡架构设置为 INTERNAL_SELF_MANAGED 的转发规则,以查找端口与目标 URI 中指定的端口相匹配的转发规则。
  • Cloud Service Mesh 会为每个转发规则查找目标 gRPC 代理或目标 HTTP 代理。
  • Cloud Service Mesh 会找到这些目标 gRPC 代理或目标 HTTP 代理所引用的网址映射。
  • Cloud Service Mesh 会检查网址映射中的主机规则(这些规则也采用 hostname[:port] 格式),并查找匹配项。
  • 找到匹配项之后,Cloud Service Mesh 会向 gRPC 客户端返回路由规则和服务信息。

如果找到多个匹配项,则行为未定义,可能会导致行为无法预测。当同时满足以下两个条件时,通常会发生这种情况:

  • 多个网址映射使用相同的主机名。
  • 采用负载平衡方案 INTERNAL_SELF_MANAGED 的多个转发规则指定相同的端口。

因此,我们建议您不要为由指定相同端口的转发规则引用的多个网址映射使用相同的主机名。

后续步骤