透過後端存取區域性 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 的子網路,請建立一個。在您要建立內部應用程式負載平衡器的 VPC 網路和區域中,必須有一個僅限 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」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「跨區域或單一區域部署」部分,選取「最適合區域工作負載」,然後點選「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 目標類型設為 區域 Google API。
選取「通訊協定」的「HTTPS」HTTPS。
在「Backends」部分,點選「New backend」選單,然後選取 Private Service Connect 網路端點群組。
如果您需要建立新的 Private Service Connect 網路端點群組,請按一下「建立 Private Service Connect 網路端點群組」。
轉送規則
將傳入的 HTTPS 要求轉送至特定後端服務或後端值區的規則集合稱為「網址對應」。如要進一步瞭解網址對應,請參閱「網址對應總覽」。
如果您只為負載平衡器設定一個後端服務,預設轉送規則就足夠,您可以略過前端設定。
- 如果您有多個後端服務,請按一下「轉送規則」。
- 選取「簡易主機與路徑規則」。
- 針對每個後端執行下列操作:
- 新增主機與路徑規則。
- 在「Host」(主機) 部分,輸入要用來傳送要求至這項服務的主機名稱,例如
pubsub.example.com
。 - 在「Paths」中輸入路徑,例如
/*
。 - 在「後端」部分,選取後端服務。
前端設定
- 按一下「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 在「Protocol」欄位中,選取「HTTPS (包含 HTTP/2)」。
- 為負載平衡器選取子網路。
- 確認「Port」(通訊埠) 已設為
443
,以允許 HTTPS 流量。 在「IP 位址」部分,從選單中選取 IP 位址。
如要保留新的 IP 位址,請按一下「Create IP address」。
按一下 [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
:您要註冊負載平衡器的服務目錄服務的 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 解析。如果您使用的是通訊協定的預設通訊埠,例如使用通訊埠 443 的 HTTPS,可以省略通訊埠。如有需要,您可以使用
-k
標記略過憑證驗證。如果您使用自行簽署的憑證設定目標 HTTPS Proxy,或是 VM 沒有簽署憑證的憑證授權單位憑證,可能就需要略過驗證。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 記錄。
舉例來說,假設您已建立下列設定:
使用目標服務
pubsub.europe-west3.rep.googleapis.com
的 Private Service Connect NEG。使用 Private Service Connect NEG 做為後端的內部應用程式負載平衡器。
定義
pubsub.example.com
的主機規則的網址對應。
為確保這項設定能正常運作,您必須建立 DNS 記錄,將 pubsub.example.com
指向轉送規則的 IP 位址。
在這種設定下,任何傳送至 pubsub.example.com
的要求都會傳送至負載平衡器,而負載平衡器會將要求轉送至 pubsub.europe-west3.rep.googleapis.com
。
設定用戶端將要求傳送至後端
如要透過後端 (而非公開服務端點) 傳送要求,您必須將用戶端設為將要求傳送至負載平衡器網址對應中定義的主機名稱,例如 pubsub.example.com
。請參閱用戶端或用戶端程式庫的說明文件,瞭解如何設定用戶端以使用自訂端點。下列頁面提供一些常見用戶端的設定步驟:
Python:您可以在用戶端選項中設定
api_endpoint
。Go:您可以在 ClientOptions 中設定
WithEndpoint
。.NET:您可以在用戶端的建構工具類別中設定
Endpoint
。gcloud:您可以在 gcloud CLI 中設定
api_endpoint_overrides
。
透過 on-premises 主機存取後端
如果地端部署網路已連線至虛擬私有雲網路,您就可以將流量傳送至 Private Service Connect 後端。
內部部署網路必須使用 Cloud VPN 通道或與內部應用程式負載平衡器位於相同地區的 VLAN 連結,連線至內含內部應用程式負載平衡器的 VPC 網路。
內部網路必須有適當的路由,才能連往內部應用程式負載平衡器。請確認每個管理 Cloud VPN 通道或 VLAN 連結 BGP 工作階段的 Cloud Router 都已設定為宣傳內部 Application Load Balancer 轉送規則所使用的子網路的主要 IP 位址範圍。Cloud Router 預設會通告子網路路徑。
您必須設定內部系統,讓內部應用程式負載平衡器的網址對應中主機名稱解析為內部應用程式負載平衡器轉送規則 IP 位址。您可以在內部部署名稱伺服器中建立 DNS 記錄,也可以使用 Cloud DNS。
如果您已使用 Cloud DNS 代管不公開區域建立 DNS 記錄,請完成下列步驟: