透過後端存取區域性 Google API
本指南說明如何設定內部應用程式負載平衡器,搭配 Private Service Connect 後端存取區域 Google API。
如要進一步瞭解後端,請參閱「關於後端」。
Private Service Connect 用的內部應用程式負載平衡器可從共用虛擬私有雲網路和已連線的網路存取。
角色
Compute 負載平衡器管理員角色 (roles/compute.loadBalancerAdmin
) 包含執行本指南所述工作所需的權限。
支援的服務
請參閱支援的區域服務端點清單。
事前準備
在專案中啟用 Compute Engine API。
如要向 Service Directory 註冊負載平衡轉送規則,請在專案中啟用 Service Directory API。如要設定 Service Directory,請使用 Google Cloud CLI 或 API 建立轉送規則。
如果還沒有僅限 Proxy 的子網路,請建立一個。在您打算建立內部應用程式負載平衡器的虛擬私有雲網路和區域中,必須有一個僅限 Proxy 的子網路。該網路和區域內的所有內部應用程式負載平衡器都會使用這個子網路。
如果沒有,請為網域建立私密金鑰和自行管理的憑證。請參閱使用自行管理 SSL 憑證的步驟 1。設定負載平衡器時,您需要私密金鑰和憑證才能建立目標 HTTPS Proxy。
建立網路端點群組
針對要透過負載平衡器提供的每項服務,建立 Private Service Connect 網路端點群組 (NEG)。
主控台
前往 Google Cloud 控制台的「Network endpoint groups」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
輸入網路端點群組的「名稱」。
在「網路端點群組類型」部分,選取「網路端點群組 (Private Service Connect)」。
選取網路端點群組的「區域」。
選取網路端點群組的「目標服務」。
點選「建立」。
gcloud
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=REGION
更改下列內容:
NEG_NAME
:網路端點群組的名稱。TARGET_SERVICE
:要連線的目標服務。請參閱支援的區域服務端點清單。REGION
:要在其中建立網路端點群組的區域。地區必須與要連線的服務位於相同地區。
設定負載平衡器
所有負載平衡器元件都必須在與 Private Service Connect 網路端點群組相同的區域中建立。
主控台
選取負載平衡器類型
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「Type of load balancer」(負載平衡器類型) 部分,選取「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後點選「Next」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「Cross-region or single region deployment」(跨區域或單一區域部署) 部分,選取「Best for regional workloads」(最適合區域工作負載),然後點選「Next」(下一步)。
- 按一下 [設定]。
基本設定
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 選取負載平衡器的區域。
選取負載平衡器的「網路」。
網路必須在您建立 NEG 和負載平衡器的區域中,包含僅限 Proxy 的子網路。如果沒有,請按一下「預留子網路」建立一個。
將視窗保持開啟,以便繼續操作。
後端設定
Private Service Connect 網路端點群組是負載平衡器後端的一種。為要設定的每個後端建立後端服務。
- 按一下「後端設定」。
針對要設定的每個 Private Service Connect 網路端點群組,建立後端服務。
- 在「Create or select backend services」(建立或選取後端服務) 選單中,選取 [Create a backend service] (建立後端服務)。
- 在「Name」(名稱) 中輸入後端服務的名稱。
- 將「後端類型」設為「Private Service Connect 網路端點群組」。
- 將「Private Service Connect target type」(Private Service Connect 目標類型) 設為「Regional Google API」(區域性 Google API)。
選取「HTTPS」做為通訊協定。
在「後端」部分,按一下「新增後端」選單,然後選取 Private Service Connect 網路端點群組。
如需建立新的 Private Service Connect 網路端點群組,請按一下「建立 Private Service Connect 網路端點群組」。
轉送規則
將傳入的 HTTPS 要求轉送至特定後端服務或後端值區的規則集,稱為網址對應。如要進一步瞭解網址對應,請參閱網址對應總覽。
如果只為負載平衡器設定一項後端服務,預設轉送規則就已足夠,您可以跳至「前端設定」。
- 如果您有多個後端服務,請按一下「轉送規則」。
- 選取「簡易型主機與路徑規則」。
- 針對每個後端執行下列操作:
- 新增主機與路徑規則。
- 在「Host」(主機) 部分,輸入用於將要求傳送至這項服務的主機名稱,例如
pubsub.example.com
。 - 在「Paths」(路徑) 中輸入路徑,例如
/*
。 - 在「後端」部分,選取後端服務。
前端設定
- 按一下「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 在「Protocol」(通訊協定) 欄位中,選取「HTTPS (includes HTTP/2)」(HTTPS (含 HTTP/2))。
- 選取負載平衡器的「子網路」。
- 確認「Port」(通訊埠) 已設為
443
,以允許 HTTPS 流量。 在「IP address」(IP 位址) 部分,從選單中選取 IP 位址。
如要保留新的 IP 位址,請按一下「建立 IP 位址」。
按一下 [Certificate] (憑證) 下拉式清單。
- 如果您已有想要使用的自行管理 SSL 憑證資源,請在選單中選取所需資源。
- 否則,請選取 [Create a new certificate] (建立新憑證)。
- 輸入憑證資源的名稱。
- 將 PEM 格式的檔案上傳至相對應的欄位:
- 認證
- 私密金鑰
- 點選「建立」。
按一下 [完成]。
檢查並完成
- 按一下「檢查並完成」,檢查設定。
- 點選「建立」。
gcloud
為您建立的每個網路端點群組建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --region=REGION
更改下列內容:
BACKEND_SERVICE_NAME
:後端服務的名稱。REGION
:要在其中建立後端服務的區域。
為您建立的每個後端服務,將對應的 NEG 新增至後端服務。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --region=REGION
更改下列內容:
BACKEND_SERVICE_NAME
:後端服務的名稱。NEG_NAME
:網路端點群組的名稱。REGION
:後端的區域。
為負載平衡器建立網址對應。
網址對應必須參照預設後端服務。如果負載平衡器只設定一個後端服務,請將該後端服務設為預設值。如果您要設定負載平衡器使用多個後端服務,並在下一個步驟中建立主機規則和路徑比對器來參照這些服務,請選擇其中一個後端服務做為網址對應的預設服務。
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME \ --region=REGION
更改下列內容:
URL_MAP_NAME
:網址對應表名稱。DEFAULT_BACKEND_SERVICE_NAME
:負載平衡器預設的名稱。如果沒有任何主機規則與要求的主機名稱相符,系統就會使用預設規則。REGION
:建立網址對應的區域。
在網址對應中新增其他後端服務。
如果網址對應需要參照兩個以上的後端服務,請完成下列步驟。如果網址對應只參照一個後端服務,請略過這個步驟。
為每個後端服務新增路徑比對器。您必須為每項後端服務建立一個路徑比對器。
gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=PATH_MATCHER \ --default-service=BACKEND_SERVICE_NAME \ --region=REGION
更改下列內容:
URL_MAP_NAME
:網址對應表名稱。PATH_MATCHER
:路徑比對器的名稱。BACKEND_SERVICE_NAME
:後端服務的名稱。REGION
:網址對應的區域。
為每個主機名稱新增主機規則。
每個主機規則只能參照一個路徑比對器,但兩個以上的主機規則可以參照同一個路徑比對器。
gcloud compute url-maps add-host-rule URL_MAP_NAME \ --hosts=HOST \ --path-matcher-name=PATH_MATCHER \ --region=REGION
更改下列內容:
URL_MAP_NAME
:網址對應表名稱。HOST
:要將要求傳送至此服務的主機名稱。例如:pubsub.example.com
。PATH_MATCHER
:路徑比對器的名稱。REGION
:網址對應的區域。
建立目標 HTTPS Proxy。
使用
gcloud compute ssl-certificates create
指令建立地區 SSL 憑證資源。內部應用程式負載平衡器不支援 Google 代管憑證。gcloud compute ssl-certificates create CERTIFICATE \ --certificate=LB_CERT \ --private-key=LB_PRIVATE_KEY \ --region=REGION
更改下列內容:
CERTIFICATE
:憑證名稱。LB_CERT
:PEM 格式憑證檔案的路徑,適用於自行管理的憑證。LB_PRIVATE_KEY
:PEM 格式的私密金鑰檔案路徑,適用於自行管理的憑證。REGION
:憑證的區域。
使用區域 SSL 憑證資源,透過
gcloud compute target-https-proxies create
指令建立目標 HTTPS Proxy。gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=REGION \ --ssl-certificates=CERTIFICATE
更改下列內容:
PROXY_NAME
:目標 HTTPS Proxy 的名稱。URL_MAP_NAME
:網址對應表名稱。REGION
:憑證資源的區域。CERTIFICATE
:憑證資源的名稱。
為轉送規則預留區域內部 IPv4 位址。
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 \ --region=REGION \ --subnet=SUBNETWORK
更改下列內容:
ADDRESS_NAME
:IP 位址資源的名稱。REGION
:要建立 IP 位址的區域。SUBNET
:要在其中建立 IP 位址的子網路。
執行下列指令,查看保留的 IP 位址。建立負載平衡器後,您可以使用 IP 位址驗證設定。
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --region=REGION
建立轉寄規則。
使用
gcloud compute forwarding-rules create
指令建立轉送規則。gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --address=ADDRESS_NAME \ --ports=443 \ --region=REGION \ --target-https-proxy=PROXY_NAME \ --target-https-proxy-region=PROXY_REGION \ [--service-directory-registration=SD_SERVICE_NAME]
更改下列內容:
FWD_RULE
:轉送規則的名稱。NETWORK
:要在其中建立轉送規則的網路。ADDRESS_NAME
:保留的 IP 位址。REGION
:轉送規則的區域。PROXY_NAME
:目標 HTTPS Proxy 的名稱。PROXY_REGION
:目標 HTTPS Proxy 的區域。SD_SERVICE_NAME
:要向其註冊負載平衡器的 Service Directory 服務 URI,格式如下:projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
。--service-directory-registration
為選填欄位。
驗證設定
建立 VM 執行個體。
gcloud compute instances create VM_NAME \ --network=NETWORK \ --image-project=debian-cloud --image-family=debian-12 \ --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,或是虛擬機器沒有簽署憑證的憑證授權單位憑證,可能需要略過驗證。curl -iv --resolve HOSTNAME:443:IP_ADDRESS \ 'https://HOSTNAME/RESOURCE_URI'
更改下列內容:
HOSTNAME
:您在網址對應中設定的主機名稱,例如pubsub.example.com
。IP_ADDRESS
:負載平衡器轉送規則的 IP 位址。RESOURCE_URI
:您要用於驗證的資源 URI 的其餘部分。舉例來說,如果負載平衡器將要求轉送至 Pub/Sub 的區域端點,您可以使用rest?version=v1
。
設定 DNS 記錄
為您新增至網址對應的每個主機設定 DNS 記錄,指向轉送規則的 IP 位址。如果使用 Cloud DNS 管理 DNS,請參閱「新增、修改及刪除記錄」。否則,請在 DNS 伺服器上設定 DNS 記錄。
舉例來說,假設您已建立下列設定:
使用目標服務的 Private Service Connect NEG
pubsub.europe-west3.rep.googleapis.com
。使用該 Private Service Connect NEG 做為後端的內部應用程式負載平衡器。
定義
pubsub.example.com
主機規則的網址對應。
如要讓這項設定正常運作,請務必建立指向轉送規則 IP 位址的 DNS 記錄 pubsub.example.com
。
完成這項設定後,傳送至 pubsub.example.com
的任何要求都會傳送至負載平衡器,負載平衡器再將要求轉送至 pubsub.europe-west3.rep.googleapis.com
。
設定用戶端,將要求傳送至後端
如要透過後端而非公開服務端點傳送要求,您必須將用戶端設定為將要求傳送至負載平衡器網址對應中定義的主機名稱,例如 pubsub.example.com
。如要瞭解如何設定用戶端或用戶端程式庫以使用自訂端點,請參閱相關文件。以下頁面包含一些常見用戶端的設定步驟:
Python:您可以在用戶端選項中設定
api_endpoint
。前往:您可以在 ClientOptions 中設定
WithEndpoint
。.NET:您可以在用戶端的建構工具類別中設定
Endpoint
。gcloud:您可以在 gcloud CLI 中設定
api_endpoint_overrides
。
從地端部署主機存取後端
如果地端部署網路已連線至虛擬私有雲網路,您可以將流量傳送至 Private Service Connect 後端。
內部部署網路必須連線至包含內部應用程式負載平衡器的虛擬私有雲網路,且連線方式為使用與內部應用程式負載平衡器位於相同區域的 Cloud VPN 通道或 VLAN 連結。
內部部署網路必須有適當的路徑,才能連至內部應用程式負載平衡器。請確認管理 Cloud VPN 通道或 VLAN 連結 BGP 工作階段的每個 Cloud Router,都已設定為通告內部 Application Load Balancer 轉送規則所用子網路的主要 IP 位址範圍。Cloud Router 預設會通告子網路路徑。
您必須設定地端系統,讓內部應用程式負載平衡器的網址對應中的主機名稱,解析為內部應用程式負載平衡器轉送規則的 IP 位址。您可以在內部部署名稱伺服器中建立 DNS 記錄,也可以使用 Cloud DNS。
如果您使用 Cloud DNS 代管私人區域建立 DNS 記錄,請完成下列步驟: