创建端口映射服务
本页面介绍服务提供方如何发布使用 Private Service Connect 端口映射的服务。
借助 Private Service Connect 端口映射,使用方客户端可以通过单个 Private Service Connect 端点与特定提供方虚拟机上的特定服务端口进行私密通信。
准备工作
- 您必须在项目中启用 Compute Engine API。
- 您必须为要连接到端口映射 NEG 的每个网络端点创建虚拟机。所有虚拟机都必须位于同一区域。
- 请参阅已发布服务简介。
- 请参阅 Private Service Connect 端口映射简介。
所需的角色
如需获得为使用 Private Service Connect 端口映射发布服务做好准备所需的权限,请让管理员为您授予提供方项目的以下 IAM 角色:
-
Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin) -
Compute Network Admin (
roles/compute.networkAdmin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建和发布端口映射服务
端口映射服务具有与内部直通式网络负载均衡器类似的配置,但流量不会进行负载均衡。如需创建和发布端口映射服务,请执行以下操作:
- 创建端口映射 NEG
- 将网络端点添加到端口映射 NEG
- 创建端口映射服务
- 发布端口映射服务
创建端口映射 NEG
端口映射网络 NEG 是网络端点类型为 GCE_VM_IP_PORTMAP 的区域级 NEG。端口映射 NEG 的类型一经创建便无法更改。
创建端口映射 NEG 时,您需要选择子网。与端口映射 NEG 关联的网络端点必须具有处于此子网中的主要网络接口。
控制台
在 Google Cloud 控制台中,前往网络端点组页面。
点击创建网络端点组。
输入名称。
点击网络端点组类型,然后选择端口映射 NEG(区域级)。
选择区域。
选择网络。
选择子网。
点击创建。
gcloud
使用 network-endpoints-groups create 命令。
gcloud compute network-endpoint-groups create NEG \
--region=REGION \
--network=NETWORK \
--subnet=SUBNET \
--network-endpoint-type=GCE_VM_IP_PORTMAP
替换以下内容:
NEG:端口映射 NEG 的名称REGION:端口映射 NEG 的区域NETWORK:端口映射 NEG 的 VPC 网络SUBNET:端口映射 NEG 的子网
API
向 regionNetworkEndpointGroups.insert 方法发送 POST 请求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups
{
"name": "NEG",
"networkEndpointType": "GCE_VM_IP_PORTMAP",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}
替换以下内容:
PROJECT_ID:端口映射 NEG 的项目 IDREGION:端口映射 NEG 的区域NEG:端口映射 NEG 的名称NETWORK:端口映射 NEG 的 VPC 网络SUBNET:端口映射 NEG 的子网
将网络端点添加到端口映射 NEG
创建一个或多个具有端口映射的网络端点,并将其连接到端口映射 NEG。
端口映射 NEG 的网络端点是可用区级的,并且必须满足以下要求:
- 每个网络端点都引用一个 Compute Engine 虚拟机,其主要网络接口与端口映射 NEG 位于同一子网中。
- 每个网络端点都引用一个唯一的客户端目标端口。
每个网络端点都必须引用服务端口和虚拟机的唯一组合。
控制台
在 Google Cloud 控制台中,前往网络端点组页面。
点击您要更新的端口映射 NEG 的名称。
点击添加网络端点。
点击虚拟机实例,然后选择虚拟机。
点击 VM port 1(虚拟机端口 1),然后输入服务端口。
点击 Client port 1(客户端端口 1),然后输入客户端目标端口。
对于要添加的每个其他网络端点,请点击添加网络端点,然后输入网络端点详细信息。
点击创建。
gcloud
使用 network-endpoint-groups update 命令。 为您要连接的每个网络端点添加 --add-endpoint 标志。
gcloud compute network-endpoint-groups update NEG \
--region=REGION \
--add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \
--add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT
替换以下内容:
NEG:端口映射 NEG 的名称REGION:端口映射 NEG 的区域CLIENT_DESTINATION_PORT_1:第一个网络端点的客户端目标端口PROJECT_ID:提供方项目的项目 IDZONE_1:第一个网络端点的可用区VM_1_NAME:第一个网络端点的目标虚拟机的名称VM_1_PORT:第一个网络端点的服务端口CLIENT_DESTINATION_PORT_2:第二个网络端点的客户端目标端口ZONE_2:第二个网络端点的可用区VM_2_NAME:第二个网络端点的目标虚拟机的名称VM_2_PORT:第二个网络端点的服务端口
API
向 regionNetworkEndpointGroups.attachNetworkEndpoints 方法发送 POST 请求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints
{
"networkEndpoints": [
{
"clientDestinationPort":CLIENT_DESTINATION_PORT_1,
"instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME",
"port": SERVICE_PORT_1
},
{
"clientDestinationPort": CLIENT_DESTINATION_PORT_2,
"instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME",
"port": SERVICE_PORT_2
}
]
}
替换以下内容:
PROJECT_ID:提供方项目的项目 IDREGION:端口映射 NEG 的区域NEG:端口映射 NEG 的名称CLIENT_DESTINATION_PORT_1:第一个网络端点的客户端目标端口ZONE_1:第一个网络端点的可用区VM_1_NAME:第一个网络端点的目标虚拟机的名称SERVICE_PORT_1:第一个网络端点的服务端口CLIENT_DESTINATION_PORT_2:第二个网络端点的客户端目标端口ZONE_2:第二个网络端点的可用区VM_2_NAME:第二个网络端点的目标虚拟机的名称SERVICE_PORT_2:第二个网络端点的服务端口
创建端口映射服务
如需创建端口映射服务,请完成以下步骤。
添加与后端服务关联的端口映射 NEG 后,您便无法更改该 NEG。但是,您可以更新端口映射 NEG 的网络端点。
转发规则一经创建便无法更新其连接。如果您需要连接到其他后端服务,请删除转发规则,然后创建新转发规则。
控制台
开始配置
在 Google Cloud 控制台中,前往负载均衡页面。
- 点击创建负载均衡器。
- 对于负载均衡器的类型,选择网络负载均衡器 (TCP/UDP/SSL),然后点击下一步。
- 对于代理或直通,选择直通式负载均衡器,然后点击下一步。
- 在公共或内部字段中,选择内部,然后点击下一步。
- 点击配置。
基本配置
- 输入负载均衡器名称。
- 选择区域。
- 选择网络。
后端配置
- 对于后端类型,请选择端口映射网络端点组。
- 选择一个端口映射网络端点组。
前端配置
- 点击前端配置。
- 可选:输入名称。
- (可选)输入说明。
- 选择一个协议。
- 选择子网。
- 点击完成。
- 点击创建。
gcloud
如需创建后端服务,请使用
backend-services create命令。gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK替换以下内容:
SERVICE:后端服务的名称REGION:后端服务的区域NETWORK:后端服务的提供方 VPC 网络
如需将端口映射 NEG 添加到后端服务,请使用
backend-services add-backend命令。您无法将多个端口映射 NEG 添加到单个后端服务。
gcloud compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION将
NEG替换为端口映射 NEG 的名称。如需为端口映射服务创建转发规则,请使用
forwarding-rules create命令。转发规则必须配置为转发所有客户端目标端口的流量。
gcloud compute forwarding-rules create RULE \ --load-balancing-scheme=INTERNAL \ --ip-protocol=PROTOCOL \ --network=NETWORK \ --subnet=SUBNET \ --address=IP_ADDRESS \ --ports=ALL \ --region=REGION \ --backend-service=SERVICE替换以下内容:
RULE:转发规则的名称PROTOCOL:转发规则的协议,可以是TCP或UDPSUBNET:提供方子网,必须是与端口映射 NEG 关联的相同子网IP_ADDRESS:转发规则的 IP 地址,必须来自提供方子网的 IP 地址范围
API
如需创建后端服务,请向
regionBackendServices.insert方法发送POST请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }替换以下内容:
PROJECT_ID:后端服务项目的 IDREGION:后端服务的区域SERVICE:后端服务的名称NETWORK:提供方 VPC 网络
如需将端口映射 NEG 添加到后端服务,请向
regionBackendServices.patch方法发送PATCH请求。您无法将多个端口映射 NEG 添加到单个后端服务。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG" } ] }将
NEG替换为端口映射 NEG 的名称。如需为端口映射服务创建转发规则,请向
forwardingRules.insert方法发送POST请求。转发规则必须配置为转发所有客户端目标端口的流量。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules { "name": "RULE", "loadBalancingScheme": "INTERNAL", "IPProtocol": "PROTOCOL", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET", "IPAddress": "IP_ADDRESS", "allPorts": true, "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE" }替换以下内容:
RULE:转发规则的名称PROTOCOL:转发规则的协议,可以是TCP或UDPSUBNET:提供方子网,必须是与端口映射 NEG 关联的相同子网IP_ADDRESS:转发规则的 IP 地址,必须来自提供方子网的 IP 地址范围
发布端口映射服务
如需将端口映射服务提供给使用方,请通过创建服务连接来发布服务。创建服务连接时,请指定与您的端口映射服务关联的转发规则。