本文提供兩種範例設定,說明如何在 Shared VPC 環境中設定內部應用程式負載平衡器:
- 第一個範例會在一個服務專案中建立所有負載平衡器元件和後端。
- 第二個範例會在一個服務專案中建立負載平衡器的前端元件和網址對應,而負載平衡器的後端服務和後端則是在另一個服務專案中建立。這種部署方式 (網址對應參照其他專案中的後端服務) 稱為跨專案服務參照。
這兩個範例都需要進行相同的前置設定,才能授予權限和設定共用虛擬私有雲,然後才能開始建立負載平衡器。
內部應用程式負載平衡器支援的 Shared VPC 設定不只這些。如要瞭解其他有效的 Shared VPC 架構,請參閱「Shared VPC 架構」。
如不想使用 Shared VPC 網路,請參閱「設定內部應用程式負載平衡器」。
事前準備
- 參閱「共用虛擬私有雲總覽」。
- 請參閱內部應用程式負載平衡器總覽,包括「共用 VPC 架構」一節。
必要權限
在共用虛擬私有雲網路上設定負載平衡器時,管理員必須先進行一些初始設定和佈建作業。完成初始設定後,服務專案擁有者可以執行下列任一操作:
- 在服務專案中部署負載平衡器的所有元件和後端。
- 在服務專案中部署負載平衡器的後端元件 (後端服務和後端),這些元件可由其他服務或主專案中的網址對應參照。
本節將摘要說明按照本指南操作,在共用虛擬私有雲網路上設定負載平衡器所需的權限。
設定 Shared VPC
如要執行下列工作,您必須具備下列角色:
- 執行一次性管理工作,例如設定 Shared VPC 和啟用主機專案。
- 執行管理工作,每次要啟用新的服務專案時,都必須重複這些工作。包括附加服務專案、佈建及設定網路資源,以及授予服務專案管理員存取權。
這些工作必須在 Shared VPC 主專案中執行。建議您將 Shared VPC 管理員設為 Shared VPC 主專案的擁有者。系統會自動授予網路管理員和安全管理員角色。
| 工作 | 必要角色 |
|---|---|
| 設定共用虛擬私有雲、啟用主專案,並授予服務專案管理員存取權 | Shared VPC 管理員 |
| 在共用 VPC 託管專案中建立子網路,並授予服務專案管理員存取權 | 網路管理員 |
| 新增與移除防火牆規則 | 安全管理員 |
子網路佈建完成後,主專案擁有者必須在主專案中,將「網路使用者」角色授予需要使用這些資源的任何人 (通常是服務專案管理員、開發人員或服務帳戶)。
| 工作 | 必要角色 |
|---|---|
| 使用屬於主專案的虛擬私有雲網路和子網路 | 網路使用者 |
您可以在專案層級或個別子網路授予這個角色。建議您在個別子網路上授予角色。在專案中授予角色,即可存取主專案虛擬私有雲網路中現有和日後的所有子網路。
部署負載平衡器和後端
服務專案管理員必須在服務專案中具備下列角色,才能建立負載平衡資源和後端。服務專案擁有者或編輯者會自動取得這些權限。
| 工作 | 必要角色 |
|---|---|
| 建立負載平衡器元件 | 網路管理員 |
| 建立執行個體 | 執行個體管理員 |
| 建立及修改 SSL 憑證 | 安全管理員 |
必要條件
在本節中,您需要執行下列步驟:
您不必每次建立新的負載平衡器時,都執行本節中的步驟。不過,您必須確保有權存取本文所述資源,才能繼續建立負載平衡器。
在主專案中設定網路和子網路
您需要具有兩個子網路的共用虛擬私有雲網路:一個用於負載平衡器的前端和後端,另一個用於負載平衡器的 Proxy。這個範例會使用以下網路、區域和子網路:
電視網。網路名稱為「
lb-network」。負載平衡器前端和後端的子網路。
us-west1區域中名為lb-frontend-and-backend-subnet的子網路使用10.1.2.0/24做為其主要 IP 範圍。Proxy 的子網路。
us-west1區域中名為proxy-only-subnet的子網路使用10.129.0.0/23做為其主要 IP 範圍。
設定負載平衡器前端和後端的子網路
每次要建立新的負載平衡器時,不必執行這個步驟。您只需要確保服務專案有權存取共用虛擬私有雲網路中的子網路 (除了僅限 Proxy 的子網路之外)。本節的所有步驟都必須在主專案中執行。
控制台
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
- 按一下「建立虛擬私有雲網路」。
- 在「Name」(名稱) 中輸入
lb-network。 在「Subnets」(子網路) 區段中:
- 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
在「New subnet」(新的子網路) 區段中,輸入以下資訊:
- Name (名稱):
lb-frontend-and-backend-subnet
Region (區域):
us-west1IP address range (IP 位址範圍):
10.1.2.0/24
- Name (名稱):
按一下「完成」。
點選「建立」。
gcloud
使用
gcloud compute networks create指令建立虛擬私有雲網路:gcloud compute networks create lb-network --subnet-mode=custom
在
us-west1地區的lb-network網路中建立子網路:gcloud compute networks subnets create lb-frontend-and-backend-subnet
--network=lb-network
--range=10.1.2.0/24
--region=us-west1
Terraform
建立虛擬私有雲網路: <0x
在
us-west1區域中建立子網路:
設定僅限 Proxy 的子網路
lb-network 虛擬私有雲網路中 us-west1 區域的所有區域 Envoy 型負載平衡器,都會使用僅限 Proxy 的子網路。每個地區和每個網路只能有一個活動的僅限 Proxy 子網路。
如果這個網路的「us-west1」區域中已預留僅限 Proxy 的子網路,請勿執行這個步驟。
本節的所有步驟都必須在主專案中執行。
控制台
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
- 按一下共用虛擬私有雲網路的名稱:
lb-network。 - 按一下 [新增子網路]。
- 在「Name」(名稱) 中輸入
proxy-only-subnet。 - 在「Region」(區域) 中選取
us-west1。 - 將「用途」設為「區域受管理 Proxy」。
- 在「IP address range」(IP 位址範圍) 中,輸入
10.129.0.0/23。 - 按一下「新增」。
gcloud
使用 gcloud compute networks subnets
create 指令建立僅限 Proxy 的子網路:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-west1 \
--network=lb-network \
--range=10.129.0.0/23
Terraform
建立僅限 Proxy 的子網路:
授予服務專案管理員後端子網路的存取權
服務專案管理員必須有權存取lb-frontend-and-backend-subnet 子網路,才能佈建負載平衡器的後端。
共用虛擬私有雲管理員必須授予服務專案管理員 (或部署使用子網路的資源和後端的開發人員) 後端子網路的存取權。如需操作說明,請參閱「部分子網路的服務專案管理員」。
在主專案中設定防火牆規則
這個範例使用以下防火牆規則:fw-allow-health-check. 輸入規則,適用於要進行負載平衡的執行個體,可允許來自Google Cloud健康狀態檢查探測範圍的所有 TCP 流量。這個範例會使用目標標記load-balanced-backend來辨識應套用此規則的執行個體。
fw-allow-proxies. 輸入規則,適用於要進行負載平衡的執行個體,可在80、443和8080通訊埠上允許來自負載平衡器代管 Proxy 的 TCP 流量。這個範例會使用目標標記load-balanced-backend來辨識應套用此規則的執行個體。
fw-allow-ssh. 輸入規則,適用於要進行負載平衡的執行個體,可在 TCP 通訊埠22上允許來自任何位址的連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 範圍。舉例來說,您可以僅指定要從其中啟動 SSH 工作階段之系統的 IP 範圍。這個範例會使用目標標記allow-ssh來辨識套用防火牆規則的虛擬機器 (VM)。
本節的所有步驟都必須在主專案中執行。
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
- 按一下「Create firewall rule」(建立防火牆規則),建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-health-check - Network (網路):
lb-network - 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
load-balanced-backend - Source filter (來源篩選器):IPv4 範圍
- 來源 IPv4 範圍:
35.191.0.0/16 - 「通訊協定和通訊埠」:
- 選擇「指定的通訊協定和通訊埠」。
- 勾選「TCP」TCP,然後輸入
80做為通訊埠編號。
最佳做法是將這項規則限制為僅適用於與健康狀態檢查所用通訊協定和通訊埠相符的項目。如果您將通訊協定和通訊埠指定為
tcp:80, Google Cloud 可以使用通訊埠80上的 HTTP 與 VM 聯絡,但無法使用通訊埠443上的 HTTPS 與 VM 聯絡。 - 點選「建立」。
- 按一下「Create firewall rule」(建立防火牆規則),建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-proxies - Network (網路):
lb-network - 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
load-balanced-backend - Source filter (來源篩選器):IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
10.129.0.0/23 - 「通訊協定和通訊埠」:
- 選擇「指定的通訊協定和通訊埠」。
- 勾選「TCP」TCP,然後輸入
80, 443, 8080做為通訊埠編號。
- 點選「建立」。
- 按一下「Create firewall rule」(建立防火牆規則),建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-ssh - Network (網路):
lb-network - 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
allow-ssh - Source filter (來源篩選器):IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
0.0.0.0/0 - 「通訊協定和通訊埠」:
- 選擇「指定的通訊協定和通訊埠」。
- 勾選「TCP」TCP,然後輸入
22做為通訊埠編號。
- 點選「建立」。
gcloud
建立
fw-allow-health-check防火牆規則,允許Google Cloud 健康狀態檢查。這個範例可允許來自健康狀態檢查探測器的所有 TCP 流量。不過,您可以設定較窄的連接埠範圍,以符合需求。gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=
35.191.0.0/16\ --target-tags=load-balanced-backend \ --rules=tcp建立
fw-allow-proxies防火牆規則,允許流量從僅限 Envoy Proxy 的子網路傳送至後端。gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
建立
fw-allow-ssh防火牆規則,允許與具有allow-ssh網路標記的 VM 建立 SSH 連線。 若省略source-ranges,Google Cloud 會將規則解讀為任何來源。gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Terraform
建立防火牆規則,允許 Google Cloud 健康狀態檢查。
建立防火牆規則,允許流量從僅限 Envoy Proxy 的子網路傳送至後端。
建立防火牆規則,允許與具有
allow-ssh網路標記的 VM 建立 SSH 連線。
在主專案中設定 Shared VPC
這個步驟包括啟用共用虛擬私有雲主專案、共用主專案的子網路,以及將服務專案附加至主專案,以便服務專案使用共用虛擬私有雲網路。如要在主專案中設定 Shared VPC,請參閱下列頁面:
這些操作說明的其餘部分假設您已設定 Shared VPC。包括為機構設定 IAM 政策,以及指定主機和服務專案。
請先設定 Shared VPC,並啟用主專案和服務專案,再繼續進行後續步驟。
完成本節定義的必要步驟後,您可以選擇下列任一設定:
在服務專案中設定負載平衡器
這個範例會建立內部應用程式負載平衡器,其中所有負載平衡元件 (轉送規則、目標 Proxy、網址對應和後端服務) 和後端都會在服務專案中建立。
內部應用程式負載平衡器的網路資源 (例如僅限 Proxy 的子網路和後端執行個體的子網路) 會在主專案中建立。後端執行個體的防火牆規則也會在主專案中建立。
本節說明如何設定負載平衡器和後端。這些步驟應由服務專案管理員 (或在服務專案中運作的開發人員) 執行,不需要主專案管理員參與。本節的步驟與設定內部應用程式負載平衡器的標準步驟大致相同。
本頁的範例會為內部應用程式負載平衡器的轉送規則明確設定保留的內部 IP 位址,而不允許分配暫時的內部 IP 位址。建議您最好為轉送規則保留 IP 位址。
建立代管執行個體群組後端
本節說明如何建立範本和代管執行個體群組。代管執行個體群組提供的 VM 執行個體,會執行內部應用程式負載平衡器範例的後端伺服器。從用戶端到這些後端伺服器的流量會經過負載平衡。為示範之用,後端會提供自己的主機名稱。
控制台
建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。
前往「Instance templates」(執行個體範本)
- 按一下「Create instance template」(建立執行個體範本)。
- 在「Name」(名稱) 中輸入
l7-ilb-backend-template。 - 確認「開機磁碟」設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明中的指令僅適用於 Debian,例如
apt-get。如要變更「開機磁碟」,請按一下「變更」。- 在「作業系統」部分,選取「Debian」。
- 在「版本」部分,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。
- 按一下「選取」。
- 依序點選「進階選項」和「網路」。
- 輸入下列「Network tags」(網路標記):
allow-ssh、load-balanced-backend。 - 在「網路介面」部分, 選取「與我共用的網路 (來源主專案:HOST_PROJECT_ID)」。
- 從
lb-network網路選取lb-frontend-and-backend-subnet子網路。 - 按一下 [Management] (管理)。在「管理」下,將以下指令碼插入至「開機指令碼」欄位。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google"
http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" |
tee /var/www/html/index.html systemctl restart apache2 - 點選「建立」。
建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 點選「建立執行個體群組」。
- 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
- 在「Name」(名稱) 中輸入
l7-ilb-backend-example。 - 在「位置」部分,選取「單一可用區」。
- 在「Region」(區域) 中選取
us-west1。 - 在「Zone」(區域) 中選取
us-west1-a。 - 在「Instance template」(執行個體範本) 中選取
l7-ilb-backend-template。 指定要在群組中建立的執行個體數量。
在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:
- 在「Autoscaling mode」(自動調度資源模式),選取
Off:do not autoscale。 - 在「Maximum number of instances」(執行個體數量上限) 中輸入
2。
您也可以根據需要,在 UI 的「Autoscaling」(自動調度資源) 區段中,將執行個體群組設為根據執行個體 CPU 使用量自動新增或移除執行個體。
- 在「Autoscaling mode」(自動調度資源模式),選取
點選「建立」。
gcloud
本指南中的 gcloud 指示假設您使用 Cloud Shell 或已安裝 bash 的其他環境。
使用
gcloud compute instance-templates create指令,建立含有 HTTP 伺服器的 VM 執行個體範本。gcloud compute instance-templates create l7-ilb-backend-template \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_ID
使用
gcloud compute instance-groups managed create指令,在區域中建立代管執行個體群組。gcloud compute instance-groups managed create l7-ilb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-ilb-backend-template \ --project=SERVICE_PROJECT_ID
Terraform
建立 VM 執行個體範本。
建立代管執行個體群組。
HTTP:
HTTPS:
設定負載平衡器
本節說明如何建立內部應用程式負載平衡器資源:
- HTTP 健康狀態檢查
- 以代管執行個體群組做為後端的後端服務
- 網址對應
- SSL 憑證 (僅適用於 HTTPS)
- 目標 Proxy
- 轉送規則
Proxy 可用性
視使用相同 Shared VPC 虛擬私有雲網路的服務專案數量而定,您可能會比在 每個 Google Cloud 專案代管自有網路的網路部署作業模型中, 更快達到 配額或限制。
舉例來說,有時 Google Cloud 區域的 Proxy 容量不足,無法支援新的內部應用程式負載平衡器。如果發生這種情況,建立負載平衡器時, Google Cloud 控制台 會顯示 Proxy 可用性警告訊息。如要解決這個問題,請採取下列任一做法:
- 等待容量問題解決。
如要提高這些上限,請與 Google Cloud 銷售團隊聯絡。
控制台
將環境切換至服務專案
- 前往 Google Cloud 控制台的「資訊主頁」頁面。
- 按一下頁面頂端的「Select from」清單。在顯示的「Select from」(可用的選項) 視窗中,選取要建立負載平衡器的服務專案。
選取負載平衡器類型
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
- 按一下「Create load balancer」(建立負載平衡器)。
- 將「Type of load balancer」(負載平衡器類型) 設為「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後按一下「Next」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「跨區域或單一區域部署」部分,選取「最適合區域工作負載」,然後點選「下一步」。
- 按一下 [設定]。
基本設定
- 在負載平衡器的「Name」(名稱) 中輸入
l7-ilb-shared-vpc。 - 在「區域」部分,選取「
us-west1」。 在「Network」(網路)中選擇「lb-network」 (來自「Project: HOST_PROJECT_ID」)。
如果看到「在共用虛擬私有雲網路中必須要有僅限 Proxy 的子網路」警告,請確認主專案管理員已在
lb-network共用虛擬私有雲網路的us-west1區域中建立proxy-only-subnet。即使您沒有權限在這個頁面查看僅限 Proxy 的子網路,系統還是可以順利建立負載平衡器。視窗保持開啟,以便繼續操作。
設定後端
- 按一下「後端設定」。
- 在「Create or select backend services」(建立或選取後端服務) 選單中,選取「Create a backend service」(建立後端服務)。
- 將後端服務的「Name」(名稱) 設為
l7-ilb-backend-service。 - 將「後端類型」(Backend type) 設為「執行個體群組」(Instance groups)。
- 在「健康狀態檢查」清單中,選取「建立健康狀態檢查」,然後輸入下列資訊:
- Name (名稱):
l7-ilb-basic-check - 「Protocol」(通訊協定):HTTP
- Port (通訊埠):
80
- Name (名稱):
- 點選「建立」。
在「New backend」(新增後端) 部分:
- 將「Instance group」(執行個體群組) 設為
l7-ilb-backend-example。 - 將「Port numbers」(通訊埠編號) 設為
80。 - 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)。
- 按一下「完成」。
- 將「Instance group」(執行個體群組) 設為
點選「建立」。
設定轉送規則
- 按一下「轉送規則」。確認「l7-ilb-backend-service」
l7-ilb-backend-service是任何不相符主機和路徑的唯一後端服務。
如要瞭解流量管理,請參閱設定流量管理。
設定前端
HTTP:
- 點選「前端設定」。
- 將「Name」(名稱) 設為
l7-ilb-forwarding-rule。 - 將「Protocol」(通訊協定) 設為
HTTP。 - 將「Subnetwork」(子網路) 設為
lb-frontend-and-backend-subnet。 即使清單中顯示 Proxy 專用子網路,也不要選取前端的 Proxy 專用子網路。 - 將「Port」(通訊埠) 設為
80。 - 按一下「IP address」(IP 位址) 選單,然後按一下「Create IP address」(建立 IP 位址)。
- 在「Reserve a static internal IP address」(保留靜態內部 IP 位址) 面板中,提供下列詳細資料:
- 在「Name」(名稱) 中輸入
ip-address-shared-vpc。 - 在「Static IP address」(靜態 IP 位址) 中,按一下「Let me choose」(自行選擇)。在「Custom IP address」(自訂 IP 位址) 中輸入
10.1.2.99。 - (選用) 如要與不同前端共用這個 IP 位址,請將「用途」設為「共用」。
- 在「Name」(名稱) 中輸入
- 按一下「完成」。
HTTPS:
如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。內部應用程式負載平衡器目前不支援 Google 管理的憑證。
- 點選「前端設定」。
- 在「Name」(名稱) 欄位中,輸入
l7-ilb-forwarding-rule。 - 在「Protocol」(通訊協定) 欄位中選取
HTTPS (includes HTTP/2)。 - 將「Subnetwork」(子網路) 設為
lb-frontend-and-backend-subnet。 即使清單中顯示 Proxy 專用子網路,也不要選取前端的 Proxy 專用子網路。 - 確認「Port」(通訊埠) 已設為
443,以允許 HTTPS 流量。 - 按一下「IP address」(IP 位址) 選單,然後按一下「Create IP address」(建立 IP 位址)。
- 在「Reserve a static internal IP address」(保留靜態內部 IP 位址) 面板中,提供下列詳細資料:
- 在「Name」(名稱) 中輸入
ip-address-shared-vpc。 - 在「Static IP address」(靜態 IP 位址) 中,按一下「Let me choose」(自行選擇)。在「Custom IP address」(自訂 IP 位址) 中輸入
10.1.2.99。 - (選用) 如要與不同前端共用這個 IP 位址,請將「用途」設為「共用」。
- 在「Name」(名稱) 中輸入
- 按一下「憑證」清單。
- 如果已有自行管理的 SSL 憑證資源,且想要做為主要 SSL 憑證使用,請在選單中選取所需資源。
- 否則,請選取「建立新憑證」。
- 在「Name」(名稱) 部分填入
l7-ilb-cert。 - 將 PEM 格式的檔案上傳至相對應的欄位:
- 公用金鑰憑證
- 憑證鏈結
- 私密金鑰
- 點選「建立」。
- 在「Name」(名稱) 部分填入
- 如要新增主要 SSL 憑證資源以外的憑證資源,請按照下列步驟操作:
- 按一下「Add certificate」(新增憑證)。
- 從「Certificates」(憑證) 清單中選取所需憑證,或是按一下「Create a new certificate」(建立新憑證) 並按照先前的指示操作。
- 按一下「完成」。
檢查並完成設定
- 點選「建立」。
gcloud
使用
gcloud compute health-checks create http指令定義 HTTP 健康狀態檢查。gcloud compute health-checks create http l7-ilb-basic-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_ID
使用
gcloud compute backend-services create指令定義後端服務。gcloud compute backend-services create l7-ilb-backend-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
使用
gcloud compute backend-services add-backend指令,將後端新增到後端服務。gcloud compute backend-services add-backend l7-ilb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
使用
gcloud compute url-maps create指令建立網址對應。gcloud compute url-maps create l7-ilb-map \ --default-service=l7-ilb-backend-service \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
建立目標 Proxy。
HTTP:
如果是內部 HTTP 負載平衡器,請使用
gcloud compute target-http-proxies create指令建立目標 Proxy。gcloud compute target-http-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
HTTPS:
如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。內部應用程式負載平衡器目前不支援 Google 管理的憑證。
將檔案路徑指派給變數名稱。
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
使用
gcloud compute ssl-certificates create指令建立區域性 SSL 憑證。gcloud compute ssl-certificates create l7-ilb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
使用區域 SSL 憑證,透過
gcloud compute target-https-proxies create指令建立目標 Proxy。gcloud compute target-https-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --region=us-west1 \ --ssl-certificates=l7-ilb-cert \ --project=SERVICE_PROJECT_ID
建立轉送規則。
如果是自訂網路,您必須參照轉送規則中的子網路。
如要取得轉送規則的 IP 位址,請使用
lb-frontend-and-backend-subnet。如果您嘗試使用僅限 Proxy 的子網路,轉送規則建立作業就會失敗。HTTP:
使用加上正確旗標的
gcloud compute forwarding-rules create指令。gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_NAME \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_ID
HTTPS:
使用加上正確旗標的
gcloud compute forwarding-rules create指令。gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_NAME \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-ilb-proxy \ --target-https-proxy-region=us-west1 \ --project=SERVICE_PROJECT_ID
Terraform
定義 HTTP 健康狀態檢查。
HTTP:
HTTPS:
定義後端服務。
建立網址對應。
建立目標 Proxy。
HTTP:
如為 HTTPS: 建立區域性 SSL 憑證
如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。內部應用程式負載平衡器目前不支援 Google 管理的憑證。
使用區域性 SSL 憑證建立目標 Proxy
建立轉送規則。
如果是自訂網路,您必須參照轉送規則中的子網路。
HTTP:
HTTPS:
測試負載平衡器
如要測試負載平衡器,請先建立範例用戶端 VM。接著與 VM 建立 SSH 工作階段,並從這個 VM 將流量傳送至負載平衡器。
建立測試 VM 執行個體
用戶端可位於主專案或任何已連線的服務專案。在本範例中,您會在服務專案中部署用戶端 VM,測試負載平衡器是否正常運作。用戶端必須使用相同的共用 VPC 網路,並與負載平衡器位於相同地區。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
將「Name」(名稱) 設為
client-vm。將「Zone」(區域) 設為 us-west1-a。
依序點選「進階選項」和「網路」。
輸入下列「Network tags」(網路標記):
allow-ssh、load-balanced-backend。在「網路介面」部分, 選取「與我共用的網路 (來源主專案:HOST_PROJECT_ID)」。
從
lb-network網路選取lb-frontend-and-backend-subnet子網路。點選「建立」。
gcloud
建立測試 VM 執行個體。
gcloud compute instances create client-vm \
--image-family=debian-12 \
--image-project=debian-cloud \
--subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
--zone=us-west1-a \
--tags=allow-ssh \
--project=SERVICE_PROJECT_ID
Terraform
建立測試 VM 執行個體。
將流量傳送至負載平衡器
使用 SSH 連線至您剛建立的執行個體,並測試後端的 HTTP(S) 服務是否可以透過內部應用程式負載平衡器的轉送規則 IP 位址連線,以及流量是否在後端執行個體之間達到負載平衡。
透過 SSH 連線至用戶端執行個體。
gcloud compute ssh client-vm \ --zone=us-west1-a
確認 IP 位址是否提供主機名稱。將 LB_IP_ADDRESS 替換為負載平衡器的 IP 位址。
curl LB_IP_ADDRESS
如要測試 HTTPS,請將
curl替換為下列內容:curl -k -s 'https://LB_IP_ADDRESS:443'
-k旗標會讓 curl 略過憑證驗證。
設定具備跨專案後端服務的負載平衡器
本頁面的上一個範例說明如何設定 Shared VPC 部署作業,其中所有負載平衡器元件及其後端都會在服務專案中建立。
您也可以透過內部應用程式負載平衡器設定 Shared VPC 部署作業,讓一個主專案或服務專案中的網址對應,參照 Shared VPC 環境中多個服務專案的後端服務 (和後端)。這稱為跨專案服務參照。
您可以參考本節中的步驟,設定下列任一支援的組合:
- 主機專案中的轉送規則、目標 Proxy 和網址對應,以及服務專案中的後端服務
- 服務專案中的轉送規則、目標 Proxy 和網址對應,以及另一個服務專案中的後端服務
跨專案服務參照可搭配執行個體群組、無伺服器 NEG 或任何其他支援的後端類型使用。如果您使用無伺服器 NEG,則必須在要建立負載平衡器前端的虛擬私有雲網路中建立 VM。如需範例,請參閱「使用 Cloud Run 設定內部應用程式負載平衡器」中的「在特定子網路中建立 VM 執行個體」。
設定需求
這個範例會設定範例負載平衡器,其前端和後端位於兩個不同的服務專案。
如果您尚未完成所有必要步驟,請先完成這些步驟,設定 Shared VPC,並設定本範例所需的網路、子網路和防火牆規則。如需操作說明,請參閱下列文章:
在服務專案 B 中建立後端和後端服務
本節的所有步驟都必須在服務專案 B 中執行。
控制台
建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。
前往「Instance templates」(執行個體範本)
- 點選「建立執行個體範本」。
- 輸入執行個體範本的「Name」(名稱):
cross-ref-backend-template。 - 確認「開機磁碟」設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明中的指令僅適用於 Debian,例如
apt-get。如要變更「開機磁碟」,請按一下「變更」。- 在「作業系統」部分,選取「Debian」。
- 在「版本」部分,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。
- 按一下「選取」。
- 依序點選「進階選項」和「網路」。
- 輸入下列「Network tags」(網路標記):
allow-ssh、load-balanced-backend。 - 在「網路介面」部分, 選取「與我共用的網路 (來源主專案:HOST_PROJECT_ID)」。
- 從
lb-network網路選取lb-frontend-and-backend-subnet子網路。 - 按一下 [Management] (管理)。在「管理」下,將以下指令碼插入至「開機指令碼」欄位。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google"
http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" |
tee /var/www/html/index.html systemctl restart apache2 - 點選「建立」。
建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 點選「建立執行個體群組」。
- 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
- 輸入執行個體群組的名稱:
cross-ref-ig-backend。 - 在「位置」部分,選取「單一可用區」。
- 在「Region」(區域) 中選取
us-west1。 - 在「Zone」(可用區) 中選取
us-west1-a。 - 針對「Instance template」(執行個體範本),選取「cross-ref-backend-template」。
指定要在群組中建立的執行個體數量。
在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:
- 在「Autoscaling mode」(自動調度資源模式),選取
Off:do not autoscale。 - 在「Maximum number of instances」(執行個體數量上限) 中輸入
2。
您也可以根據需要,在 UI 的「Autoscaling」(自動調度資源) 區段中,將執行個體群組設為根據執行個體 CPU 使用量自動新增或移除執行個體。
- 在「Autoscaling mode」(自動調度資源模式),選取
點選「建立」。
建立區域後端服務。在此步驟中,我們也會建立健康狀態檢查,並將後端新增至後端服務。前往 Google Cloud 控制台的「Backends」(後端) 頁面。
- 按一下「建立區域後端服務」。
- 輸入後端服務的「Name」(名稱):
cross-ref-backend-service。 - 在「Region」(區域) 中選取「us-west1」。
- 在「負載平衡器類型」部分,選取「區域內部應用程式負載平衡器 (INTERNAL_MANAGED)」。
- 將「後端類型」設為「執行個體群組」。
- 在「健康狀態檢查」清單中,按一下「建立健康狀態檢查」,然後輸入下列資訊:
- Name (名稱):
cross-ref-http-health-check - 「Protocol」(通訊協定):HTTP
- Port (通訊埠):
80
- Name (名稱):
- 點選「建立」。
- 在「Backends」(後端) 部分,將「Network」(網路) 設為「lb-network」。
- 點選「Add backend」,然後設定下列欄位:
- 將「Instance group」(執行個體群組) 設為「cross-ref-ig-backend」。
- 輸入「Port numbers」(通訊埠編號):
80。 - 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)。
- 按一下「完成」。
- 按一下「繼續」。
選用:在「新增權限」部分,輸入其他專案的負載平衡器管理員 IAM 主體 (通常是電子郵件地址),以便對方為自己專案中的負載平衡器使用此後端服務。如果沒有這項權限,您就無法使用跨專案服務參照。
如果您沒有權限為這個專案中的後端服務設定存取控管政策,還是可以立即建立後端服務,授權使用者稍後再執行這個步驟,詳情請參閱「授予 Load Balancer 管理員使用後端服務的權限」一節。該節也會說明如何授予存取權給這個專案中的所有後端服務,這樣您就不必在每次建立新的後端服務時授予存取權。
點選「建立」。
gcloud
使用
gcloud compute instance-templates create指令,建立含有 HTTP 伺服器的 VM 執行個體範本。gcloud compute instance-templates create BACKEND_IG_TEMPLATE \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_B_ID更改下列內容:
BACKEND_IG_TEMPLATE:執行個體群組範本的名稱。SERVICE_PROJECT_B_ID:服務專案 B 的專案 ID,負載平衡器的後端和後端服務將在此建立。HOST_PROJECT_ID:Shared VPC 主專案的專案 ID。
使用
gcloud compute instance-groups managed create指令,在區域中建立代管執行個體群組。gcloud compute instance-groups managed create BACKEND_MIG \ --zone=us-west1-a \ --size=2 \ --template=BACKEND_IG_TEMPLATE \ --project=SERVICE_PROJECT_B_ID更改下列內容:
BACKEND_MIG:後端執行個體群組的名稱。
使用
gcloud compute health-checks create http指令定義 HTTP 健康狀態檢查。gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_B_ID
更改下列內容:
HTTP_HEALTH_CHECK_NAME:HTTP 健康狀態檢查的名稱。
使用
gcloud compute backend-services create指令定義後端服務。gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_B_ID
更改下列內容:
BACKEND_SERVICE_NAME:在服務專案 B 中建立的後端服務名稱。
使用
gcloud compute backend-services add-backend指令,將後端新增到後端服務。gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --balancing-mode=UTILIZATION \ --instance-group=BACKEND_MIG \ --instance-group-zone=us-west1-a \ --region=us-west1 \ --project=SERVICE_PROJECT_B_ID
Terraform
建立執行個體範本。
建立代管執行個體群組。
HTTP
HTTPS
為後端建立健康狀態檢查。
HTTP
HTTPS
建立區域後端服務。
在服務專案 A 中建立負載平衡器前端和網址對應
本節中的所有步驟都必須在服務專案 A 中執行。
控制台
選取負載平衡器類型
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
- 按一下「Create load balancer」(建立負載平衡器)。
- 將「Type of load balancer」(負載平衡器類型) 設為「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後按一下「Next」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「跨區域或單一區域部署」部分,選取「最適合區域工作負載」,然後點選「下一步」。
- 按一下 [設定]。
基本設定
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 在「區域」部分,選取「
us-west1」。 在「Network」(網路) 中選擇「lb-network」 (來自「Project: HOST_PROJECT_NAME」)。
如果看到「在共用虛擬私有雲網路中必須要有僅限 Proxy 的子網路」警告,請確認主專案管理員已在
lb-network共用虛擬私有雲網路的us-west1區域中建立proxy-only-subnet。即使您沒有權限在這個頁面查看僅限 Proxy 的子網路,系統還是可以順利建立負載平衡器。視窗保持開啟,以便繼續操作。
設定後端
- 按一下「後端設定」。
- 按一下「跨專案後端服務」。
- 在「Project ID」部分,輸入服務專案 B 的專案 ID。
- 在「選取後端服務」清單中,選取要使用的服務專案 B 後端服務。在本例中,請輸入
cross-ref-backend-service。 - 按一下 [確定]。
設定轉送規則
- 按一下「轉送規則」。確認「cross-ref-backend-service」cross-ref-backend-service是任何不相符主機和路徑的唯一後端服務。
如要瞭解流量管理,請參閱設定流量管理。
設定前端
如要讓跨專案服務參照正常運作,前端必須使用與建立後端服務時相同的網路 (lb-network),也就是來自 Shared VPC 主專案的網路。
HTTP:
- 點選「前端設定」。
- 輸入轉送規則的「Name」(名稱):
cross-ref-http-forwarding-rule。 - 將「Protocol」(通訊協定) 設為
HTTP。 - 將「Subnetwork」(子網路) 設為
lb-frontend-and-backend-subnet。 即使清單中顯示 Proxy 專用子網路,也不要選取前端的 Proxy 專用子網路。 - 將「Port」(通訊埠) 設為
80。 - 按一下「IP address」(IP 位址) 選單,然後按一下「Create IP address」(建立 IP 位址)。
- 在「Reserve a static internal IP address」(保留靜態內部 IP 位址) 面板中,提供下列詳細資料:
- 在「Name」(名稱) 中輸入
cross-ref-ip-address。 - 在「Static IP address」(靜態 IP 位址) 中,按一下「Let me choose」(自行選擇)。在「Custom IP address」(自訂 IP 位址) 中輸入
10.1.2.98。 - (選用) 如要與不同前端共用這個 IP 位址,請將「用途」設為「共用」。
- 在「Name」(名稱) 中輸入
- 按一下「完成」。
HTTPS:
如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。內部應用程式負載平衡器目前不支援 Google 管理的憑證。
- 點選「前端設定」。
- 輸入轉送規則的「Name」(名稱):
cross-ref-https-forwarding-rule。 - 在「Protocol」(通訊協定) 欄位中選取
HTTPS (includes HTTP/2)。 - 將「Subnetwork」(子網路) 設為
lb-frontend-and-backend-subnet。 即使清單中顯示 Proxy 專用子網路,也不要選取前端的 Proxy 專用子網路。 - 確認「Port」(通訊埠) 已設為
443,以允許 HTTPS 流量。 - 按一下「IP address」(IP 位址) 選單,然後按一下「Create IP address」(建立 IP 位址)。
- 在「Reserve a static internal IP address」(保留靜態內部 IP 位址) 面板中,提供下列詳細資料:
- 在「Name」(名稱) 中輸入
cross-ref-ip-address。 - 在「Static IP address」(靜態 IP 位址) 中,按一下「Let me choose」(自行選擇)。在「Custom IP address」(自訂 IP 位址) 中輸入
10.1.2.98。 - (選用) 如要與不同前端共用這個 IP 位址,請將「用途」設為「共用」。
- 在「Name」(名稱) 中輸入
- 按一下「憑證」清單。
- 如果已有自行管理的 SSL 憑證資源,且想要做為主要 SSL 憑證使用,請在選單中選取所需資源。
- 否則,請選取「建立新憑證」。
- 輸入 SSL 憑證的名稱。
- 將 PEM 格式的檔案上傳至相對應的欄位:
- 公用金鑰憑證
- 憑證鏈結
- 私密金鑰
- 點選「建立」。
- 如要新增主要 SSL 憑證資源以外的憑證資源,請按照下列步驟操作:
- 按一下「Add certificate」(新增憑證)。
- 從「Certificates」(憑證) 清單中選取所需憑證,或是按一下「Create a new certificate」(建立新憑證) 並按照先前的指示操作。
- 按一下「完成」。
檢查並完成設定
- 點選「建立」。
測試負載平衡器
建立負載平衡器後,請按照「測試負載平衡器」一節所述步驟測試負載平衡器。
gcloud
選用:建立負載平衡器並交叉參照後端服務前,請先確認您要參照的後端服務是否可透過網址對應參照:
gcloud compute backend-services list-usable \ --region=us-west1 \ --project=SERVICE_PROJECT_B_ID建立網址對應,並將預設服務設為在服務專案 B 中建立的後端服務。
gcloud compute url-maps create URL_MAP_NAME \ --default-service=projects/SERVICE_PROJECT_B_ID/regions/us-west1/backendServices/BACKEND_SERVICE_NAME \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID更改下列內容:
URL_MAP_NAME:網址對應表的名稱。BACKEND_SERVICE_NAME:在服務專案 B 中建立的後端服務名稱。SERVICE_PROJECT_B_ID:服務專案 B 的專案 ID,負載平衡器的後端和後端服務是在這個專案中建立。SERVICE_PROJECT_A_ID:服務專案 A 的專案 ID,負載平衡器的前端會在此建立。
如果您沒有服務專案 B 中後端服務的
compute.backendServices.use權限,就無法建立網址對應。建立目標 Proxy。
HTTP:
gcloud compute target-http-proxies create HTTP_TARGET_PROXY_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID
更改下列內容:
HTTP_TARGET_PROXY_NAME:目標 HTTP Proxy 的名稱。
HTTPS:
使用
gcloud compute ssl-certificates create指令建立區域性 SSL 憑證。gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate=PATH_TO_CERTIFICATE \ --private-key=PATH_TO_PRIVATE_KEY \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID
更改下列內容:
SSL_CERTIFICATE_NAME:SSL 憑證資源的名稱。PATH_TO_CERTIFICATE:PEM 格式的本機 SSL 憑證檔案路徑。PATH_TO_PRIVATE_KEY:PEM 格式的本機 SSL 憑證私密金鑰路徑。
使用區域 SSL 憑證,透過
gcloud compute target-https-proxies create指令建立目標 Proxy。gcloud compute target-https-proxies create HTTPS_TARGET_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-west1 \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --project=SERVICE_PROJECT_A_ID
更改下列內容:
HTTPS_TARGET_PROXY_NAME:目標 HTTPS Proxy 的名稱。
建立轉送規則。如要讓跨專案服務參照正常運作,轉送規則必須使用與建立後端服務時相同的網路 (
lb-network),也就是 Shared VPC 主專案中的網路。HTTP:
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_CROSS_REF \ --ports=80 \ --region=us-west1 \ --target-http-proxy=HTTP_TARGET_PROXY_NAME \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_A_ID
更改下列內容:
HTTP_FORWARDING_RULE_NAME:用於處理 HTTP 流量的轉送規則名稱。
HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_CROSS_REF \ --ports=443 \ --region=us-west1 \ --target-https-proxy=HTTPS_TARGET_PROXY_NAME \ --target-https-proxy-region=us-west1 \ --project=SERVICE_PROJECT_A_ID
更改下列內容:
HTTPS_FORWARDING_RULE_NAME:用於處理 HTTPS 流量的轉送規則名稱。
如要測試負載平衡器,請按照「測試負載平衡器」一節所述步驟操作。
Terraform
建立網址對應。
建立目標 Proxy。
HTTP
HTTPS
建立區域性 SSL 憑證
使用區域性 SSL 憑證建立目標 Proxy
建立轉送規則。
HTTP
HTTPS
如要測試負載平衡器,請按照「測試負載平衡器」一節所述步驟操作。
授予負載平衡器管理員使用後端服務的權限
如要讓負載平衡器參照其他服務專案中的後端服務,負載平衡器管理員必須具備 compute.backendServices.use 權限。如要授予這項權限,可以使用預先定義的 IAM 角色「Compute Load Balancer Services User」(roles/compute.loadBalancerServiceUser)。這項角色必須由服務專案管理員授予,且可套用至專案層級或個別後端服務層級。
如果您在建立後端服務時,已在後端服務層級授予必要權限,則不需要執行這個步驟。您可以略過這個章節,也可以繼續閱讀,瞭解如何授予這項專案中所有後端服務的存取權,這樣就不必在每次建立新的後端服務時授予存取權。
在本例中,服務專案 B 的服務專案管理員必須執行下列其中一個指令,將 compute.backendServices.use 權限授予服務專案 A 的負載平衡器管理員。您可以在專案層級 (適用於專案中的所有後端服務) 或個別後端服務中執行這項操作。
控制台
專案層級權限
請按照下列步驟,授予專案中所有後端服務的權限。
您必須具備 compute.regionBackendServices.setIamPolicy 和 resourcemanager.projects.setIamPolicy 權限,才能完成這個步驟。
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
選取專案。
按一下 「授予存取權」。
在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址或其他 ID。
在「Select a role」(選取角色) 清單中,選取「Compute Load Balancer Services User」(Compute Load Balancer 服務使用者)。
選用:為角色新增條件。
按一下 [儲存]。
個別後端服務的資源層級權限
請按照下列步驟,授予專案中個別後端服務的權限。
您必須具備 compute.regionBackendServices.setIamPolicy 權限,才能完成這個步驟。
前往 Google Cloud 控制台的「Backends」(後端) 頁面。
從後端清單中,選取要授予存取權的後端服務,然後按一下「權限」。
按一下「新增主體」。
在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址或其他 ID。
在「Select a role」(選取角色) 清單中,選取「Compute Load Balancer Services User」(Compute Load Balancer 服務使用者)。
按一下 [儲存]。
gcloud
專案層級權限
請按照下列步驟,授予專案中所有後端服務的權限。
您必須具備 compute.regionBackendServices.setIamPolicy 和 resourcemanager.projects.setIamPolicy 權限,才能完成這個步驟。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser"
個別後端服務的資源層級權限
在後端服務層級,服務專案管理員可以使用下列任一指令,授予 Compute 負載平衡器服務使用者角色 (roles/compute.loadBalancerServiceUser)。
您必須具備 compute.regionBackendServices.setIamPolicy 權限,才能完成這個步驟。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'
或
gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=us-west1
如要使用這些指令,請將 LOAD_BALANCER_ADMIN 替換為使用者的主體,例如 test-user@gmail.com。
您也可以設定 IAM 權限,透過條件並指定條件屬性,讓權限僅適用於部分區域後端服務。
如要查看參照特定 Shared VPC 後端服務的網址對應,請按照下列步驟操作:
gcloud
如要查看參照區域 Shared VPC 後端服務的資源,請執行下列指令:
gcloud compute backend-services describe BACKEND_SERVICE_NAME \
--region REGION
更改下列內容:
BACKEND_SERVICE_NAME:負載平衡器後端服務的名稱REGION:負載平衡器的區域
在指令輸出中,查看 usedBy 欄位,該欄位會顯示參照後端服務的資源,如下列範例所示:
id: '123456789' kind: compute#backendService loadBalancingScheme: INTERNAL_MANAGED ... usedBy: - reference: https://www.googleapis.com/compute/v1/projects/my-project/region/us-central1/urlMaps/my-url-map
後續步驟
- 您可以使用機構政策限制,限制專案中共用 VPC 功能 (例如跨專案服務參照) 的使用方式。詳情請參閱「Cloud Load Balancing 的組織政策限制」。
- 如要管理內部應用程式負載平衡所需的僅限 Proxy 子網路資源,請參閱「內部應用程式負載平衡器適用的子網路 (僅限 Proxy)」一文。
- 如要瞭解如何排解內部應用程式負載平衡器的相關問題,請參閱「排解內部應用程式負載平衡器的相關問題」。
- 清除負載平衡器設定。