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) | ✔ | ✔ |
基于可配置负载均衡政策的后端选择。 如需了解每个内置政策,请参阅 |
|
服务弹性
Traffic Director 支持可帮助您提高服务弹性的功能。例如,您可以使用 Traffic Director 来实现蓝/绿部署模式、Canary 版测试或熔断(Envoy、gRPC)。
功能 | 支持配置为处理 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 | ✔ |
后续步骤
- 如需详细了解 Traffic Director,请参阅 Traffic Director 概览。
- 如需查找无代理 gRPC 服务的使用场景和架构模式,请参阅无代理 gRPC 服务概览。