建立通訊埠對應服務
本頁面說明服務供應者如何發布使用 Private Service Connect 通訊埠對應的服務。
Private Service Connect 通訊埠對應功能可讓消費者用戶端透過單一 Private Service Connect 端點,私下與特定供應者 VM 上的特定服務通訊埠進行通訊。
事前準備
- 您必須在專案中啟用 Compute Engine API。
- 您必須為要連結至通訊埠對應 NEG 的每個網路端點建立 VM。VM 都必須位於相同地區。
- 請參閱「關於已發布服務」。
- 請參閱「關於 Private Service Connect 連接埠對應」。
必要的角色
如要取得發布使用 Private Service Connect 連接埠對應的服務所需的權限,請管理員在產生者專案中授予您下列 IAM 角色:
-
Compute 負載平衡器管理員 (
roles/compute.loadBalancerAdmin
) -
Compute 網路管理員 (
roles/compute.networkAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立及發布連接埠對應服務
連接埠對應服務的設定與內部直通式網路負載平衡器相似,但不會負載平衡流量。如要建立及發布通訊埠對應服務,請按照下列步驟操作:
- 建立通訊埠對應 NEG
- 將網路端點新增至通訊埠對應 NEG
- 建立通訊埠對應服務
- 發布通訊埠對應服務
建立通訊埠對應 NEG
通訊埠對應網路 NEG 是區域 NEG,網路端點類型為 GCE_VM_IP_PORTMAP
。建立後,就無法變更埠對應 NEG 的類型。
建立通訊埠對應 NEG 時,您需要選擇子網路。您與通訊埠對應 NEG 相關聯的網路端點,必須在這個子網路中設有主要網路介面。
主控台
在 Google Cloud 控制台中,前往「Network Endpoint Groups」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
輸入名稱。
按一下「網路端點群組類型」,然後選取「通訊埠對應 NEG (區域)」。
選擇一個 [Region] (地區)。
選取「網路」。
選取「子網路」。
按一下 [建立]。
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
將 POST
要求傳送至 regionNetworkEndpointGroups.insert
方法。
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 VM,該 VM 的主要網路介面位於與通訊埠對應 NEG 相同的子網路。
- 每個網路端點都會參照不重複的用戶端目的地通訊埠。
每個網路端點都必須參照服務通訊埠和 VM 的不重複組合。
主控台
在 Google Cloud 控制台中,前往「Network Endpoint Groups」(網路端點群組) 頁面。
按一下要更新的通訊埠對應 NEG 名稱。
按一下「新增網路端點」。
按一下「VM 執行個體」,然後選取 VM。
按一下「VM port 1」(VM 1 號埠),然後輸入服務埠。
按一下「Client port 1」(用戶端埠 1),然後輸入用戶端目的地埠。
針對每個要新增的額外網路端點,按一下「Add network endpoint」(新增網路端點),然後輸入網路端點詳細資料。
按一下 [建立]。
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 名稱VM_1_PORT
:第一個網路端點的服務通訊埠CLIENT_DESTINATION_PORT_2
:第二個網路端點的用戶端目的地通訊埠ZONE_2
:第二個網路端點的可用區VM_2_NAME
:第二個網路端點的目的地 VM 名稱VM_2_PORT
:第二個網路端點的服務通訊埠
API
將 POST
要求傳送至 regionNetworkEndpointGroups.attachNetworkEndpoints
方法。
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
:第一個網路端點的目的 VM 名稱SERVICE_PORT_1
:第一個網路端點的服務通訊埠CLIENT_DESTINATION_PORT_2
:第二個網路端點的用戶端目的地埠ZONE_2
:第二個網路端點的可用區VM_2_NAME
:第二個網路端點的目的地 VM 名稱SERVICE_PORT_2
:第二個網路端點的服務通訊埠
建立通訊埠對應服務
如要建立埠對應服務,請完成下列步驟。
新增 NEG 後,您無法變更與後端服務相關聯的通訊埠對應 NEG。不過,您可以更新通訊埠對應 NEG 的網路端點。
轉送規則建立後,您無法更新連線。如果您需要連線至其他後端服務,請刪除轉送規則,然後建立新的轉送規則。
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」。
- 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 按一下 [設定]。
基本設定
- 輸入「負載平衡器名稱」。
- 選擇一個 [Region] (地區)。
- 選取「網路」。
後端設定
- 在「Backend type」部分,選取「Port mapping network endpoint group」。
- 選取「Port mapping Network Endpoint Group」。
前端設定
- 按一下「前端設定」。
- 選用:輸入「名稱」。
- 選用:輸入說明。
- 選取「Protocol」(通訊協定)。
- 選取「子網路」。
- 按一下 [完成]。
- 按一下 [建立]。
gcloud
如要建立後端服務,請使用
backend-services create
指令。gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
更改下列內容:
SERVICE
:後端服務名稱REGION
:後端服務的區域NETWORK
:後端服務的供應商虛擬私有雲網路
如要將通訊埠對應 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
或UDP
SUBNET
:供應者子網路,必須與與通訊埠對應 NEG 相關聯的子網路相同IP_ADDRESS
:轉送規則的 IP 位址,必須來自產生者子網路的 IP 位址範圍
API
如要建立後端服務,請將
POST
要求傳送至regionBackendServices.insert
方法。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
:供應商虛擬私有雲網路
如要將通訊埠對應 NEG 新增至後端服務,請將
PATCH
要求傳送至regionBackendServices.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 的連接埠名稱。如要為通訊埠對應服務建立轉送規則,請將
POST
要求傳送至forwardingRules.insert
方法。轉送規則必須設定為轉送所有用戶端目的地通訊埠的流量。
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
或UDP
SUBNET
:供應者子網路,必須與與通訊埠對應 NEG 相關聯的子網路相同IP_ADDRESS
:轉送規則的 IP 位址,必須來自產生者子網路的 IP 位址範圍
發布通訊埠對應服務
如要讓消費者使用您的通訊埠對應服務,請建立服務附件來發布服務。建立服務附件時,請指定與連接埠對應服務相關聯的轉送規則。