已发布服务简介
本文档简要介绍如何使用 Private Service Connect 向服务使用方提供服务。
服务提供方可以借助 Private Service Connect,在您的 VPC 网络中使用内部 IP 地址发布服务。服务使用方可以使用 VPC 网络中的内部 IP 地址访问您已发布的服务。
为了将服务提供给使用方,您需要创建一个或多个专用子网。然后,您可以创建一个引用这些子网的服务连接。服务连接可以具有不同的连接偏好设置。
服务使用方类型
有两种类型的使用方可以连接到 Private Service Connect 服务:
端点基于转发规则:

图 1. 基于转发规则的 Private Service Connect 端点允许服务使用方将流量从使用方的 VPC 网络发送到服务提供方的 VPC 网络中的服务(点击可放大)。
具有使用方 HTTP(S) 控制的端点基于负载均衡器:

图 2. 使用全球外部 HTTP(S) 负载均衡器,具有互联网访问权限的服务使用方可以将流量发送到服务提供方的 VPC 网络中的服务(点击可放大)。
Private Service Connect 服务配置
创建 Private Service Connect 服务时,您可以配置子网、服务连接和连接偏好设置。您还可以选择为服务配置 DNS 网域。以下各部分介绍了这些配置。
NAT 子网
Private Service Connect 服务连接配置了一个或多个 NAT 子网(也称为 Private Service Connect 子网)。使用方 VPC 网络中的数据包使用来源 NAT (SNAT) 进行转换,以便其原始来源 IP 地址转换为提供方 VPC 网络中 NAT 子网的来源 IP 地址。
服务连接可以有多个 NAT 子网。您可以随时将其他 NAT 子网添加到服务连接,而不会中断流量。
一个服务连接可以配置多个 NAT 子网,但一个 NAT 子网不能用于多个服务连接。
Private Service Connect NAT 子网不能用于虚拟机实例或转发规则等资源。子网仅用于为传入的使用方连接的 SNAT 提供 IP 地址。
NAT 子网大小调整
发布服务时,您需要创建 NAT 子网并选择 IP 地址范围。子网的大小决定了可以使用 Private Service Connect 连接的并发使用方 TCP 和 UDP 连接的数量。系统会根据 Private Service Connect 连接的用量和部署使用 NAT 子网中的 IP 地址。如果 NAT 子网中的所有 IP 地址都已使用,则与使用方的 Private Service Connect 端点或后端建立的任何其他 TCP 或 UDP 连接都将失败。因此,请务必适当调整 NAT 子网的大小。
在选择子网大小时,请考虑以下事项:
NAT 子网中有四个预留 IP 地址,因此可用 IP 地址数量为 2(32 - PREFIX_LENGTH) - 4。例如,如果您创建了一个前缀长度为
/24
的 NAT 子网,则 Private Service Connect 可以使用 252 个 IP 地址进行 SNAT。具有 4 个可用 IP 地址的/29
子网是 VPC 网络支持的最小子网大小。如果服务连接是在 2023 年 3 月 1 日或之后创建的,则需遵守以下规则:
系统会使用与服务连接相连的每个 Private Service Connect 端点(基于转发规则或负载均衡器)的 NAT 子网中的一个 IP 地址。
TCP 或 UDP 连接、客户端或使用方 VPC 网络的数量不会影响 NAT 子网中 IP 地址的消耗
例如,如果有两个端点连接到单个服务连接,则系统会使用 NAT 子网中的两个 IP 地址。如果端点数量不变,您可以为此服务连接使用具有 4 个可用 IP 地址的
/29
子网。
如果服务连接是在 2023 年 3 月 1 日之前创建的,则需遵守以下规则:
NAT 子网中使用的 IP 地址数量取决于使用方 VPC 网络中的虚拟机和 Cloud VPN 隧道的数量。每个 NAT IP 地址支持 64,512 个 TCP 来源端口和 64,512 个 UDP 来源端口。TCP 和 UDP 均支持每个 IP 地址的 65,536 个端口,但不包括前 1,024 个已知的(特权)端口。NAT IP 地址分为多个来源端口范围,这些端口在使用方 VPC 网络的所有客户端中分配。
使用方 VPC 网络中的每个虚拟机至少分配有 256 个 NAT 来源端口。如果使用方虚拟机已打开超过 256 个到给定 Private Service Connect 端点或后端的 TCP 或 UDP 连接,则可以将更多来源端口分配给该虚拟机。如果某虚拟机打开了这么多连接,则最多可以为该虚拟机分配一个 NAT IP 地址的 8,192 个来源端口。
使用方 VPC 网络中的每个 Cloud VPN 隧道都分配有 65,536 个来源端口。分配的来源端口数不会随使用量而变化。
例如,具有 252 个可用 IP 地址的
/24
NAT 子网的容量为 252 * 64,512 = 16,257,024 个可用的来源 NAT 端口。如果每个虚拟机打开的 Private Service Connect 端点的 TCP 或 UDP 连接数量少于 256 个(基于转发规则或负载均衡器),则此大小的子网支持具有四个 Cloud VPN 隧道(262,144 个来源 NAT 端口)和最多 62,480 个虚拟机(15,994,880 个来源 NAT 端口)的使用方 VPC 网络。
如果需要,您可以随时将 NAT 子网添加到服务连接,而不会中断流量。
NAT 子网的其他注意事项包括:
UDP 映射空闲超时为 30 秒,且无法配置。
TCP 既定连接空闲超时为 20 分钟,且无法配置。
TCP 临时连接空闲超时为 30 秒,且无法配置。
在重用任何 5 元组(NAT 子网来源 IP 地址和来源端口以及目标协议、IP 地址和目标端口)之前,均存在两分钟的延迟。
Private Service Connect 的 SNAT 配置不支持 IP 片段。
服务连接
服务提供方通过服务连接公开其服务。
为了公开服务,服务提供方会创建引用该服务的负载平衡器转发规则的服务连接。
为了访问服务,服务使用方会创建引用服务连接的端点。
服务连接 URI 的格式为 projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
每个负载均衡器只能由单个服务连接引用。 您不能将多个服务连接配置为使用同一负载均衡器。
连接偏好设置
创建服务时,您可以选择提供该服务的方式。可以选择以下两种方法:
自动接受所有项目的连接 - 任何服务使用方都可以配置一个端点,并自动连接到该服务。
接受选定项目的连接 - 服务使用方可以配置一个端点以连接到服务,而服务提供方会接受或拒绝连接请求。
DNS 配置
如需了解已发布服务的 DNS 配置以及连接到已发布服务的端点,请参阅服务的 DNS 配置。
日志记录
您可以在包含后端虚拟机的子网上启用 VPC 流日志。日志显示 Private Service Connect 子网中后端虚拟机与 IP 地址之间的流。
VPC Service Controls
VPC Service Controls 和 Private Service Connect 彼此兼容。如果部署了 Private Service Connect 端点的 VPC 网络位于 VPC Service Controls 边界内,则 Private Service Connect 端点属于同一边界。任何通过 Private Service Connect 端点访问的 VPC Service Controls 支持的服务都受该 VPC Service Controls 边界的政策约束。
创建 Private Service Connect 端点时,使用方和提供方项目之间会进行控制平面 API 调用,以建立 Private Service Connect 连接。在位于同一 VPC Service Controls 边界内的使用方和提供方项目之间建立 Private Service Connect 连接不需要使用出站流量政策进行明确授权。通过 Private Service Connect 端点与 VPC Service Controls 支持的服务进行的通信受 VPC Service Controls 边界保护。
价格
如需了解 Private Service Connect 的价格,请参阅 VPC 价格页面。
配额
您可以创建用于访问已发布服务的 Private Service Connect 端点的数量由 PSC Internal LB Forwarding Rules
配额控制。如需了解详情,请参阅配额。
本地访问
Private Service Connect 服务通过 Private Service Connect 端点提供。这些端点可以从支持的已连接本地主机进行访问。如需了解详情,请参阅从本地主机访问端点。
限制
数据包镜像无法镜像 Private Service Connect 发布的服务流量的数据包。
具有使用方 HTTP(S) 服务控制的 Private Service Connect 端点不会出现在连接的客户端列表中。
如果您在共享 VPC 宿主项目中创建 Private Service Connect 子网,并且想要在服务项目中创建服务连接,则必须使用 Google Cloud CLI 或 API 来创建服务连接。
如需创建指向用于内部协议转发的转发规则的服务连接,您必须使用 Google Cloud CLI 或 API。
如需了解问题和解决方法,请参阅已知问题。