透過後端存取已發布的服務
本指南說明如何設定具有 Private Service Connect 後端的全域外部應用程式負載平衡器,以存取使用 Private Service Connect 發布的服務。

詳情請參閱「關於 Private Service Connect 後端」。
角色
Compute 負載平衡器管理員角色 (roles/compute.loadBalancerAdmin
) 包含執行本指南所述工作所需的權限。
事前準備
如要發布自己的服務,請參閱「使用 Private Service Connect 發布服務」。
如果連線的服務是由第三方發布,請向服務製作人索取下列資訊:
建立網路端點群組
建立 Private Service Connect NEG,指向要存取的已發布服務的服務連結。如果發布的服務部署在多個不同區域,請為每個服務附件建立一個 NEG。
每個 Private Service Connect NEG 都會耗用 /32
IP 位址,負載平衡器才能與其通訊。
主控台
前往 Google Cloud 控制台的「Network endpoint groups」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
輸入網路端點群組的「名稱」。
在「網路端點群組類型」部分,選取「網路端點群組 (Private Service Connect)」。
選取目標類型「已發布的服務」。
在「目標服務」部分,輸入服務連結的 URI。
選取「網路」和「子網路」,在其中建立網路端點群組。
子網路必須與發布的服務位於相同區域。
點選「建立」。
gcloud
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET
更改下列內容:
NEG_NAME
:網路端點群組的名稱。TARGET_SERVICE
:要連線的服務附件。REGION
:要在其中建立網路端點群組的區域。地區必須與目標服務位於相同地區。NETWORK
:要在其中建立網路端點群組的網路。如果省略,系統會使用預設網路。SUBNET
:用於建立網路端點群組的子網路。子網路必須與目標服務位於相同區域。如果提供網路,就必須提供子網路。如果同時省略網路和子網路,系統會使用預設網路,以及指定REGION
中的預設子網路。
為負載平衡器保留外部 IP 位址
如要為負載平衡器保留外部 IP 位址,請按照下列步驟操作。
主控台
前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
如要預留 IPv4 位址,請按一下「Reserve static address」(預約靜態位址)。
為 IP 位址資源指派「名稱」。
將「Network tier」(網路級別) 設為「Premium」(進階)。
將「IP version」(IP 版本) 設為「IPv4」。
將「Type」(類型) 設為「Global」(通用)。
按一下「保留」。
gcloud
為負載平衡器保留全域外部 IPv4 位址。
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --global
將
ADDRESS_NAME
替換為 IP 位址資源的名稱。執行下列指令,查看保留的 IP 位址:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global
建立 SSL 憑證資源
如要建立 HTTPS 負載平衡器,您必須在負載平衡器的前端新增 SSL 憑證資源。使用 Google 代管的 SSL 憑證或自行管理的 SSL 憑證,建立 SSL 憑證資源。
Google 代管憑證。建議您使用 Google 代管的憑證,因為 Google 會自動取得、管理及更新這些憑證。 Google Cloud 如要建立 Google 代管的憑證,您必須擁有網域和該網域的 DNS 記錄,才能佈建憑證。此外,您還需要更新網域的 DNS A 記錄,指向上一個步驟中建立的負載平衡器 IP 位址;如需詳細操作說明,請參閱「使用 Google 代管憑證」。
自行管理的憑證。自行管理的 SSL 憑證是指您自行取得、佈建及更新的憑證。自行管理的憑證可以由憑證授權單位簽署,也可以自行簽署。如果是由憑證授權單位簽署,您必須擁有網域。 此外,您還需要更新網域的 DNS A 記錄,指向上一步建立的負載平衡器 IP 位址。如需詳細操作說明,請參閱「使用自行管理的 SSL 憑證」。
如果目前不想設定網域,可以使用自行簽署的 SSL 憑證進行測試。
這些操作說明假設您已建立 SSL 憑證資源。
設定負載平衡器
設定全域外部應用程式負載平衡器,並啟用進階流量管理功能 (負載平衡架構設為 EXTERNAL_MANAGED
),以便連線至代管服務。
如要連線至部署在多個區域的已發布服務,且您已建立多個 Private Service Connect NEG 來連線至各個服務連結,則可將所有 NEG 新增至後端服務。
雖然 Private Service Connect NEG 是區域性的,但這項設定中的所有其他負載平衡元件都是全域性的。
主控台
選取負載平衡器類型
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「Type of load balancer」(負載平衡器類型) 部分,選取「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後點選「Next」(下一步)。
- 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」。
- 在「Global or single region deployment」(全域或單一區域部署) 部分,選取「Best for global workloads」(最適合全域工作負載),然後點選「Next」(下一步)。
- 在「Load balancer generation」(負載平衡器代別) 部分,選取「Global external Application Load Balancer」(全域外部應用程式負載平衡器),然後點選「Next」(下一步)。
- 按一下 [設定]。
基本設定
- 輸入負載平衡器名稱。
- 將視窗保持開啟,以便繼續操作。
前端設定
- 按一下「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 在「Protocol」(通訊協定) 欄位中,選取「HTTPS (includes HTTP/2)」(HTTPS (含 HTTP/2))。
- 確認「Port」(通訊埠) 已設為
443
,以允許 HTTPS 流量。 在「IP address」(IP 位址) 的部分,選取您預留的 IP 位址。
按一下「憑證」清單,然後選取您建立的憑證。
按一下 [確定]。
按一下 [完成]。
後端設定
Private Service Connect 網路端點群組是負載平衡器後端的一種。將相同代管服務的所有 Private Service Connect NEG 新增至後端服務。
- 按一下「後端設定」。
- 按一下「後端服務和後端值區」清單,然後點選「建立後端服務」。
- 在「Name」(名稱) 中輸入後端服務的名稱。
- 將「後端類型」設為「Private Service Connect 網路端點群組」。
- 在「後端」部分中,按一下「Private Service Connect 網路端點群組」清單,然後選取您建立的 Private Service Connect NEG。接著點選「完成」。
如果您建立多個 Private Service Connect NEG,請按一下「新增後端」選取其他 NEG。
重複這個步驟,直到這個代管服務的所有 NEG 都新增到後端服務為止。
點選「建立」。
轉送規則
由於這項設定只包含一個後端服務,因此預設轉送規則就已足夠,您不需要在本節中進行任何變更。
檢查並完成
- 如要查看設定,請按一下「檢查並完成」。
- 點選「建立」。
gcloud
為要連線的代管服務建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
將
BACKEND_SERVICE_NAME
替換為後端服務的名稱。新增指向目標服務的 Private Service Connect NEG。
如果您已為同一項服務在不同區域中建立多個 NEG,請重複這個步驟,將所有 NEG 新增至後端服務。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
更改下列內容:
BACKEND_SERVICE_NAME
:後端服務的名稱。NEG_NAME
:網路端點群組的名稱。REGION
:網路端點群組的區域。
為負載平衡器建立網址對應。
網址對應必須參照預設後端服務。將您建立的後端服務設為預設後端服務。
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
更改下列內容:
URL_MAP_NAME
:網址對應表名稱。BACKEND_SERVICE_NAME
:負載平衡器預設後端服務的名稱。如果沒有任何主機規則與要求的主機名稱相符,系統就會使用預設值。
建立目標 HTTPS Proxy。
使用您建立的 SSL 憑證資源,建立目標 HTTPS Proxy。
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE
更改下列內容:
PROXY_NAME
:目標 HTTPS Proxy 的名稱。URL_MAP_NAME
:網址對應表名稱。CERTIFICATE
:憑證資源的名稱。
建立轉寄規則。
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --global
更改下列內容:
FWD_RULE
:轉送規則的名稱。ADDRESS_NAME
:您預留的 IP 位址資源,用於轉送規則。PROXY_NAME
:目標 HTTPS Proxy 的名稱。
設定 DNS 記錄
如要使用 DNS 名稱存取 Private Service Connect 後端,請為每個外部轉送規則建立 DNS 名稱。DNS 記錄必須對應至網址對應表中的名稱。除非網址對應重新編寫名稱,否則 DNS 記錄也必須對應至生產者服務預期的名稱。
如果您使用 Cloud DNS 管理 DNS,請參閱新增 DNS 記錄。
驗證設定
建立 VM 執行個體。
gcloud compute instances create VM_NAME \ --network=NETWORK \ --image-project=debian-cloud --image-family=debian-11 \ --zone=ZONE
更改下列內容:
VM_NAME
:虛擬機器的名稱。NETWORK
:VM 的網路。ZONE
:VM 所在的可用區。
連線至 VM。
gcloud compute ssh VM_NAME --zone=ZONE
使用
curl
驗證設定。這個指令會設定Host
標頭,並指定使用者定義的 IP 位址,藉此略過 DNS 解析。如果使用通訊協定的預設通訊埠 (例如 HTTPS 的通訊埠 443),可以省略通訊埠。您可以使用
-k
標記略過憑證驗證。如果您使用自行簽署的憑證設定目標 HTTPS Proxy,或 VM 沒有簽署憑證的憑證授權單位憑證,可能需要略過驗證。curl [-k] -s 'https://HOST:443/RESOURCE_URI' \ -H 'Host: HOST' \ --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
更改下列內容:
HOST
:在網址對應中設定的主機名稱。RESOURCE_URI
:您要用於驗證的資源 URI 的其餘部分。FWD_RULE_IP_ADDRESS
:指派給轉送規則的 IP 位址。
疑難排解
後端建立成功,但連線尚未建立
如果已成功為發布的服務建立後端,但連線尚未建立,請檢查後端的連線狀態。連線狀態可能會顯示解決問題的步驟。
後端發生效能問題或連線逾時
如果後端發生效能問題或間歇性連線逾時,可能是因為封包遭到捨棄。您可以查看下列各節所述的指標,調查封包遺失情形。
傳送至已發布服務的封包遭捨棄
private_service_connect/consumer/dropped_sent_packets_count
指標會追蹤來自 Private Service Connect 用戶端的封包,例如後端,這些封包會傳送至已發布的服務,但因後端超出服務的連線數上限而遭到捨棄。
如果後端回報這個指標的值,請考慮下列解決方案:
- 建立其他後端,連線至已發布的服務。
- 減少透過這個後端建立的連線數量。
- 請服務生產者增加發布服務的容量,例如新增更多虛擬機器 (VM) 執行個體或網路端點。
發布的服務捨棄的封包
這項指標會追蹤從已發布服務傳送至 Private Service Connect 消費者 (例如後端) 的封包,這些封包因 Private Service Connect 找不到相符的回應封包連線而遭到捨棄。private_service_connect/consumer/dropped_received_packets_count
Private Service Connect 只允許從消費者虛擬私有雲網路發起的連線。當消費者啟動連線時,系統會追蹤連線,以便將已發布服務的回應封包與現有連線配對。如果 Private Service Connect 找不到相符的回應封包,就會捨棄該封包。
如果已發布的服務在連線逾時後傳送回應封包,Private Service Connect 可能找不到相符的封包。如果看到這項指標的值,請與服務生產者聯絡。他們或許可以設定服務,避免發生這個問題。