建立通訊埠對應服務

本頁面說明服務供應者如何發布使用 Private Service Connect 通訊埠對應的服務。

Private Service Connect 通訊埠對應功能可讓消費者用戶端透過單一 Private Service Connect 端點,私下與特定供應者 VM 上的特定服務通訊埠進行通訊。

事前準備

必要的角色

如要取得發布使用 Private Service Connect 連接埠對應的服務所需的權限,請管理員在產生者專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

建立及發布連接埠對應服務

連接埠對應服務的設定與內部直通式網路負載平衡器相似,但不會負載平衡流量。如要建立及發布通訊埠對應服務,請按照下列步驟操作:

  • 建立通訊埠對應 NEG
  • 將網路端點新增至通訊埠對應 NEG
  • 建立通訊埠對應服務
  • 發布通訊埠對應服務

建立通訊埠對應 NEG

通訊埠對應網路 NEG 是區域 NEG,網路端點類型為 GCE_VM_IP_PORTMAP。建立後,就無法變更埠對應 NEG 的類型。

建立通訊埠對應 NEG 時,您需要選擇子網路。您與通訊埠對應 NEG 相關聯的網路端點,必須在這個子網路中設有主要網路介面。

主控台

  1. 在 Google Cloud 控制台中,前往「Network Endpoint Groups」(網路端點群組) 頁面。

    前往「網路端點群組」

  2. 按一下「建立網路端點群組」

  3. 輸入名稱

  4. 按一下「網路端點群組類型」,然後選取「通訊埠對應 NEG (區域)」

  5. 選擇一個 [Region] (地區)

  6. 選取「網路」

  7. 選取「子網路」

  8. 按一下 [建立]。

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 的專案 ID
  • REGION:通訊埠對應 NEG 的區域
  • NEG:通訊埠對應 NEG 的名稱
  • NETWORK:通訊埠對應 NEG 的 VPC 網路
  • SUBNET:通訊埠對應 NEG 的子網路

將網路端點新增至通訊埠對應 NEG

建立一或多個含有通訊埠對應項目的網路端點,並將這些端點附加至通訊埠對應 NEG。

通訊埠對應 NEG 的網路端點為區域性,且必須符合下列規定:

  • 每個網路端點都代表一個 Compute Engine VM,該 VM 的主要網路介面位於與通訊埠對應 NEG 相同的子網路。
  • 每個網路端點都會參照不重複的用戶端目的地通訊埠。
  • 每個網路端點都必須參照服務通訊埠和 VM 的不重複組合。

主控台

  1. 在 Google Cloud 控制台中,前往「Network Endpoint Groups」(網路端點群組) 頁面。

    前往「網路端點群組」

  2. 按一下要更新的通訊埠對應 NEG 名稱。

  3. 按一下「新增網路端點」

  4. 按一下「VM 執行個體」,然後選取 VM。

  5. 按一下「VM port 1」(VM 1 號埠),然後輸入服務埠。

  6. 按一下「Client port 1」(用戶端埠 1),然後輸入用戶端目的地埠。

  7. 針對每個要新增的額外網路端點,按一下「Add network endpoint」(新增網路端點),然後輸入網路端點詳細資料。

  8. 按一下 [建立]。

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:製作者專案的專案 ID
  • ZONE_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:製作者專案的專案 ID
  • REGION:通訊埠對應 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 的網路端點

轉送規則建立後,您無法更新連線。如果您需要連線至其他後端服務,請刪除轉送規則,然後建立新的轉送規則。

主控台

開始設定

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「負載平衡」

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」
  5. 在「公開或內部」部分,選取「內部」,然後點選「下一步」
  6. 按一下 [設定]

基本設定

  1. 輸入「負載平衡器名稱」
  2. 選擇一個 [Region] (地區)
  3. 選取「網路」

後端設定

  1. 在「Backend type」部分,選取「Port mapping network endpoint group」
  2. 選取「Port mapping Network Endpoint Group」

前端設定

  1. 按一下「前端設定」
  2. 選用:輸入「名稱」
  3. 選用:輸入說明
  4. 選取「Protocol」(通訊協定)
  5. 選取「子網路」
  6. 按一下 [完成]
  7. 按一下 [建立]。

gcloud

  1. 如要建立後端服務,請使用 backend-services create 指令

    gcloud compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    更改下列內容:

    • SERVICE:後端服務名稱
    • REGION:後端服務的區域
    • NETWORK:後端服務的供應商虛擬私有雲網路
  2. 如要將通訊埠對應 NEG 新增至後端服務,請使用 backend-services add-backend 指令

    您無法在單一後端服務中新增多個通訊埠對應 NEG。

    gcloud compute backend-services add-backend SERVICE \
        --network-endpoint-group=NEG \
        --network-endpoint-group-region=REGION
    

    NEG 替換為 NEG 的連接埠對應名稱。

  3. 如要為埠對應服務建立轉送規則,請使用 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:轉送規則的通訊協定,可為 TCPUDP
    • SUBNET:供應者子網路,必須與與通訊埠對應 NEG 相關聯的子網路相同
    • IP_ADDRESS:轉送規則的 IP 位址,必須來自產生者子網路的 IP 位址範圍

API

  1. 如要建立後端服務,請將 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:後端服務專案的 ID
    • REGION:後端服務的區域
    • SERVICE:後端服務名稱
    • NETWORK:供應商虛擬私有雲網路
  2. 如要將通訊埠對應 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 的連接埠名稱。

  3. 如要為通訊埠對應服務建立轉送規則,請將 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:轉送規則的通訊協定,可為 TCPUDP
    • SUBNET:供應者子網路,必須與與通訊埠對應 NEG 相關聯的子網路相同
    • IP_ADDRESS:轉送規則的 IP 位址,必須來自產生者子網路的 IP 位址範圍

發布通訊埠對應服務

如要讓消費者使用您的通訊埠對應服務,請建立服務附件來發布服務。建立服務附件時,請指定與連接埠對應服務相關聯的轉送規則。

後續步驟