在共用 VPC 環境中,設定具備 Cloud Storage 值區的跨區域內部應用程式負載平衡器

本文提供兩個範例設定,說明如何在共用 VPC 環境中,透過 Cloud Storage bucket 設定跨區域內部應用程式負載平衡器:

  • 第一個範例會在一個服務專案中建立所有負載平衡器元件和後端。
  • 第二個範例會在一個服務專案中建立負載平衡器的前端元件和網址對應,而負載平衡器的後端 bucket 和 Cloud Storage bucket 則是在另一個服務專案中建立。

這兩個範例都需要相同的初始設定,才能授予必要角色設定共用虛擬私有雲,然後才能開始建立負載平衡器。

除了本文上述的範例設定,您也可以設定共用虛擬私有雲部署作業,在主專案中建立負載平衡器的前端和網址對應,並在服務專案中建立後端 bucket 和 Cloud Storage bucket。如要進一步瞭解其他有效的共用虛擬私有雲架構,請參閱「共用虛擬私有雲架構」。

如不想使用 Shared VPC 網路,請參閱「使用 Cloud Storage bucket 設定跨區域內部應用程式負載平衡器」。

事前準備

請確認設定符合下列必要條件。

建立 Google Cloud 專案

為一個主專案和兩個服務專案建立Google Cloud 專案

必要的角色

如要取得在共用虛擬私有雲環境中,設定具有 Cloud Storage bucket 的區域外部應用程式負載平衡器所需的權限,請要求管理員授予您下列 IAM 角色:

  • 如要設定共用虛擬私有雲: Compute 共用虛擬私有雲管理員 (roles/compute.xpnAdmin) 主專案
  • 如要讓服務專案管理員使用共用虛擬私有雲網路,請在主專案中指派「Compute 網路使用者」 (roles/compute.networkUser) 角色。
  • 如要建立 Cloud Storage bucket,請在服務專案中指派「Storage Object Admin」(roles/storage.objectAdmin) 角色。 Storage Object Admin (roles/storage.objectAdmin) 服務專案
  • 如要建立負載平衡資源:服務專案的「Compute Network Admin」(Compute 網路管理員) (roles/compute.networkAdmin)
  • 如要建立 Compute Engine 執行個體: 服務專案的 Compute 執行個體管理員 (roles/compute.instanceAdmin.v1)
  • 如要建立及修改 Certificate Manager SSL 憑證,您必須在服務專案中擁有 Certificate Manager Owner (roles/certificatemanager.owner) 角色。
  • 如要參照其他服務專案中的後端 bucket: 服務專案的 Compute 負載平衡器服務使用者 (roles/compute.loadBalancerServiceUser)

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

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

設定共用虛擬私有雲環境

主專案中完成下列步驟,設定共用虛擬私有雲環境:

  1. 設定負載平衡器轉送規則的子網路
  2. 設定僅限 Proxy 的子網路
  3. 設定防火牆規則
  4. 在主專案中設定共用虛擬私有雲

您不必在每次建立新的負載平衡器時,都執行本節中的步驟。不過,您必須先確認自己有權存取本文所述資源,才能繼續建立負載平衡器。

主專案使用下列虛擬私有雲網路、地區和子網路:

  • 電視網。網路是名為 lb-network自訂模式虛擬私有雲網路

  • 負載平衡器的子網路us-east1 地區中名為 subnet-us 的子網路使用 10.1.2.0/24 做為其主要 IP 範圍。asia-east1 地區中名為 subnet-asia 的子網路使用 10.1.3.0/24 做為其主要 IP 範圍。

  • Envoy Proxy 的子網路us-east1 地區中名為 proxy-only-subnet-us-east1 的子網路使用 10.129.0.0/23 做為其主要 IP 範圍。asia-east1 地區中名為 proxy-only-subnet-asia-east1 的子網路使用 10.130.0.0/23 做為其主要 IP 範圍。

設定負載平衡器轉送規則的子網路

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下「建立虛擬私有雲網路」

  3. 在「Name」(名稱) 中輸入 lb-network

  4. 在「子網路」部分,選取「子網路建立模式」的「自訂」

  5. 在「New subnet」(新的子網路) 區段中,輸入以下資訊:

    • Name (名稱):subnet-us
    • 選取「區域」us-east1
    • IP address range (IP 位址範圍):10.1.2.0/24
  6. 按一下 [完成]

  7. 按一下 [新增子網路]

  8. 在不同區域中,為負載平衡器的轉送規則建立另一個子網路。在「New subnet」(新的子網路) 區段中,輸入以下資訊:

    • Name (名稱):subnet-asia
    • Region (區域):asia-east1
    • IP address range (IP 位址範圍):10.1.3.0/24
  9. 按一下 [完成]

  10. 點選「建立」

