已发布服务简介
本文档简要介绍如何使用 Private Service Connect 向服务使用方提供服务。
作为服务提供方,您可以使用 Private Service Connect,通过您的 VPC 网络中的内部 IP 地址发布服务。服务使用方可以使用其 VPC 网络中的内部 IP 地址访问您发布的服务。
为了将服务提供给使用方,您需要创建一个或多个专用子网。然后,您可以创建一个引用这些子网的服务连接。服务连接可以具有不同的连接偏好设置。
服务使用方类型
有两种类型的使用方可以连接到 Private Service Connect 服务:
端点基于转发规则。
端点可让服务使用方将流量从使用方的 VPC 网络发送到服务提供方的 VPC 网络中的服务(点击可放大)。
后端基于负载均衡器。
使用全球外部应用负载均衡器的后端允许具有互联网访问权限的服务使用方将流量发送到服务提供方的 VPC 网络中的服务(点击可放大)。
NAT 子网
Private Service Connect 服务连接配置了一个或多个 NAT 子网(也称为 Private Service Connect 子网)。来自使用方 VPC 网络的数据包使用来源 NAT (SNAT) 进行转换,以便其原始的来源 IP 地址转换为来自提供方 VPC 网络中的 NAT 子网的来源 IP 地址。
服务连接可以有多个 NAT 子网。您可以随时将 NAT 子网添加到服务连接,这不会中断流量。
虽然一个服务连接可以配置多个 NAT 子网,但一个 NAT 子网不能用于多个服务连接。
Private Service Connect NAT 子网不能用于虚拟机 (VM) 实例或转发规则等资源。子网仅用于为传入的使用方连接的 SNAT 提供 IP 地址。
NAT 子网大小调整
子网大小决定了可以连接到您的服务的使用方数量。如果 NAT 子网中的所有 IP 地址都已使用,则任何额外的 Private Service Connect 连接都会失败。请考虑以下事项:
与服务连接相连的每个端点或后端占用 NAT 子网中的一个 IP 地址。
TCP 或 UDP 连接、客户端或使用方 VPC 网络的数量不影响 NAT 子网中 IP 地址的消耗。
如果使用方使用连接传播,则对于每个端点,系统会为连接所传播到的每个 VPC spoke 使用一个额外的 IP 地址。
您可以通过配置传播连接数量限制来控制创建的传播连接数量。
在估算端点和后端所需的 IP 地址数量时,请考虑任何多租户服务或使用 Private Service Connect 多点访问权限的使用方。
NAT 子网监控
为了帮助确保 Private Service Connect 连接不会因 NAT 子网中的 IP 地址不可用而失败,我们建议您执行以下操作:
- 监控
private_service_connect/producer/used_nat_ip_addresses服务连接指标。确保使用的 NAT IP 地址数量不会超过服务连接的 NAT 子网的容量。 - 监控服务连接的连接状态。如果连接的状态为需要注意,则表示连接的 NAT 子网中可能不再有任何可用的 IP 地址。
- 对于多租户服务,您可以使用连接限制,以帮助确保单个使用方不会耗尽服务连接的 NAT 子网的容量。
如果需要,您可以随时将 NAT 子网添加到服务连接,这不会中断流量。
NAT 规范
在设计要发布的服务时,请考虑 Private Service Connect NAT 的以下特性:
UDP 映射空闲超时为 30 秒,且无法配置。
TCP 既定连接空闲超时为 20 分钟,且无法配置。
为避免客户端连接超时,请执行以下操作之一:
确保所有连接的持续时间都不到 20 分钟。
确保某些流量的发送频率高于每 20 分钟一次。您可以在应用中使用检测信号或 keepalive,或使用 TCP keepalive。例如,您可以在区域内部应用负载均衡器或区域内部代理网络负载均衡器的目标代理中配置 keepalive。
TCP 临时连接空闲超时为 30 秒,且无法配置。
在重用任何 5 元组(NAT 子网源 IP 地址和源端口以及目标协议、IP 地址和目标端口)之前,均存在两分钟的延迟。
Private Service Connect 的 SNAT 不支持 IP 片段。
连接数上限
单个提供方虚拟机最多可以接受来自单个 Private Service Connect 使用方(端点或后端)的 64,512 个 TCP 连接和 64,512 个 UDP 连接。Private Service Connect 端点可以跨所有提供方后端聚合接收的 TCP 和 UDP 连接总数没有限制。使用方虚拟机在发起与 Private Service Connect 端点的 TCP 或 UDP 连接时,可以使用所有 65,536 个来源端口。所有网络地址转换都在提供方主机上本地进行,不需要集中分配的 NAT 端口池。
服务连接
服务提供方通过服务连接公开其服务。
- 为了公开服务,服务提供方会创建引用目标服务的服务连接。目标服务可以是以下各项之一:
- 负载均衡器的转发规则
- Secure Web Proxy实例
服务连接 URI 的格式为 projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
一个服务连接只能有一个目标服务。不过,多个服务连接可以共享同一目标服务。
借助服务连接,您可以控制自己所发布服务的访问权限、查看连接以及配置连接限制。如需了解详情,请参阅控制所发布服务的访问权限简介。
连接状态
服务连接具有描述其连接的状态的连接状态。如需了解详情,请参阅连接状态。
DNS 配置
如需了解已发布服务的 DNS 配置以及连接到已发布服务的端点,请参阅服务的 DNS 配置。
IP 版本转换
对于连接到已发布服务(服务连接)的 Private Service Connect 端点,使用方转发规则的 IP 地址的 IP 版本决定了端点的 IP 版本以及从端点发出的流量。IP 地址可以来自仅 IPv4 的子网、仅 IPv6 的子网或双栈子网。端点的 IP 版本可以是 IPv4 或 IPv6,但不能同时是这两者。
对于已发布服务,服务连接的 IP 版本由关联的转发规则或安全 Web 代理实例的 IP 地址决定。此 IP 地址必须与服务连接的 NAT 子网的栈类型兼容。NAT 子网可以是仅 IPv4 的子网、仅 IPv6 的子网或双栈子网。如果 NAT 子网是双栈子网,则系统会使用 IPv4 或 IPv6 地址范围,但不会同时使用两者。
Private Service Connect 不支持将 IPv4 端点与 IPv6 服务连接相连接。在这种情况下,端点创建会失败,并显示以下错误消息:
Private Service Connect forwarding rule with an IPv4 address
cannot target an IPv6 service attachment.
支持的配置可以使用以下组合:
- IPv4 端点到 IPv4 服务连接
- IPv6 端点到 IPv6 服务连接
-
IPv6 端点到 IPv4 服务连接
在此配置中,Private Service Connect 会自动在两个 IP 版本之间进行转换。
对于 Private Service Connect 后端与服务连接之间的连接,使用方转发规则和提供方转发规则都必须使用 IPv4。
功能和兼容性
在下表中,对勾标记表示某功能受支持,否定符号表示某功能不受支持。
端点支持
本部分汇总了使用端点访问已发布服务时可供使用方和提供方使用的配置选项。
使用方配置
下表根据目标提供方类型总结了访问已发布服务的端点支持的配置选项和功能。
| 目标提供方 | 使用方配置(端点) | ||||||
|---|---|---|---|---|---|---|---|
| 使用方全球访问权限 | 混合访问权限 | 自动 DNS 配置 (仅限 IPv4) |
VPC 网络对等互连访问权限 | Network Connectivity Center 连接传播(仅限 IPv4) | IPv4 端点支持的目标服务 | IPv6 端点支持的目标服务 | |
| 跨区域内部应用负载均衡器 |
|
|
|||||
| 内部直通式网络负载均衡器 | 仅当在负载均衡器上启用全球访问权限时(已知问题) |
|
|
||||
| 内部协议转发(目标实例) | 仅当在提供方转发规则上启用全球访问权限时(已知问题) |
|
|
||||
| 端口映射服务 | 仅当在提供方转发规则上启用全球访问权限时 |
|
|
||||
| 区域级内部应用负载均衡器 | 仅当创建服务连接之前在负载均衡器上启用全球访问权限时 |
|
|
||||
| 区域级内部代理网络负载均衡器 | 仅当创建服务连接之前在负载均衡器上启用全球访问权限时 |
|
|
||||
| 安全 Web 代理 |
|
|
|||||
提供方配置
下表总结了端点访问的已发布服务支持的配置选项和功能。
| 提供方类型 | 提供方配置(已发布服务) | |||
|---|---|---|---|---|
| 支持的提供方后端 | PROXY 协议(仅限 TCP 流量) | IP 版本 | ||
| 跨区域内部应用负载均衡器 |
|
|
||
| 内部直通式网络负载均衡器 |
|
|
||
| 内部协议转发(目标实例) |
|
|
||
| 端口映射服务 |
|
|
||
| 区域级内部应用负载均衡器 |
|
|
||
| 区域级内部代理网络负载均衡器 |
|
|
||
| 安全 Web 代理 |
|
|
||
不同的负载均衡器支持不同的端口配置:有些负载均衡器支持单个端口,有些支持一系列端口,有些支持所有端口。如需了解详情,请参阅端口规范。
共享 VPC
Service Project Admin 可以在共享 VPC 服务项目中创建连接到共享 VPC 网络中的资源的服务连接。
配置与常规服务连接的配置相同,但以下几点除外:
- 提供方负载均衡器的转发规则与来自共享 VPC 网络的 IP 地址相关联。转发规则的子网必须与服务项目共享。
- 服务连接使用来自共享 VPC 网络的 Private Service Connect 子网。此子网必须与服务项目共享。
日志记录
您可以在包含后端虚拟机的子网上启用 VPC 流日志。日志显示 Private Service Connect 子网中后端虚拟机与 IP 地址之间的流。
VPC Service Controls
VPC Service Controls 和 Private Service Connect 彼此兼容。如果部署了 Private Service Connect 端点的 VPC 网络位于 VPC Service Controls 边界内,则端点属于同一边界。任何通过端点访问的 VPC Service Controls 支持的服务都受该 VPC Service Controls 边界的政策约束。
创建端点时,使用方和提供方项目之间会进行控制平面 API 调用,以建立 Private Service Connect 连接。在位于同一 VPC Service Controls 边界内的使用方和提供方项目之间建立 Private Service Connect 连接不需要使用出站流量政策进行明确授权。通过端点与 VPC Service Controls 支持的服务进行的通信受 VPC Service Controls 边界保护。
查看使用方连接信息
默认情况下,Private Service Connect 将使用方的来源 IP 地址转换为服务提供方 VPC 网络中某个 Private Service Connect 子网内的地址。如果您要查看使用方的原始来源 IP 地址,可以在发布服务时启用 PROXY 协议。Private Service Connect 支持 PROXY 协议版本 2。
并非所有服务都支持 PROXY 协议。如需了解详情,请参阅功能和兼容性。
如果启用了 PROXY 协议,则可以通过 PROXY 协议标头获取使用方的来源 IP 地址和 PSC 连接 ID (pscConnectionId)。
PROXY 协议标头的格式取决于使用方端点的 IP 版本。如果服务连接的负载均衡器具有 IPv6 地址,则使用方可以同时连接到 IPv4 和 IPv6 地址。将应用配置为接收和读取要接收的 IP 流量版本的 PROXY 协议标头。
为服务连接启用 PROXY 协议时,更改仅会应用于新连接。现有连接不包含 PROXY 协议标头。
如果启用了 PROXY 协议,请查看有关后端 Web 服务器软件的文档,了解如何解析和处理客户端连接 TCP 载荷中的传入 PROXY 协议标头。如果在服务连接上启用了 PROXY 协议,但后端 Web 服务器未配置为处理 PROXY 协议标头,则 Web 请求的格式可能不正确。如果请求格式不正确,则服务器无法解读该请求。
Private Service Connect 连接 ID (pscConnectionId) 以类型-长度-值 (TLV) 格式编码在 PROXY 协议标头中。
| 字段 | 字段长度 | 字段值 |
|---|---|---|
| 类型 | 1 个字节 | 0xE0 (PP2_TYPE_GCP) |
| 长度 | 2 个字节 | 0x8(8 个字节) |
| 值 | 8 个字节 | 按网络顺序显示的 8 字节 pscConnectionId |
您可以通过使用方转发规则或提供方服务连接查看 8 字节 pscConnectionId 值。
对于给定时间点的所有活跃连接,pscConnectionId 值在全球范围内都是唯一的。但是,随着时间的推移,在以下情况下可能会重复使用 pscConnectionId:
在给定的 VPC 网络中,如果您删除端点(转发规则),并使用相同的 IP 地址创建一个新端点,则可能会使用同一
pscConnectionId值。如果您删除包含端点(转发规则)的 VPC 网络,则在等待七天后,用于这些端点的
pscConnectionId值可能会用于另一个 VPC 网络中的其他端点。
您可以使用 pscConnectionId 值进行调试,以及跟踪数据包的来源。
您可以从提供方服务连接获取单独的 16 字节 Private Service Connect 服务连接 ID (pscServiceAttachmentId)。pscServiceAttachmentId 值是用于标识 Private Service Connect 服务连接的全局唯一 ID。您可以使用 pscServiceAttachmentId 值来获得可见性及执行调试。此值不会包含在 PROXY 协议标头中。
配额
可访问提供方 VPC 网络的任何使用方发起的 Private Service Connect 端点和传播连接的总数由 PSC ILB consumer forwarding rules per producer VPC network 配额 控制。
即使关联的服务连接被删除或配置为拒绝连接,端点也会计入此配额,直到被删除为止。即使 Network Connectivity Center hub 上停用了连接传播或传播连接的 spoke 被删除,传播连接也会计入此配额,直到关联的端点被删除为止。
本地访问
Private Service Connect 服务通过端点提供。这些端点可以从支持的已连接本地主机进行访问。如需了解详情,请参阅从本地主机访问端点。
限制
已发布服务具有以下限制:
- 不支持使用
多个协议(协议设置为
L3_DEFAULT)配置的负载均衡器。 - 数据包镜像无法镜像 Private Service Connect 发布的服务流量的数据包。
- 您必须使用 Google Cloud CLI 或 API 创建指向用于内部协议转发的转发规则的服务连接。
如需了解问题和解决方法,请参阅已知问题。