設定具有跨專案後端服務和後端值區的全域外部應用程式負載平衡器

本文說明如何建立全域外部應用程式負載平衡器,其中後端服務和後端 bucket 位於與負載平衡器前端和網址對應不同的專案中。這種部署模式稱為跨專案服務參照

本文件使用的範例並未使用共用虛擬私有雲環境來設定跨專案服務參照。如要進一步瞭解如何在共用虛擬私有雲端環境中設定跨專案參照服務,請參閱「使用共用虛擬私有雲端設定全域外部應用程式負載平衡器」。

事前準備

請確認您的設定符合下列先決條件。

所需的 IAM 角色和權限

如要按照本指南操作,您必須具備下列 IAM 角色:

工作 必要角色
建立專案 專案建立者角色 (roles/resourcemanager.projectCreator)
建立運算資源 Compute 網路管理員角色 (roles/compute.networkAdmin)
建立 Cloud Storage 值區 Storage 物件管理員角色 (roles/storage.objectAdmin)

使用其他專案中的資源

(在本範例中,專案 A 會參照位於專案 B 中的後端服務和後端 bucket。)

在這個範例中,B 專案的管理員必須將 Compute 負載平衡器服務使用者角色 (roles/compute.loadBalancerServiceUser) 授予 A 專案的管理員,以便存取 B 專案中的後端服務和後端儲存桶。這個角色可在專案層級或資源層級授予。

如要進一步瞭解如何指派這個角色,請參閱「授予 Compute 負載平衡器管理員使用後端服務的權限」一文。

建立 Google Cloud 專案

以本文件中的範例來說,請按照指示操作兩次,建立兩個 Google Cloud 專案。

控制台

如要建立新專案,請執行下列步驟:

  1. 前往 Google Cloud 控制台的「管理資源」頁面。

    前往「Manage Resources」(管理資源) 頁面

    其餘步驟會顯示在 Google Cloud 控制台。

  2. 在頁面頂端的「Select organization」(選取機構) 下拉式清單中,選取要建立專案的機構資源。如果您是免費試用的使用者,請略過這個步驟,因為系統不會顯示這個清單。
  3. 按一下「Create Project」(建立專案)
  4. 在顯示的「New Project」(新增專案) 視窗中,輸入專案名稱並選取適當的帳單帳戶。專案名稱只能由英文字母、數字、單引號、連字號、空格或驚嘆號組成,而且長度必須介於 4 至 30 個字元之間。
  5. 在「Location」(位置) 方塊中輸入上層機構或資料夾,該資源將成為新專案的階層父項。如果系統顯示「No organization」(無機構) 這個選項,只要選取該選項即可建立新專案,做為其資源階層的頂層。
  6. 輸入新專案的詳細資料後,按一下「Create」(建立)

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如要建立新專案,請使用 gcloud projects create 指令:

    gcloud projects create PROJECT_ID
    

    其中 PROJECT_ID 是您要建立的專案 ID。專案 ID 的開頭必須是小寫英文字母且僅包含 ASCII 字母、數字或連字號,並且必須介於 6 至 30 個字元。

設定總覽

如下圖所示,全域外部應用程式負載平衡器的前端和網址對應項目是在與負載平衡器後端服務和後端 bucket 不同的專案中建立。這類跨專案部署作業不會使用共用虛擬私有雲環境。