gcloud

  1. 使用 gcloud compute networks create 指令,建立名為 lb-network 的自訂虛擬私有雲網路。

    gcloud compute networks create lb-network \
        --subnet-mode=custom \
        --project=HOST_PROJECT_ID
    
  2. 使用 gcloud compute networks subnets create 指令,在 us-east1 區域的 lb-network 虛擬私有雲網路中,建立名為 subnet-us 的子網路。

    gcloud compute networks subnets create subnet-us \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-east1 \
        --project=HOST_PROJECT_ID
    
  3. 使用 gcloud compute networks subnets create 指令,在 asia-east1 區域的 lb-network 虛擬私有雲網路中,建立名為 subnet-asia 的子網路。

    gcloud compute networks subnets create subnet-asia \
        --network=lb-network \
        --range=10.1.3.0/24 \
        --region=asia-east1 \
        --project=HOST_PROJECT_ID
    

    HOST_PROJECT_ID 替換為Google Cloud 指派給專案的專案 ID,該專案在共用虛擬私有雲環境中已啟用為主專案。

設定僅限 Proxy 的子網路

僅限 Proxy 的子網路提供一組 IP 位址, Google Cloud 會代表您執行 Envoy Proxy。Proxy 會終止來自用戶端的連線,並建立與後端的新連線。

這個僅限 Proxy 的子網路,會由與虛擬私有雲網路位於相同區域的所有 Envoy 型區域負載平衡器使用。每個地區和每個網路只能有一個活動的僅限 Proxy 子網路,用於特定用途。在本範例中,我們會建立兩個僅限 Proxy 子網路,分別位於 us-east1asia-east1 區域。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下您建立的 VPC 網路名稱。

  3. 在「子網路」分頁中,按一下「新增子網路」

  4. 輸入下列資訊:

    • 在「Name」(名稱) 中輸入 proxy-only-subnet-us
    • 在「區域」部分輸入 us-east1
    • 在「用途」部分,選取「跨區域代管 Proxy」
    • 在「IP address range」(IP 位址範圍) 中,輸入 10.129.0.0/23
  5. 按一下「新增」。

  6. asia-east1 地區中建立另一個僅限 Proxy 的子網路。 在「子網路」分頁中,按一下「新增子網路」

  7. 輸入下列資訊:

    • 在「Name」(名稱) 中輸入 proxy-only-subnet-asia
    • 在「區域」部分輸入 asia-east1
    • 在「用途」部分,選取「跨區域代管 Proxy」
    • 在「IP address range」(IP 位址範圍) 中,輸入 10.130.0.0/23
  8. 按一下「新增」。

gcloud

  1. 使用 gcloud compute networks subnets create 指令,在 us-east1 區域中建立僅限 Proxy 的子網路。

    在本範例中,僅限 Proxy 子網路的名稱為 proxy-only-subnet-us

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    
  2. 使用 gcloud compute networks subnets create 指令,在 asia-east1 區域中建立僅限 Proxy 的子網路。

    在本範例中,僅限 Proxy 子網路的名稱為 proxy-only-subnet-asia

    gcloud compute networks subnets create proxy-only-subnet-asia \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=asia-east1 \
        --network=lb-network \
        --range=10.130.0.0/23 \
        --project=HOST_PROJECT_ID
    

    HOST_PROJECT_ID 替換為指派給主專案的Google Cloud 專案 ID。

設定防火牆規則

這個範例使用輸入防火牆規則,允許透過通訊埠 22 對用戶端 VM 進行 SSH 存取。在本範例中,這項防火牆規則的名稱為 fw-allow-ssh

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

  2. 按一下「Create firewall rule」(建立防火牆規則),建立允許連入用戶端 VM 的 SSH 連線規則:

    • Name (名稱):fw-allow-ssh
    • Network (網路):lb-network
    • Direction of traffic (流量方向):「Ingress」(輸入)
    • 「Action on match」(相符時執行的動作)允許
    • 目標指定的目標標記
    • 「Target tags」(目標標記)allow-ssh
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):0.0.0.0/0
    • 通訊協定和通訊埠
      • 選擇「指定的通訊協定和通訊埠」
      • 勾選「TCP」核取方塊,然後輸入 22 做為「Port number」(通訊埠編號)。
  3. 點選「建立」

gcloud

  1. 建立防火牆規則,允許與具有 allow-ssh 網路標記的 VM 建立 SSH 連線。若省略 --source-ranges,Google Cloud 會將規則解讀為任何來源

    在本範例中,防火牆規則名為 fw-allow-ssh

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22 \
        --project=HOST_PROJECT_ID
    

    HOST_PROJECT_ID 替換為指派給主專案的Google Cloud 專案 ID。

在主專案中設定共用虛擬私有雲

您可以啟用共用虛擬私有雲主專案、共用主專案的子網路,以及將服務專案附加至主專案,讓服務專案使用共用虛擬私有雲網路。如要在主專案中設定共用虛擬私有雲,請參閱下列頁面:

完成上述步驟後,您可以選擇下列任一設定:

在服務專案中設定負載平衡器

這個範例會建立跨區域內部應用程式負載平衡器,其中所有負載平衡元件 (轉送規則、目標 Proxy、網址對應和後端 bucket) 和 Cloud Storage bucket 都會在服務專案中建立。

負載平衡器的網路資源 (例如虛擬私有雲子網路、僅限 Proxy 的子網路和防火牆規則) 會在主專案中建立。

圖 1. 共用 VPC 環境中的跨區域內部應用程式負載平衡器,以及 Cloud Storage 值區
圖 1. 共用 VPC 環境中的跨區域內部應用程式負載平衡器,搭配 Cloud Storage bucket

本節說明如何設定負載平衡器和後端。

本頁的範例設定會為負載平衡器的轉送規則明確設定保留的 IP 位址,而不允許分配暫時的 IP 位址。建議您最好為轉送規則保留 IP 位址。

設定 Cloud Storage bucket

設定 Cloud Storage bucket 的程序如下:

  1. 建立 Cloud Storage bucket
  2. 將內容複製到 Cloud Storage bucket
  3. 將 Cloud Storage bucket 設為可公開存取

建立 Cloud Storage bucket

在本範例中,您會建立兩個 Cloud Storage bucket,一個位於 us-east1 區域,另一個位於 asia-east1 區域。如為實際工作環境的部署作業,建議選擇多區域 bucket,讓系統自動在多個 Google Cloud 區域中複製物件。這麼做有助於提高內容可用性,並提升應用程式的容錯能力。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 按一下「建立」

  3. 在「開始使用」部分,輸入符合命名規範的全域不重複名稱。

  4. 按一下「Choose where to store your data」(選取資料的儲存位置)

  5. 將「Location type」(位置類型) 設為「Region」(區域)

  6. 從區域清單中選取「us-east1」

  7. 點選「建立」

  8. 按一下「Buckets」(值區),返回 Cloud Storage Buckets 頁面。 按照這些操作說明建立第二個 bucket,不過請將「Location」(位置)設為「asia-east1」

gcloud

  1. 使用 gcloud storage buckets create 指令,在 us-east1 區域中建立第一個 bucket

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    
  2. 使用 gcloud storage buckets create 指令,在 asia-east1 區域中建立第二個 bucket。

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=asia-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • BUCKET1_NAMEBUCKET2_NAME: Cloud Storage bucket 名稱

    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID

將內容複製到 Cloud Storage bucket

如要填入 Cloud Storage bucket,請將圖片檔案從公開的 Cloud Storage bucket 複製到您自己的 Cloud Storage bucket。

在 Cloud Shell 中執行下列指令,並將值區名稱變數改為不重複的 Cloud Storage 值區名稱:

  gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
  gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

BUCKET1_NAMEBUCKET2_NAME 換成 Cloud Storage bucket 名稱。

將 Cloud Storage bucket 設為可公開存取

如要將 bucket 中的所有物件設為可供公開網路中的所有使用者讀取,請授予主體 allUsers Storage 物件檢視者角色 (roles/storage.objectViewer)。

控制台

如要向所有使用者授予 bucket 中物件的檢視權限,請為每個 bucket 重複執行下列程序:

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 在 bucket 清單中,找到要設為公開的 bucket 名稱,然後點選這個名稱。

  3. 選取 [權限] 分頁標籤。

  4. 在「Permissions」(權限) 部分中,按一下「Grant access」(授予存取權限) 按鈕。系統會顯示「授予存取權」對話方塊。

  5. 在「New principals」(新增主體) 欄位中輸入 allUsers

  6. 在「選取角色」欄位中,在篩選方塊中輸入 Storage Object Viewer,然後從篩選結果中選取「Storage 物件檢視者」

  7. 按一下 [儲存]

  8. 按一下「Allow public access」(允許公開存取)

gcloud

如要向所有使用者授予值區中物件的檢視權限,請執行 gcloud storage buckets add-iam-policy-binding 指令

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

BUCKET1_NAMEBUCKET2_NAME 換成 Cloud Storage bucket 名稱。

保留負載平衡器的 IP 位址

為下列項目保留靜態內部 IP 位址:

  • us-east1 區域的轉送規則
  • asia-east1 區域的轉送規則

控制台

  1. 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。

    前往「保留靜態位址」頁面

  2. 按一下「保留內部」

  3. 在「Name」(名稱) 中輸入新地址的名稱。

  4. 將「IP version」(IP 版本) 設為「IPv4」

  5. 按一下「保留」,保留 IP 位址。

  6. 再次按照這些步驟,在 asia-east1 區域保留 IP 位址。

