Traffic Director 特性

Traffic Director 可帮助您在全局服务网格中运行微服务。网格负责处理微服务的网络,因此您可以编写不需要了解底层网络复杂性的应用代码。应用逻辑与网络逻辑之间的这种分离可让您提高开发速度,提高服务可用性,并为贵组织引入现代 DevOps 做法。

服务网格由应用、与 xDS 兼容的数据平面(通常是开源 Envoy 代理)和作为网格控制层面的 Traffic Director 组成。

如需在服务网格中使用 Traffic Director 部署无代理 gRPC 服务,可以使用受支持的 gRPC 版本。

本文档汇总了 Traffic Director 中提供的功能。 值“N/A(不适用)”意味着某项功能不受支持,因为它与特定的 Traffic Director 配置不兼容。 空白(没有对勾标记或“不适用”)表示不支持该功能,但未来可能会支持。

服务网格的全代管式控制平面

Traffic Director 是在 Google Cloud 中运行的代管式、高可用性控制平面服务。您无需安装或更新控制层面,因此可以在服务网格基础架构中管理一个较少的组件。

支持的 xDS 版本

Traffic Director 使用开源 xDS 控制平面 API 来配置 Envoy 和无代理 gRPC 客户端。这些客户端代表您的应用代码提供 Traffic Director 的应用网络功能。

版本 支持
xDS v2 正式版。某些功能(包括服务安全性)仅在 xDS v3 中可用。 对 xDS v2 的支持将于 2024 年 6 月 20 日停止。
xDS v3 正式版

运行网格服务的平台

您可以在以下平台上运行应用,并将其应用到通过 Traffic Director 配置的全局服务网格中。

功能 受支持
Compute Engine 虚拟机 (VM) 实例
Google Kubernetes Engine (GKE) 容器实例
Compute Engine 容器实例上的 Kubernetes

服务管理

Traffic Director 配置的服务在以下方面具有如下优势:

  • 服务发现。当网格中的应用要访问其他应用时,可以通过名称调用该服务。

  • 后端自动扩缩。运行应用代码的实例会根据您的需求动态扩缩。

  • 自动端点注册。创建新实例或删除实例时,这些实例会自动与您的服务关联。

功能 受支持
自动部署 Compute Engine 虚拟机的 Sidecar 代理
自动注入 GKE Pod 的 Sidecar 代理
基于主机名的服务发现
基于 CPU 利用率的实例自动扩缩
根据流量负载/服务容量自动扩缩实例
(仅限代管式实例组(或 MIG)中的 Compute Engine 虚拟机)
基于可配置健康检查的实例自动修复
Compute Engine 虚拟机的自动端点注册
GKE 容器实例/Pod 的自动注册端点
将 Service Directory 中的服务绑定到后端服务
用于以编程方式添加或移除端点的 API

用于数据平面流量的端点

微服务使用数据平面访问网格内外的服务。借助 Traffic Director,您可以将应用逻辑与网络逻辑分离开来,这样您的应用只需向数据平面发送请求(例如,与应用一起运行的边车代理)。然后,数据平面将请求发送到正确的端点。

在下表中,描述为位于网格中的应用是使用 Traffic Director 代管数据平面与其他服务通信的应用。这些应用可以将流量发送到网格内服务以及网格外的服务。

功能 支持
网格中基于虚拟机的应用
网格中基于容器的应用
网格外基于虚拟机的应用
网格外基于容器的应用
在本地数据中心内运行的应用
多云端环境中的应用
Service Directory 中的端点

数据平面拓扑

在服务网格模型中,您的应用使用数据平面进行通信。此数据平面通常包含与应用一起部署的 Sidecar 代理。Traffic Director 高度灵活,并且支持可满足您服务网络需求的数据平面拓扑。

功能 受支持
与应用一起运行的 Sidecar 代理
无代理 gRPC 应用
网格中两个应用之间的中间代理
网格边界处的边缘代理
跨多个 GKE 集群和/或多个地区中 Compute Engine 虚拟机的网格

API 驱动的编程式配置

我们的 REST API 和信息中心提供了所有配置项,可让您在大规模团队之间自动执行更改,并通过编程的方式管理更改。某些功能无法使用 Google Cloud 控制台进行配置。

功能 受支持
REST API
Google Cloud Console
Google Cloud CLI
Cloud Deployment Manager
Terraform 支持

无代理 gRPC 应用的语言支持

您可以使用以下编程语言,创建可与 Traffic Director 搭配使用的无代理 gRPC 应用。GitHub 中列出了 gRPC 的各个实现和版本所支持的服务网格功能。

语言 受支持
Java
Go
C++
Python
Ruby
PHP
节点

请求协议

当应用使用 Traffic Director 配置的数据平面进行通信时,应用可以使用以下请求协议。

功能 受支持
HTTP
HTTPS
HTTP/2
TCP
gRPC

服务安全

Traffic Director 支持以下配置的服务安全性。

功能 Envoy gRPC
将 TLS 与 GKE Pod 搭配使用
将 mTLS 与 GKE pod 搭配使用
访问权限控制和授权

路由和流量管理

Traffic Director 支持高级流量管理政策,您可以在流量通过数据平面时对其进行引导、拆分和调整。

某些高级流量管理功能不适用于无代理 gRPC 服务,并且高级流量管理功能都不适用于目标 TCP 代理资源。

当 Traffic Director 处理 TCP(非 HTTP(S))流量时,不支持以下功能。

功能 支持配置为处理 HTTP(S) 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
HTTP/第 7 层请求路由,基于以下项的后缀/前缀/完整/正则表达式匹配:
• 主机名
• 路径
• 标头
• 方法 不适用
• Cookie
• 请求参数 不适用
故障注入
可配置超时 不适用
请参阅流时长上限
重试
每次重试超时除外
重定向
URI 重写
请求/响应标头转换
流量拆分
流量镜像
离群值检测
熔断
仅限 maxRequests
流时长上限

负载平衡

您可以配置高级负载平衡方法和算法,以在服务、后端组(实例组或网络端点组)以及单个后端或端点级别进行负载平衡。如需了解详情,请参阅后端服务概览

功能 支持配置为处理 HTTP(S)、TCP 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
基于区域(首选具有正常后端容量的最近区域)的后端(实例组或网络端点组)选择
使用基于速率(每秒请求数)的平衡模式的后端选择。
TCP(非 HTTP(S))流量不支持此功能。
基于平衡模式(基于利用率)的后端选择(仅 Compute Engine 实例组中的虚拟机)
每个后端可配置的最大容量(仅限 Compute Engine 和 GKE)

基于可配置负载均衡政策的后端选择。

如需了解每个内置政策,请参阅 localityLbPolicy

  • 使用单个内置政策;从以下选项中进行选择:

    • 轮循
    • 最低请求数量
    • 环哈希
    • 随机
    • 原始目标位置
    • Maglev

服务弹性

Traffic Director 支持可帮助您提高服务弹性的功能。例如,您可以使用 Traffic Director 来实现蓝/绿部署模式Canary 版测试或熔断(EnvoygRPC)。

功能 支持配置为处理 HTTP(S)、TCP 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
基于加权流量拆分的服务选择
熔断
仅限 maxRequests

服务和后端容量管理

Traffic Director 会考虑服务和后端容量,以确保在服务后端之间以最佳方式分配流量。Traffic Director 已与 Google Cloud 基础架构集成,因此可以自动收集容量数据。您也可以手动设置和配置容量。

功能 受支持
根据 CPU 自动跟踪代管式实例组 (MIG) 中虚拟机实例的后端容量和利用率。
根据请求速率,为 MIG 和网络端点组 (NEG) 中的虚拟机和容器实例手动设置容量和替换项。
手动排空容量。

故障切换

企业工作负载通常依赖于高可用性部署来确保服务正常运行时间。Traffic Director 通过启用多区域/多地区冗余来支持这些类型的部署。

功能 受支持
自动故障切换到同一区域内具有正常后端容量的其他可用区。
自动故障切换到具有正常后端容量的最近区域。

健康检查

Traffic Director 支持通过集中式健康检查来确定后端健康状况。但是,如果后端服务包含 Service Directory 服务的服务绑定,则无法设置健康检查。

如需了解参考信息,请参阅健康检查概览

功能 支持
gRPC 健康检查
HTTP 健康检查
HTTPS 健康检查
HTTP/2 健康检查
TCP 健康检查

可配置的健康检查:

  • 端口
  • 检查间隔时间
  • 超时
  • 运行状况正常和不正常的阈值
可配置的请求路径(HTTP、HTTPS、HTTP/2)
可配置的请求字符串或路径(TCP 或 SSL)
可配置的预期响应字符串

可观测性

可观测性工具提供监控、调试和性能信息,以帮助您了解服务网格。以下功能要么默认提供,要么是在数据平面中配置的。您的应用代码无需执行任何特殊操作即可生成此可观测性数据。

服务运行状况信息中心适用于无代理 gRPC 服务,但您无法配置数据平面日志记录和跟踪。Traffic Director 无法配置 gRPC 应用的日志记录和跟踪。您可以按照开源网站上提供的问题排查部分或 gRPC 指南中的说明启用日志记录与跟踪。例如,如需在无代理 gRPC 服务中启用指标收集和跟踪,您可以使用 Opencensus

特征 代理支持 无代理 gRPC 服务支持
服务运行状况信息中心
数据平面日志记录
数据平面跟踪记录

会话亲和性

客户端与服务器的通信通常涉及多个连续请求。在这种情况下,将连续的客户端请求路由到同一后端或服务器会很有帮助。Traffic Director 提供可配置的选项,以便尽力将来自特定客户端的请求发送到同一后端(只要该后端运行状况良好且有足够的容量)。如需了解详情,请参阅后端服务概览

功能 支持使用 HTTP(S) 代理 支持使用 TCP 代理 无代理 gRPC 服务支持
客户端 IP 地址
HTTP Cookie 不适用
HTTP 标头 不适用
生成的 Cookie(在第一次请求时设置客户端 Cookie) 不适用

网络拓扑

Traffic Director 支持常见的 Google Cloud 网络拓扑。

功能 支持
Google Cloud 项目中的单个网络
Google Cloud 项目中的多个网格
Google Cloud 项目中的多个网关
共享 VPC(跨多个 Google Cloud 项目共享的单个网络)

如需详细了解 Traffic Director 如何支持共享 VPC,请参阅限制

法规遵从

Traffic Director 符合以下标准。

合规性认证 支持
HIPAA
ISO 27001、ISO 27017、ISO 27018
SOC1、SOC2、SOC3
PCI DSS

后续步骤