将 Cloud Service Mesh 与互联网网络端点组搭配使用

您可以将 Cloud Service Mesh 配置为使用 INTERNET_FQDN_PORT 类型的互联网网络端点组 (NEG)。外部服务使用其在 NEG 中的完全限定域名 (FQDN) 和端口号来表示。NEG 只能包含一个 FQDN:Port 对,并且后端服务只能包含一个此类型的 NEG。使用底层 Virtual Private Cloud (VPC) 网络的名称解析顺序解析 FQDN。

使用 FQDN 后端扩展 Cloud Service Mesh 服务网格

Cloud Service Mesh 服务网格可以将流量路由到 可通过混合连接(包括命名的本地连接)访问, 多云端和互联网服务远程服务由其 FQDN 引用。

通过混合连接,使用 FQDN 后端将 Cloud Service Mesh 服务网格扩展到本地或多云位置。
将 Cloud Service Mesh 服务网格扩展到本地 或多云位置(通过混合连接使用 FQDN 后端) (点击可放大)

您还可以将流量路由到可通过公共互联网访问的服务。

使用 FQDN 后端将 Cloud Service Mesh 服务网格扩展到互联网服务。
使用 FQDN 后端将 Cloud Service Mesh 服务网格扩展到互联网服务(点击可放大)

Google Cloud 资源和架构

本部分介绍使用互联网 NEG 配置 Cloud Service Mesh 时需要使用的资源和架构。

INTERNET_FQDN_PORT 网络端点组

如需将流量路由到其 FQDN 引用的外部服务,请使用 INTERNET_FQDN_PORT 类型的全局互联网 NEG。NEG 包含服务的 FQDN 及其端口号。Cloud Service Mesh 通过 使用 xDS 配置将 FQDN 连接到 Envoy 代理。

Cloud Service Mesh 本身并不保证名称解析和可达性 远程端点。FQDN 必须能够按照 Envoy 代理所挂接的 VPC 网络的名称解析顺序进行解析,并且解析出的端点必须可从 Envoy 代理访问。

健康检查

INTERNET_FQDN_PORT 类型的网络端点的健康检查行为与用于 Cloud Load Balancing 和 Cloud Service Mesh 的其他类型网络端点的健康检查行为不同。大多数其他网络端点类型都使用 Google Cloud 的集中式健康检查系统,但用于多云端环境中的端点(INTERNET_FQDN_PORTNON_GCP_PRIVATE_IP_PORT)的 NEG 使用 Envoy 的分布式健康检查机制。

Envoy 支持以下健康检查协议:

  • HTTP
  • HTTPS
  • HTTP/2
  • TCP

您可以使用 Compute Engine API 配置健康检查。

DNS 注意事项

关于 DNS,有两类不同的注意事项:

  • 用于托管外部服务资源记录的 DNS 服务器。
  • Envoy 代理配置为使用 DNS 进行连接管理的模式。

Cloud DNS 服务器

您可以创建 Cloud DNS 代管式专用区域,以在 Google Cloud 项目中托管 DNS 记录。您还可以使用 Cloud DNS 的其他功能(例如转发区域)从本地 DNS 服务器提取记录。

Envoy DNS 模式

Envoy DNS 模式(也称为服务发现)指定 Envoy 代理如何使用 DNS 记录来管理出站连接。Cloud Service Mesh 将 Envoy 配置为使用严格 DNS 模式。严格 DNS 模式支持负载均衡到所有已解析端点。它遵循健康检查状态,并排空与不健康或不再使用 DNS 进行解析的端点的连接。您无法更改此模式。

如需详细了解服务发现,请参阅 Envoy 文档。

连接和路由

如果您要将流量路由到专用服务,则需要满足以下有关底层网络连接的要求:

  • VPC 网络和本地数据中心或第三方公有云之间的混合连接是使用 Cloud VPN 或 Cloud Interconnect 建立的。
  • VPC 防火墙规则和路由已正确配置,以便建立从 Envoy 到专用服务端点以及(如果适用)本地 DNS 服务器的双向可达性。
  • 要成功实现地区高可用性故障切换,必须启用全球动态路由。如需了解详情,请参阅动态路由模式

如果要将流量路由到可通过互联网访问的外部服务,则需要满足以下要求:

  • VPC 网络中的客户端虚拟机实例必须具有外部 IP 地址或 Cloud NAT。
  • 必须存在默认路由,以向互联网发送出站流量。

在上述两种情况下,流量都使用 VPC 网络的路由。

安全

FQDN 后端与 Cloud Service Mesh 的安全功能 和 API。在与外部服务的出站连接上,您可以使用客户端 TLS 政策在 SNI 标头中配置 FQDN。

限制和注意事项

  • Cloud Service Mesh 不支持 INTERNET_IP_PORT 类型的互联网 NEG。
  • FQDN 后端需要 Envoy 1.15.0 或更高版本。
  • 使用 Google Cloud CLI 或 REST API 配置 Cloud Service Mesh。不支持使用 Google Cloud Console 进行端到端配置。
  • FQDN 后端仅支持 Envoy。不支持无代理 gRPC。
  • 当您将 NEG 类型 INTERNET_FQDN_PORT 与 Cloud Service Mesh 搭配使用时,远程端点的健康检查使用 Envoy 的分布式健康检查机制完成。每当添加新的远程端点时,所有 Envoy 代理都会开始对它独立进行健康检查。

    同样,当新的 Envoy 代理添加到网格时,它会开始检查所有远程端点。因此,根据部署中的 Envoy 代理和远程端点的数量,生成的健康检查网格可能会在远程端点上产生大量网络流量和异常负载。您可以选择不配置健康检查。

  • Google Cloud 控制台中不显示 FQDN 后端的健康检查状态。

  • 不支持使用 UDP、SSL 和 gRPC 协议进行健康检查。

  • 不支持以下健康检查选项:

    • HTTP/HTTP2/HTTPS 健康检查
      • --proxy-header
      • --response
    • TCP 健康检查
      • --proxy-header
      • --request
      • --response

后续步骤