gcloud

  1. 如要在 us-east1 區域保留靜態內部 IP 位址,請使用 gcloud compute addresses create 指令

    gcloud compute addresses create ADDRESS1_NAME  \
       --region=us-east1 \
       --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
       --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • ADDRESS1_NAME:您要指派給這個 IP 位址的名稱
    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • SERVICE_PROJECT_ID:指派給服務專案的專案 ID Google Cloud
  2. 如要在 asia-east1 區域中預留靜態內部 IP 位址,請使用 gcloud compute addresses create 指令

    gcloud compute addresses create ADDRESS2_NAME  \
       --region=asia-east1 \
       --subnet=projects/HOST_PROJECT_ID/regions/asia-east1/subnetworks/subnet-asia \
       --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • ADDRESS2_NAME:您要指派給這個 IP 位址的名稱
    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • SERVICE_PROJECT_ID:指派給服務專案的專案 ID Google Cloud
  3. 使用 gcloud compute addresses describe 指令查看結果:

    gcloud compute addresses describe ADDRESS1_NAME \
       --project=SERVICE_PROJECT_ID
    
    gcloud compute addresses describe ADDRESS2_NAME \
       --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • ADDRESS1_NAMEADDRESS2_NAME:您指派給 IP 位址的名稱
    • SERVICE_PROJECT_ID:指派給服務專案的專案 ID Google Cloud

    傳回的 IP 位址在後續章節中稱為 RESERVED_IP_ADDRESS

設定 SSL 憑證資源

如果是使用 HTTPS 做為要求和回應通訊協定的跨區域內部應用程式負載平衡器,請使用 Certificate Manager 建立 SSL 憑證資源,如以下文件所述:

建立憑證後,即可將憑證附加至 HTTPS 目標 Proxy。

建議使用 Google 代管的憑證。

設定具備後端值區的負載平衡器

本節說明如何為跨區域內部應用程式負載平衡器建立下列資源:

在本範例中,您可以使用 HTTP 或 HTTPS 做為用戶端與負載平衡器之間的要求與回應通訊協定。如要建立 HTTPS 負載平衡器,您必須在負載平衡器的前端新增 SSL 憑證資源。