在這個設定中,網址對應會將靜態內容 (/images/*) 的要求轉送至後端值區,而所有其他要求則會轉送至預設後端服務。

跨區域內部應用程式負載平衡器會將流量傳送至位於不同專案的 Cloud Storage 後端服務和後端值區。
跨專案部署 (按一下可放大)。

下表概略說明在 project Aproject B 中建立的資源。負載平衡器的前端和網址對應關係是在專案 A 中建立,而後端元件是在專案 B 中建立。

在專案 A 中建立的資源 在專案 B 中建立的資源
  • IP 位址
  • SSL 憑證
  • 網址對應
  • 目標 Proxy
  • 轉送規則
  • 虛擬私有雲網路
  • 子網路
  • 後端服務

    後端服務會參照執行個體群組中的後端執行個體。下列資源可用於建立後端執行個體。為了說明本例,後端執行個體會在 us-west1 地區的 lb-backend-subnet 子網路中建立。

    • 執行個體範本
    • 執行個體群組
    • 健康狀態檢查
    • 防火牆規則
  • 後端 Bucket
    • 後端值區會參照 Cloud Storage 值區。

在後續章節中,我們將設定上述表格中列出的不同資源,首先為專案 B 中的負載平衡器後端 VM 設定 VPC 網路和子網路。

在專案 B 中,為負載平衡器的後端 VM 設定網路和子網路

為了方便說明,我們會在下列網路和子網路中建立後端 VM:

  • 網路:網路是名為 lb-network自訂模式虛擬私人雲端網路

  • 負載平衡器後端 VM 的子網路us-west1 地區中名為 lb-backend-subnet 的子網路使用 10.1.2.0/24 做為主要 IP 範圍。子網路的主要和次要 IPv4 位址範圍是區域內部 IPv4 位址。詳情請參閱「有效的 IPv4 範圍」。

主控台

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

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

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

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

  4. 在「子網路」部分,將「子網路建立模式」設為「自訂」

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

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

  7. 按一下 [建立]。

gcloud

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

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

    gcloud compute networks subnets create lb-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1 \
        --project=PROJECT_B_ID
    

在專案 B 中設定後端服務

如要設定後端服務,請執行下列操作:

  • 建立執行個體範本。
  • 建立執行個體群組。
  • 建立健康狀態檢查。
  • 建立防火牆規則。
  • 建立後端服務。

建立執行個體範本

建立代管執行個體群組之前,您必須先建立執行個體範本,這是一種資源,可用來建立虛擬機器 (VM) 執行個體。從用戶端到執行個體群組 VM 的流量會經過負載平衡。代管執行個體群組提供的 VM 會執行外部應用程式負載平衡器的後端伺服器。在這個範例中,後端會提供自己的主機名稱。

主控台

  1. 在 Google Cloud 控制台中,前往 Compute Engine 的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 點選「建立執行個體範本」

  3. 在「Name」(名稱) 中輸入 backend-template

  4. 在「Boot disk」(開機磁碟) 專區中,確認開機磁碟已設為 Debian 映像檔,例如 Debian GNU/Linux 12 (bookworm)。如有需要,請按一下「Change」(變更),以變更映像檔。

  5. 展開「Advanced options」(進階選項) 區段。

  6. 展開「Networking」,然後設定下列欄位:

    1. 在「網路標記」中輸入 load-balanced-backend
    2. 在「網路介面」部分中,設定下列欄位:
      • Network (網路):lb-network
      • Subnet (子網路):lb-backend-subnet
      • IP 堆疊類型IPv4
    3. 然後按一下 [完成]
  7. 展開「管理」。在「Startup script」(開機指令碼) 欄位中,輸入下列指令碼:

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    # Retrieve the instance name from metadata
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    # Create an index file
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    # Restart Apache to apply changes
    systemctl restart apache2' \
    
  8. 按一下 [建立]。

gcloud

  1. 建立執行個體範本。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --region=us-west1 \
        --network=projects/PROJECT_B_ID/global/networks/lb-network \
        --subnet=projects/PROJECT_B_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=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
        # Retrieve the instance name from metadata
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        # Create an index file
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        # Restart Apache to apply changes
        systemctl restart apache2' \
        --project=PROJECT_B_ID
    

建立代管執行個體群組

主控台

  1. 在 Google Cloud 控制台中,前往 Compute Engine 的「Instance groups」(執行個體群組) 頁面。

    前往執行個體群組

  2. 按一下「建立執行個體群組」

  3. 從選項中選取「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))

  4. 輸入 lb-backend 做為執行個體群組的名稱。

  5. 在「Instance template」(執行個體範本) 清單中,選取您在上一個步驟中建立的執行個體範本 backend-template

  6. 在「Location」(位置) 專區中,選取「Single zone」(單一可用區),並輸入下列值:

    • 在「Region」(區域) 中選取 us-west1

    • 在「Zone」(可用區) 中選取 us-west1-a

  7. 在「Autoscaling」(自動調度資源) 區段中,輸入以下的值:

    • 針對「Autoscaling mode」(自動調度資源模式),選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體)

    • 在「Minimum number of instances」(執行個體數量下限) 中選取 2

    • 在「Maximum number of instances」(執行個體數量上限) 中選取 3

  8. 在「Port mapping」(通訊埠對應) 專區中,按一下「Add port」(新增通訊埠),然後輸入下列值:

    • 在「Port name」(通訊埠名稱) 中輸入 http

    • 在「Port number」(通訊埠編號) 中輸入 80

  9. 按一下 [建立]。

gcloud

  1. 建立代管執行個體群組,並選取在上一個步驟中建立的執行個體範本:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --zone=us-west1-a \
        --size=2 \
        --template=INSTANCE_TEMPLATE_NAME \
        --project=PROJECT_B_ID
    
  2. 將已命名通訊埠新增至執行個體群組:

    gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=PROJECT_B_ID
    

建立健康狀態檢查

健康狀態檢查可以確認後端的可用性。建立使用 HTTP 通訊協定和在 80 通訊埠上探測的健康狀態檢查。稍後,您將將此健康狀態檢查附加至負載平衡器參照的後端服務。

主控台

  1. 在 Google Cloud 控制台中,前往 Compute Engine 的「Health checks」(健康狀態檢查) 頁面。

    前往「Health checks」(健康狀態檢查) 頁面

  2. 將健康狀態檢查的名稱設為 lb-health-check

  3. 將「Protocol」(通訊協定) 設為「HTTP」HTTP

  4. 按一下 [建立]。

gcloud

建立 HTTP 健康狀態檢查。

gcloud compute health-checks create http lb-health-check \
  --use-serving-port \
  --project=PROJECT_B_ID

建立防火牆規則

針對健康狀態檢查探測器,您必須在網路層級建立輸入允許防火牆規則,在本例中為 lb-network。這項防火牆規則可讓健康狀態檢查探測器存取後端執行個體。這個範例使用以下防火牆規則:

  • fw-allow-health-check:輸入規則,適用於要進行負載平衡的執行個體,可允許來自 130.211.0.0/2235.191.0.0/16 中 Google Cloud健康檢查系統的所有 TCP 流量。這個範例會使用目標標記 load-balanced-backend 來辨識應套用這項規則的執行個體。

主控台

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

    前往「防火牆政策」

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

    • Name (名稱):fw-allow-health-check
    • Network (網路):lb-network
    • Direction of traffic (流量方向):「Ingress」(輸入)
    • 「Action on match」(相符時執行的動作)「允許」
    • 目標指定的目標標記
    • 「Target tags」(目標標記)load-balanced-backend
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):130.211.0.0/2235.191.0.0/16
    • 通訊協定和通訊埠
      • 選擇「Specified protocols and ports」
      • 勾選「TCP」TCP核取方塊,然後輸入 80 做為「Port number」(通訊埠編號)。最佳做法是將這個規則限制為只允許與健康檢查所使用的通訊協定和通訊埠相符的通訊協定和通訊埠。如果您將通訊協定和通訊埠指定為 tcp:80, Google Cloud 可以使用通訊埠 80 的 HTTP 與 VM 聯絡,但無法使用通訊埠 443 的 HTTPS 與 VM 聯絡。
  3. 按一下 [建立]。

gcloud

  1. 建立 fw-allow-health-check 防火牆規則,允許Google Cloud 健康狀態檢查。這個範例可允許來自健康狀態檢查探測器的所有 TCP 流量。不過,您可以設定較狹隘的連接埠組合,以符合需求。

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp \
       --project=PROJECT_B_ID
    

建立後端服務

建立全域後端服務,將流量分配到後端。在這個步驟中,您需要將建立的健康狀態檢查指派給後端服務,並將執行個體群組新增至後端服務,做為後端使用。

主控台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 前往「後端」部分。

  3. 按一下「建立後端服務」

  4. 在「全域後端服務」部分,按一下旁邊的「建立」按鈕。

  5. 輸入 cross-ref-backend-service 做為後端服務的名稱。

  6. 在「Backend type」(後端類型) 部分,選取「Instance group」(執行個體群組)

  7. 將「Protocol」(通訊協定) 設為「HTTP」

  8. 在「Named port」(已命名通訊埠) 欄位輸入 http,也就是您在建立代管執行個體群組時輸入的通訊埠名稱。

  9. 如要將後端新增至後端服務,請按照下列指示操作:

    1. 在「Backends」專區中,將「Instance group」設為 lb-backend,也就是您在先前步驟中建立的代管執行個體群組。

    2. 在「Port numbers」(通訊埠編號) 的部分,輸入 80

    3. 如要新增後端,請按一下「完成」

  10. 如要新增健康狀態檢查,請在「Health check」(健康狀態檢查) 清單中選取 lb-health-check,也就是您先前建立的健康狀態檢查。

  11. 如要建立後端服務,請按一下「Create」(建立)

gcloud

  1. 建立全域後端服務,將流量分配到後端:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=HEALTH_CHECK_NAME \
        --global \
        --project=PROJECT_B_ID
    
  2. 將執行個體群組新增至後端服務,做為後端使用:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=us-west1-a \
        --global \
        --project=PROJECT_B_ID
    

在專案 B 中設定後端值區

如要建立後端值區,請執行下列操作:

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

建立 Cloud Storage bucket

主控台

  1. 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。

    前往「Buckets」(值區) 頁面

  2. 按一下「建立」

  3. 在「Name your bucket」(為值區命名) 方塊中,輸入全域不重複的名稱,並遵守命名規範

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

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

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

  7. 按一下 [建立]。

gcloud

  1. 使用 gcloud storage buckets create 指令,在 us-east1 區域中建立值區。

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=PROJECT_B_ID
    

將變數 BUCKET_NAME 替換為 Cloud Storage 值區名稱。

將圖形檔案複製到 Cloud Storage 值區

在 Cloud Shell 中執行下列指令,並將值區名稱變數改為您專屬的 Cloud Storage 值區名稱,即可將圖形檔案從公開 Cloud Storage 值區複製到您自己的 Cloud Storage 值區中的 images/ 資料夾:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/images/

將 Cloud Storage bucket 設為可公開讀取

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

主控台

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

  1. 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。

    前往「Buckets」(值區) 頁面

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

  3. 選取靠近頁面上方的 [Permissions] (權限) 分頁標籤。

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

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

  6. 在「請選擇角色」欄位中,在篩選器方塊中輸入 Storage Object Viewer,然後從篩選結果中選取「Storage Object Viewer」

  7. 按一下 [儲存]

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

gcloud

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

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

將值區名稱變數替換為專屬的 Cloud Storage 值區名稱。

建立後端值區

後端值區是您先前建立的 Cloud Storage 值區的包裝函式。這些值區會將傳入流量導向至 Cloud Storage 值區。

主控台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 前往「後端」部分。

  3. 按一下「建立後端值區」

  4. 輸入後端值區的名稱。

  5. 選取要將後端值區指向的 Cloud Storage 值區。

  6. 按一下 [建立]。

gcloud

在專案 B 中使用 gcloud compute backend-buckets create 指令建立後端值區。

gcloud compute backend-buckets create BACKEND_BUCKET_NAME \
  --gcs-bucket-name=BUCKET_NAME \
  --project=PROJECT_B_ID

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

本節說明如何在專案 A 中設定下列負載平衡器前端元件:

  • IP 位址
  • SSL 憑證
  • 網址對應
  • 目標 Proxy
  • 轉送規則

保留負載平衡器的 IP 位址

預留可指派給負載平衡器轉送規則的全域靜態外部 IP 位址。

主控台

  1. 在 Google Cloud 控制台中,前往虛擬私有雲的「IP addresses」(IP 位址) 頁面。

    前往「IP 位址」

  2. 按一下「保留外部靜態 IP 位址」

  3. 在「Name」(名稱) 中輸入 cross-ref-ip-address

  4. 將「Network Service Tier」(網路服務級別) 設為「Premium」

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

  6. 將「Type」(類型) 設為「Global」(通用)

  7. 按一下「保留」

gcloud

建立全域靜態外部 IP 位址。

gcloud compute addresses create IP_ADDRESS_NAME \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global \
    --project=PROJECT_A_ID

設定 SSL 憑證資源

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

按照以下說明文件的說明建立 SSL 憑證資源:

建議您使用 Google 代管的憑證。

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

設定全域外部應用程式負載平衡器的元件

主控台

開始設定

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 點選「建立負載平衡器」
  3. 在「Type of load balancer」(負載平衡器類型)部分,選取「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後點選「Next」(下一步)
  4. 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」
  5. 在「全域或單一區域部署」部分,選取「最適合全域工作負載」,然後點選「Next」
  6. 在「Load balancer generation」(負載平衡器代別) 部分,選取「Global external Application Load Balancer」(全域外部應用程式負載平衡器),然後點選「Next」(下一步)
  7. 按一下 [設定]

基本設定

  1. 輸入負載平衡器的名稱。
  2. 請保持頁面開啟狀態,以便繼續操作。

設定前端

HTTP:

  1. 按一下「前端設定」
  2. 輸入轉送規則的名稱。
  3. 將「Protocol」(通訊協定) 設為 HTTP
  4. 選取您在「保留負載平衡器的 IP 位址」中建立的 IP 位址
  5. 將「Port」(通訊埠) 設為 80
  6. 按一下 [完成]

適用於 HTTPS:

如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。

  1. 按一下「前端設定」
  2. 輸入轉送規則的名稱。
  3. 在「Protocol」欄位中選取 HTTPS (includes HTTP/2)
  4. 選取您在「保留負載平衡器的 IP 位址」中建立的 IP 位址
  5. 確認「Port」(通訊埠) 已設為 443,以允許 HTTPS 流量。
  6. 按一下「憑證」清單。
  7. 選取先前建立的 SSL 憑證名稱
  8. 按一下 [完成]

設定後端

  1. 按一下「後端設定」
  2. 按一下「跨專案後端服務」
  3. 在「Project ID」中,輸入專案 B 的專案 ID
  4. 在「Select backend services」(選取後端服務)清單中,選取要使用的專案 B 後端服務。
  5. 按一下「確定」

設定轉送規則

  1. 按一下「轉送規則」

  2. 選取「進階型主機與路徑規則」

  3. 選取「Add host and path rule」(新增主機與路徑規則)

  4. 在「Hosts」欄位中輸入 *,即可比對所有主機名稱。

  5. 在「Patch matcher」部分,輸入下列 YAML 設定。

    defaultService: projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME
    name: PATH_MATCHER_NAME
    pathRules:
    - paths:
      - /images/*
      service: projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    

    在這個範例中,路徑比對器由路徑規則和預設服務組成。路徑規則會將所有傳送至 /images/* 的要求轉送至後端值區。所有其他要求都會轉送至預設後端服務。

  6. 按一下 [完成]

如要瞭解流量管理,請參閱「流量管理總覽」。

檢查並完成設定

  1. 查看您在先前步驟中設定的負載平衡器的不同元件。您會發現「Backends」專區同時參照後端服務和後端值區。

  2. 按一下 [建立]。

gcloud

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

  1. 使用 gcloud compute url-maps create 指令建立網址對應。

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \
      --global \
      --project=PROJECT_A_ID
    
  2. 為網址對應新增路徑比對器。在這個範例中,路徑比對器包含路徑規則和預設服務。路徑規則會將所有傳送至 /images/* 的要求轉送至後端值區。所有其他要求都會轉送至預設後端服務。

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
      --path-matcher-name=PATH_MATCHER_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME  \
      --backend-bucket-path-rules=/images/*=projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    
  3. 使用 gcloud compute target-http-proxies create 指令建立目標 Proxy。

    針對 HTTP 流量,建立目標 HTTP Proxy,將要求轉送至網址對應:

    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --global \
      --project=PROJECT_A_ID
    

    針對 HTTPS 流量,請建立目標 HTTPS Proxy,將要求轉送至網址對應。Proxy 是負載平衡器的一部分,用於保存 HTTPS 負載平衡器的 SSL 憑證。建立憑證後,您可以將憑證附加至 HTTPS 目標 Proxy。

    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE_NAME \
      --global \
      --project=PROJECT_A_ID
    

    CERTIFICATE_NAME 替換為 SSL 憑證的名稱。

  4. 使用 gcloud compute forwarding-rules create 指令建立通用轉送規則

    針對 HTTP 流量,請建立全域轉送規則,將傳入要求轉送至 HTTP 目標 Proxy:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-http-proxy=TARGET_HTTP_PROXY_NAME \
      --ports=80 \
      --project=PROJECT_A_ID
    

    針對 HTTPS 流量,請建立全域轉送規則,將傳入要求轉送至 HTTPS 目標 Proxy:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --ports=443 \
      --project=PROJECT_A_ID
    

測試負載平衡器

負載平衡器可能需要幾分鐘的時間才能設定完成,之後您就可以向負載平衡器傳送要求。在此範例中,要求會傳送至負載平衡器的 HTTP 轉送規則。

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

gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \
    --global

如果您將瀏覽器指向 http://IP_ADDRESS,要求會轉送至後端服務,後者會傳回包含後端執行個體最少資訊的頁面。

不過,如果您將瀏覽器指向 http://IP_ADDRESS/images/three-cats.jpg,系統會將對 /images/* 的請求轉送至後端值區,並傳回圖形檔案。

後續步驟