如要使用 gcloud CLI 建立上述負載平衡元件,請按照下列步驟操作:

  1. 使用 gcloud compute backend-buckets create 指令,為每個 Cloud Storage bucket 建立一個後端 bucket。後端值區的負載平衡架構為 INTERNAL_MANAGED

    在本範例中,後端 bucket 名稱為 backend-bucket-catsbackend-bucket-dogs,表示 Cloud Storage bucket 中的內容。

    gcloud compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --project=SERVICE_PROJECT_ID
    
    gcloud compute backend-buckets create backend-bucket-dogs \
        --gcs-bucket-name=BUCKET2_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • BUCKET1_NAMEBUCKET2_NAME: Cloud Storage bucket 名稱

    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID

  2. 使用 gcloud compute url-maps create 指令建立網址對應,將傳入要求轉送至後端 bucket。

    在本範例中,網址對應的名稱為 lb-map

    gcloud compute url-maps create lb-map \
        --default-backend-bucket=backend-bucket-cats \
        --global \
        --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

  3. 使用 gcloud compute url-maps add-path-matcher 指令設定網址對應的主機與路徑規則。

    在本範例中,預設後端 bucket 為 backend-bucket-cats,負責處理其中所有路徑。不過,任何以 http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg 為目標的要求都會使用 backend-bucket-dogs 後端。舉例來說,如果預設後端 (backend-bucket-cats) 中也存在 /love-to-fetch/ 資料夾,負載平衡器會優先處理 backend-bucket-dogs 後端,因為 /love-to-fetch/* 有特定的路徑規則。

    gcloud compute url-maps add-path-matcher lb-map \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
        --default-backend-bucket=backend-bucket-cats
        --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

  4. 使用 gcloud compute target-http-proxies create 指令建立目標 Proxy。

    針對 HTTP 流量,建立名為 http-proxy 的目標 HTTP Proxy,將要求轉送至網址對應:

    gcloud compute target-http-proxies create http-proxy \
        --url-map=lb-map \
        --global \
        --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

    如果是 HTTPS 流量,請建立名為 https-proxy 的目標 HTTPS Proxy,將要求轉送至網址對應。Proxy 是負載平衡器的一部分,用於保存 HTTPS 負載平衡器的 SSL 憑證。建立憑證後,即可將憑證附加至 HTTPS 目標 Proxy。

    gcloud compute target-https-proxies create https-proxy \
        --url-map=lb-map \
        --certificate-manager-certificates=CERTIFICATE_NAME \
        --global \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • CERTIFICATE_NAME:使用 Certificate Manager 建立的 SSL 憑證名稱

    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID

  5. 使用 gcloud compute forwarding-rules create 指令建立兩個全域轉送規則,一個規則使用 us-east1 區域中的 IP 位址,另一個規則使用 asia-east1 區域中的 IP 位址。

    針對 HTTP 流量,建立全域轉送規則 (http-fw-rule-1http-fw-rule-2),將傳入要求轉送至 HTTP 目標 Proxy:

    gcloud compute forwarding-rules create http-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
        --subnet-region=us-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=80 \
        --target-http-proxy=http-proxy \
        --global-target-http-proxy \
        --global \
        --project=SERVICE_PROJECT_ID
    
    gcloud compute forwarding-rules create http-fw-rule-2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/asia-east1/subnetworks/subnet-asia \
        --subnet-region=asia-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=80 \
        --target-http-proxy=http-proxy \
        --global-target-http-proxy \
        --global \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • RESERVED_IP_ADDRESS:您保留的 IP 位址
    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID

    如果是 HTTPS 流量,請建立全域轉送規則 (https-fw-rule-1https-fw-rule-2),將傳入要求轉送至 HTTPS 目標 Proxy:

    gcloud compute forwarding-rules create https-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
        --subnet-region=us-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global \
        --project=SERVICE_PROJECT_ID
    
    gcloud compute forwarding-rules create https-fw-rule-2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/asia-east1/subnetworks/subnet-asia \
        --subnet-region=asia-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • RESERVED_IP_ADDRESS:您保留的 IP 位址
    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID

將 HTTP 要求傳送至負載平衡器

從內部用戶端 VM 將要求傳送至負載平衡器的轉送規則。

取得負載平衡器轉送規則的 IP 位址

如要取得負載平衡器轉送規則的 IP 位址,請完成下列步驟:

  1. 取得負載平衡器轉送規則的 IP 位址 (http-fw-rule-1),該規則位於 us-east1 區域。

    gcloud compute forwarding-rules describe http-fw-rule-1 \
        --global \
        --project=SERVICE_PROJECT_ID
    
  2. 取得負載平衡器轉送規則的 IP 位址 (http-fw-rule-2),該規則位於 asia-east1 區域。

    gcloud compute forwarding-rules describe http-fw-rule-2 \
        --global \
        --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

    複製傳回的 IP 位址,在後續步驟中做為 FORWARDING_RULE_IP_ADDRESS 使用。

建立用戶端 VM 來測試連線

如要建立用戶端 VM 來測試連線能力,請完成下列步驟:

  1. us-east1 區域中建立名為 client-a 的用戶端 VM。

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh \
        --project=SERVICE_PROJECT_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • SERVICE_PROJECT_ID:指派給服務專案的 Google Cloud 專案 ID
  2. 建立與用戶端 VM 的 SSH 連線。

     gcloud compute ssh client-a \
         --zone=us-east1-c \
         --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

  3. 在本範例中,跨區域內部應用程式負載平衡器在虛擬私有雲網路的 us-east1asia-east1 區域中,都有前端虛擬 IP 位址 (VIP)。使用 curl 向任一區域的 VIP 發出 HTTP 要求。

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    

    請將 FORWARDING_RULE_IP_ADDRESS 替換為負載平衡器轉送規則的 IP 位址。

測試高可用性

如要測試高可用性,請完成下列步驟:

  1. 刪除 us-east1 區域中的轉送規則 (http-fw-rule-1),模擬區域性服務中斷,並檢查 us-east 區域中的用戶端是否仍可存取後端 bucket 中的資料。

    gcloud compute forwarding-rules delete http-fw-rule-1 \
        --global \
        --project=SERVICE_PROJECT_ID
    

    SERVICE_PROJECT_ID 替換為指派給服務專案的Google Cloud 專案 ID。

  2. 使用 curl 向任一區域的轉送規則 VIP 發出 HTTP 要求。

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    

    FORWARDING_RULE_IP_ADDRESS 替換為轉送規則的 IP 位址。

    如果您向 us-east1 區域中的 VIP 發出 HTTP 要求,DNS 路由政策會偵測到這個 VIP 沒有回應,並向用戶端傳回次佳的 VIP (在本例中為 asia-east1)。這項行為有助於確保應用程式在區域中斷期間仍能正常運作。

設定具備跨專案設定的負載平衡器

本頁面的上一個範例說明如何設定共用虛擬私有雲部署作業,其中所有負載平衡器元件及其後端都會在服務專案中建立。

跨區域內部應用程式負載平衡器也支援設定共用虛擬私有雲部署作業,讓一個主專案或服務專案中的網址對應表,參照共用虛擬私有雲環境中多個服務專案的後端儲存空間。

您可以參考本節中的步驟,設定下列任一支援的組合:

  • 主機專案中的轉送規則、目標 Proxy 和網址對應,以及服務專案中的後端值區
  • 服務專案中的轉送規則、目標 Proxy 和網址對應,以及另一個服務專案中的後端 bucket

本節將以後者為例,說明如何設定。

設定總覽

這個範例會設定負載平衡器,其前端和後端位於兩個不同的服務專案。

如果您尚未完成所有必要步驟,請先完成這些步驟,設定共用虛擬私有雲,並設定本範例所需的網路、子網路和防火牆規則。如需操作說明,請參閱本頁面開頭的下列各節:

圖 2:負載平衡器的前端和後端位於不同的服務專案
圖 2. 負載平衡器的前端和後端位於不同的服務專案

在服務專案 B 中設定 Cloud Storage bucket 和後端 bucket

本節中的所有步驟都必須在服務專案 B 中執行

如要建立後端 bucket,請完成下列步驟:

  1. 建立 Cloud Storage bucket
  2. 將內容複製到 Cloud Storage bucket
  3. 將 Cloud Storage bucket 設為可公開存取
  4. 建立後端 bucket,並指向 Cloud Storage bucket

建立 Cloud Storage bucket

在本範例中,您會建立兩個 Cloud Storage bucket,一個位於 us-east1 區域,另一個位於 asia-east1 區域。如為實際工作環境的部署作業,建議選擇多區域 bucket,讓系統自動在多個 Google Cloud 區域中複製物件。這麼做有助於提高內容可用性,並提升應用程式的容錯能力。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 按一下「建立」

  3. 在「開始使用」部分,輸入符合命名規範的全域不重複名稱。

  4. 按一下「Choose where to store your data」(選取資料的儲存位置)

  5. 將「Location type」(位置類型) 設為「Region」(區域)

  6. 從區域清單中選取「us-east1」

  7. 點選「建立」

  8. 按一下「Buckets」(值區),返回 Cloud Storage Buckets 頁面。 按照這些操作說明建立第二個 bucket,不過請將「Location」(位置)設為「asia-east1」

gcloud

  1. 使用 gcloud storage buckets create 指令,在 us-east1 區域中建立第一個 bucket

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    
  2. 使用 gcloud storage buckets create 指令,在 asia-east1 區域中建立第二個 bucket。

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=asia-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    

更改下列內容:

  • BUCKET1_NAMEBUCKET2_NAME:Cloud Storage bucket 名稱。

  • SERVICE_PROJECT_B_ID:指派給服務專案 B 的 Google Cloud 專案 ID。

將內容複製到 Cloud Storage bucket

如要填入 Cloud Storage bucket,請將圖片檔案從公開的 Cloud Storage bucket 複製到您自己的 Cloud Storage bucket。

在 Cloud Shell 中執行下列指令,並將值區名稱變數改為不重複的 Cloud Storage 值區名稱:

  gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
  gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

BUCKET1_NAMEBUCKET2_NAME 換成 Cloud Storage bucket 名稱。

將 Cloud Storage bucket 設為可公開存取

如要將 bucket 中的所有物件設為可供公開網路中的所有使用者讀取,請授予主體 allUsers Storage 物件檢視者角色 (roles/storage.objectViewer)。

控制台

如要向所有使用者授予 bucket 中物件的檢視權限,請為每個 bucket 重複執行下列程序:

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。

    前往「Buckets」(值區) 頁面

  2. 在 bucket 清單中,找到要設為公開的 bucket 名稱,然後點選這個名稱。

  3. 選取 [權限] 分頁標籤。

  4. 在「Permissions」(權限) 部分中,按一下「Grant access」(授予存取權限) 按鈕。系統會顯示「授予存取權」對話方塊。

  5. 在「New principals」(新增主體) 欄位中輸入 allUsers

  6. 在「選取角色」欄位中,在篩選方塊中輸入 Storage Object Viewer,然後從篩選結果中選取「Storage 物件檢視者」

  7. 按一下 [儲存]

  8. 按一下「Allow public access」(允許公開存取)

gcloud

如要向所有使用者授予值區中物件的檢視權限,請執行 gcloud storage buckets add-iam-policy-binding 指令

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

BUCKET1_NAMEBUCKET2_NAME 替換為 Cloud Storage 值區名稱。

設定具備後端值區的負載平衡器

如要建立後端 bucket,請按照下列步驟操作:

  1. 使用 gcloud compute backend-buckets create 指令,為每個 Cloud Storage bucket 建立一個後端 bucket。 後端值區的負載平衡架構為 INTERNAL_MANAGED

    在本範例中,後端 bucket 的名稱為 backend-bucket-catsbackend-bucket-dogs,表示 Cloud Storage bucket 中的內容。

    gcloud compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --project=SERVICE_PROJECT_B_ID
    
    gcloud compute backend-buckets create backend-bucket-dogs \
        --gcs-bucket-name=BUCKET2_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --project=SERVICE_PROJECT_B_ID
    

    更改下列內容:

    • BUCKET1_NAMEBUCKET2_NAME:Cloud Storage bucket 名稱。

    • SERVICE_PROJECT_B_ID:指派給服務專案 B 的 Google Cloud 專案 ID。

在服務專案 A 中設定負載平衡器前端元件

本節中的所有步驟都必須在服務專案 A 中執行

在服務專案 A 中,您需要建立下列前端負載平衡元件:

  • 附加至目標 Proxy 的 SSL 憑證資源。您可以按照先前章節所述步驟建立 SSL 憑證。
  • 負載平衡器的兩個轉送規則各有一個 IP 位址。 您可以按照先前章節所述步驟,為轉送規則建立 IP 位址。
  • 網址對應,參照服務專案 B 中的後端 bucket
  • 目標 Proxy
  • 兩個轉送規則,各有一個區域 IP 位址。

如要建立前端元件,請按照下列步驟操作:

  1. 使用 gcloud compute url-maps create 指令建立網址對應,將傳入要求轉送至後端 bucket。

    在本範例中,網址對應的名稱為 lb-map

    gcloud compute url-maps create lb-map \
        --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/global/backendBuckets/backend-bucket-cats \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • SERVICE_PROJECT_B_ID:指派給服務專案 B 的 Google Cloud 專案 ID

    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID

  2. 使用 gcloud compute url-maps add-path-matcher 指令設定網址對應的主機與路徑規則。

    在本範例中,預設後端 bucket 為 backend-bucket-cats,負責處理其中所有路徑。不過,任何以 http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg 為目標的要求都會使用 backend-bucket-dogs 後端。舉例來說,如果預設後端 (backend-bucket-cats) 中也存在 /love-to-fetch/ 資料夾,負載平衡器會優先處理 backend-bucket-dogs 後端,因為 /love-to-fetch/* 有特定的路徑規則。

    gcloud compute url-maps add-path-matcher lb-map \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/global/backendBuckets/backend-bucket-dogs" \
        --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/global/backendBuckets/backend-bucket-cats \
        --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • SERVICE_PROJECT_B_ID:指派給服務專案 B 的 Google Cloud 專案 ID

    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID

  3. 使用 gcloud compute target-http-proxies create 指令建立目標 Proxy

    針對 HTTP 流量,建立名為 http-proxy 的目標 HTTP Proxy,將要求轉送至網址對應:

    gcloud compute target-http-proxies create http-proxy \
        --url-map=lb-map \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    SERVICE_PROJECT_A_ID 替換為指派給服務專案 A 的專案 IDGoogle Cloud 。

    如果是 HTTPS 流量,請建立名為 https-proxy 的目標 HTTPS Proxy,將要求轉送至網址對應。Proxy 是負載平衡器的一部分,用於保存 HTTPS 負載平衡器的 SSL 憑證。建立憑證後,即可將憑證附加至 HTTPS 目標 Proxy。

    gcloud compute target-https-proxies create https-proxy \
        --url-map=lb-map \
        --certificate-manager-certificates=CERTIFICATE_NAME \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • CERTIFICATE_NAME:使用 Certificate Manager 建立的 SSL 憑證名稱

    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID

  4. 使用 gcloud compute forwarding-rules create 指令建立兩個全域轉送規則,一個規則使用 us-east1 區域中的 IP 位址,另一個規則使用 asia-east1 區域中的 IP 位址。

    針對 HTTP 流量,建立全域轉送規則 (http-fw-rule-1http-fw-rule-2),將傳入要求轉送至 HTTP 目標 Proxy:

      gcloud compute forwarding-rules create http-fw-rule-1 \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
          --subnet-region=us-east1 \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --target-http-proxy=http-proxy \
          --global-target-http-proxy \
          --global \
          --project=SERVICE_PROJECT_A_ID
    
      gcloud compute forwarding-rules create http-fw-rule-2 \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=projects/HOST_PROJECT_ID/regions/asia-east1/subnetworks/subnet-asia \
          --subnet-region=asia-east1 \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --target-http-proxy=http-proxy \
          --global-target-http-proxy \
          --global \
          --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • RESERVED_IP_ADDRESS:您保留的 IP 位址
    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID

    如果是 HTTPS 流量,請建立全域轉送規則 (https-fw-rule-1https-fw-rule-2),將傳入要求轉送至 HTTPS 目標 Proxy:

    gcloud compute forwarding-rules create https-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
        --subnet-region=us-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global \
        --project=SERVICE_PROJECT_A_ID
    
    gcloud compute forwarding-rules create https-fw-rule-2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/asia-east1/subnetworks/subnet-asia \
        --subnet-region=asia-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • RESERVED_IP_ADDRESS:您保留的 IP 位址
    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID

授予 Load Balancer Admin 使用後端儲存空間的權限

如要讓負載平衡器參照其他服務專案中的後端值區,負載平衡器管理員必須具備 compute.backendBuckets.use 權限。如要授予這項權限,可以使用名為「Compute 負載平衡器服務使用者」的預先定義 IAM 角色 (roles/compute.loadBalancerServiceUser)。這項角色必須由服務專案管理員授予,且可套用至服務專案層級或個別後端值區層級。

在本例中,服務專案 B 的服務專案管理員必須執行下列其中一個指令,將 compute.backendBuckets.use 權限授予服務專案 A 的負載平衡器管理員。您可以在專案層級 (適用於專案中的所有後端 bucket),或針對每個後端 bucket 執行這項操作。

控制台

專案層級權限

請按照下列步驟,授予專案中所有後端 bucket 的權限。

您必須具備 compute.backendBuckets.setIamPolicyresourcemanager.projects.setIamPolicy 權限,才能完成這個步驟。

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」(身分與存取權管理) 頁面

  2. 選取專案。

  3. 按一下 「授予存取權」

  4. 在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址或其他 ID。

  5. 在「指派角色」部分,按一下「新增角色」

  6. 在「Select roles」(選取角色) 對話方塊的「Search for roles」(搜尋角色) 欄位中,輸入 Compute Load Balancer Services User

  7. 勾選「Compute Load Balancer Services User」核取方塊。

  8. 按一下「套用」

  9. 選用:為角色新增條件

  10. 按一下 [儲存]

個別後端 bucket 的資源層級權限

請按照下列步驟,授予專案中個別後端 bucket 的權限。

您必須具備 compute.backendBuckets.setIamPolicy 權限,才能完成這個步驟。

  1. 前往 Google Cloud 控制台的「Backends」(後端) 頁面。

    前往「後端」

  2. 從後端清單中,選取要授予存取權的後端值區,然後按一下「權限」

  3. 按一下「新增主體」

  4. 在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址或其他 ID。

  5. 在「Select a role」(選取角色) 清單中,選取「Compute Load Balancer Services User」(Compute Load Balancer 服務使用者)

  6. 按一下 [儲存]

gcloud

專案層級權限

請按照下列步驟,授予專案中所有後端 bucket 的權限。

您必須具備 compute.backendBuckets.setIamPolicyresourcemanager.projects.setIamPolicy 權限,才能完成這個步驟。

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

更改下列內容:

  • SERVICE_PROJECT_B_ID:指派給服務專案 B 的專案 ID Google Cloud
  • LOAD_BALANCER_ADMIN:要新增繫結的主體

個別後端 bucket 的資源層級權限

在後端儲存空間層級,服務專案管理員可以使用下列任一指令,授予 Compute 負載平衡器服務使用者角色 (roles/compute.loadBalancerServiceUser):

使用 gcloud projects add-iam-policy-binding 指令授予 Compute 負載平衡器服務使用者角色。

您必須具備compute.backendBuckets.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/global/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
取代下列項目:
  • SERVICE_PROJECT_B_ID:指派給服務專案 B 的專案 ID Google Cloud
  • LOAD_BALANCER_ADMIN:要新增繫結的主體
  • BACKEND_BUCKET_NAME:後端 bucket 的名稱
或者,使用 gcloud compute backend-buckets add-iam-policy-binding 指令 授予 Compute 負載平衡器服務使用者角色。
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \

將 HTTP 要求傳送至負載平衡器

從內部用戶端 VM 將要求傳送至負載平衡器的轉送規則。

取得負載平衡器轉送規則的 IP 位址

如要取得負載平衡器轉送規則的 IP 位址,請完成下列步驟:

  1. 取得負載平衡器轉送規則的 IP 位址 (http-fw-rule-1),該規則位於 us-east1 區域。

    gcloud compute forwarding-rules describe http-fw-rule-1 \
        --global \
        --project=SERVICE_PROJECT_A_ID
    
  2. 取得負載平衡器轉送規則的 IP 位址 (http-fw-rule-2),該規則位於 asia-east1 區域。

    gcloud compute forwarding-rules describe http-fw-rule-2 \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    SERVICE_PROJECT_A_ID 替換為指派給服務專案 A 的專案 IDGoogle Cloud 。

    複製傳回的 IP 位址,在後續步驟中做為 FORWARDING_RULE_IP_ADDRESS 使用。

建立用戶端 VM 來測試連線

如要建立用戶端 VM 來測試連線能力,請完成下列步驟:

  1. us-east1 區域中建立名為 client-a 的用戶端 VM。

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh \
        --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:指派給主機專案的 Google Cloud 專案 ID
    • SERVICE_PROJECT_A_ID:指派給服務專案 A 的 Google Cloud 專案 ID
  2. 建立與用戶端 VM 的 SSH 連線。

     gcloud compute ssh client-a \
         --zone=us-east1-c \
         --project=SERVICE_PROJECT_A_ID
    

    SERVICE_PROJECT_A_ID 替換為指派給服務專案 A 的專案 IDGoogle Cloud 。

  3. 在本範例中,跨區域內部應用程式負載平衡器在虛擬私有雲網路的 us-east1asia-east1 區域中,都有前端虛擬 IP 位址 (VIP)。使用 curl 向任一區域的 VIP 發出 HTTP 要求。

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    

    請將 FORWARDING_RULE_IP_ADDRESS 替換為負載平衡器轉送規則的 IP 位址。

如要測試高可用性,請參閱本文的「測試高可用性」一節。

後續步驟