使用共用虛擬私有雲設定區域性外部應用程式負載平衡器

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

  • 第一個範例會在一個服務專案中建立所有負載平衡器元件和後端。
  • 第二個範例會在一個服務專案中建立負載平衡器的前端元件和網址對應,而負載平衡器的後端服務和後端則是在另一個服務專案中建立。這種部署方式 (網址對應參照其他專案中的後端服務) 稱為跨專案服務參照

在開始建立負載平衡器之前,這兩個範例都需要相同的初始設定,才能授予權限設定共用虛擬私有雲

區域外部應用程式負載平衡器支援的共用虛擬私有雲設定不只這些。如需其他有效的共用虛擬私有雲架構,請參閱「共用虛擬私有雲架構」。

如不想使用共用 VPC 網路,請參閱「設定具有 VM 執行個體群組後端的區域外部應用程式負載平衡器」。

事前準備

  1. 請參閱共用虛擬私有雲總覽
  2. 請參閱外部應用程式負載平衡器總覽,包括「共用 VPC 架構」一節。

必要權限

如要在共用虛擬私有雲網路中設定負載平衡器,管理員必須先進行一些初始設定和佈建作業。完成初始設定後,服務專案擁有者可以執行下列任一操作:

  • 在服務專案中部署負載平衡器的所有元件和後端。
  • 在服務專案中部署負載平衡器的後端元件 (後端服務和後端),這些元件可由其他服務或主機專案中的網址對應參照。

本節將摘要說明按照本指南操作,在共用虛擬私有雲網路上設定負載平衡器時所需的權限。

設定共用虛擬私有雲

如要執行下列工作,您必須具備下列角色:

  1. 執行一次性管理工作,例如設定共用虛擬私有雲和啟用主專案。
  2. 執行管理工作,每次要啟用新的服務專案時,都必須重複這些工作。包括附加服務專案、佈建及設定網路資源,以及授予服務專案管理員存取權。

這些工作必須在共用虛擬私有雲主專案中執行。建議您將共用 VPC 管理員設為共用 VPC 主專案的擁有者。系統會自動授予網路管理員和安全管理員角色。

工作 必要角色
設定共用虛擬私有雲、啟用主專案,並授予服務專案管理員存取權 共用虛擬私有雲管理員
在共用 VPC 託管專案中建立子網路,並授予服務專案管理員存取權 網路管理員
新增與移除防火牆規則 安全管理員

子網路佈建完成後,主專案擁有者必須在主專案中,將「網路使用者」角色授予需要使用這些資源的任何人 (通常是服務專案管理員、開發人員或服務帳戶)。

工作 必要角色
使用屬於主專案的虛擬私有雲網路和子網路 網路使用者

您可以在專案層級或個別子網路授予這個角色。建議您在個別子網路上授予角色。在專案中授予角色,即可存取主專案虛擬私有雲網路中現有和日後的所有子網路。

部署負載平衡器和後端

服務專案管理員必須在服務專案中具備下列角色,才能建立負載平衡資源和後端。服務專案擁有者或編輯者會自動取得這些權限。

在服務專案中授予的角色
工作 必要角色
建立負載平衡器元件 網路管理員
建立執行個體 執行個體管理員
建立及修改 SSL 憑證 安全管理員

必要條件

在本節中,您需要執行下列步驟:

  1. 在主專案中設定網路和子網路
  2. 在主專案中設定共用虛擬私有雲

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

在主專案中設定網路和子網路

您需要具有兩個子網路的共用虛擬私有雲網路:一個用於負載平衡器的前端和後端,另一個用於負載平衡器的 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 的子網路之外)。

本節中的所有步驟都必須在主專案中執行。

主控台

  1. 在 Google Cloud 控制台中,前往「VPC networks」(VPC 網路) 頁面。

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

  2. 按一下「建立虛擬私有雲網路」
  3. 在「Name」(名稱) 中輸入 lb-network
  4. 在「Subnets」(子網路) 區段中:

    1. 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)
    2. 在「New subnet」(新的子網路) 區段中,輸入以下資訊:

      • Name (名稱):lb-frontend-and-backend-subnet
      • Region (區域):us-west1

      • IP address range (IP 位址範圍):10.1.2.0/24

    3. 按一下 [完成]

  5. 點選「建立」

gcloud

  1. 使用 gcloud compute networks create 指令建立虛擬私有雲網路

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. 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

  1. 建立虛擬私有雲網路: <0

    # Shared VPC network
    resource "google_compute_network" "lb_network" {
      name                    = "lb-network"
      provider                = google-beta
      project                 = "my-host-project-id"
      auto_create_subnetworks = false
    }

  2. us-west1 區域中建立子網路:

    # Shared VPC network - backend subnet
    resource "google_compute_subnetwork" "lb_frontend_and_backend_subnet" {
      name          = "lb-frontend-and-backend-subnet"
      provider      = google-beta
      project       = "my-host-project-id"
      region        = "us-west1"
      ip_cidr_range = "10.1.2.0/24"
      role          = "ACTIVE"
      network       = google_compute_network.lb_network.id
    }

設定僅限 Proxy 的子網路

lb-network 虛擬私有雲網路中 us-west1 區域的所有區域 Envoy 型負載平衡器,都會使用僅限 Proxy 的子網路。每個地區和每個網路只能有一個活動的僅限 Proxy 子網路。

如果這個網路的「us-west1」區域中已預留僅限 Proxy 的子網路,請勿執行這個步驟。

本節中的所有步驟都必須在主專案中執行。

主控台

  1. 在 Google Cloud 控制台中,前往「VPC networks」(VPC 網路) 頁面。

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

  2. 按一下共用虛擬私有雲網路的名稱:lb-network
  3. 按一下 [新增子網路]
  4. 在「Name」(名稱) 中輸入 proxy-only-subnet
  5. 在「Region」(區域) 中選取 us-west1
  6. 將「用途」設為「區域受管理 Proxy」
  7. 在「IP address range」(IP 位址範圍) 中,輸入 10.129.0.0/23
  8. 按一下「新增」

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 的子網路:

# Shared VPC network - proxy-only subnet
resource "google_compute_subnetwork" "proxy_only_subnet" {
  name          = "proxy-only-subnet"
  provider      = google-beta
  project       = "my-host-project-id"
  region        = "us-west1"
  ip_cidr_range = "10.129.0.0/23"
  role          = "ACTIVE"
  purpose       = "REGIONAL_MANAGED_PROXY"
  network       = google_compute_network.lb_network.id
}

授予服務專案管理員後端子網路的存取權

服務專案管理員必須有權存取 lb-frontend-and-backend-subnet 子網路,才能佈建負載平衡器的後端。

共用虛擬私有雲管理員必須授予服務專案管理員 (或部署使用子網路的資源和後端的開發人員) 後端子網路的存取權。如需操作說明,請參閱「部分子網路的服務專案管理員」。

在主專案中設定防火牆規則

這個範例使用以下防火牆規則:
  • fw-allow-health-check. 輸入規則,適用於要進行負載平衡的執行個體,可允許來自 Google Cloud健康狀態檢查系統 (位於 130.211.0.0/2235.191.0.0/16) 的所有 TCP 流量。這個範例會使用目標標記 load-balanced-backend 來辨識應套用這項規則的執行個體。
  • fw-allow-proxies. 輸入規則,適用於要進行負載平衡的執行個體,可在 804438080 通訊埠上允許來自負載平衡器代管 Proxy 的 TCP 流量。這個範例會使用目標標記 load-balanced-backend 來辨識應套用此規則的執行個體。
如果沒有這些防火牆規則,預設拒絕輸入規則將會封鎖傳入至後端執行個體的流量。

本節中的所有步驟都必須在主專案中執行。

主控台

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

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

  2. 按一下「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 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):130.211.0.0/2235.191.0.0/16
    • 通訊協定和通訊埠
      • 選擇「指定的通訊協定與通訊埠」
      • 勾選「TCP」TCP,然後輸入 80 做為通訊埠編號。
      • 最佳做法是將這項規則限制為僅適用於與健康狀態檢查所用通訊協定和通訊埠相符的項目。如果您將通訊協定和通訊埠指定為 tcp:80, Google Cloud 可以使用 HTTP 透過通訊埠 80 與您的 VM 聯絡,但無法使用 HTTPS 透過通訊埠 443 聯絡這些 VM。

  3. 點選「建立」
  4. 按一下「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 做為通訊埠編號。
  5. 點選「建立」

gcloud

  1. 建立 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=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp
    
  2. 建立 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
    

Terraform

  1. 建立防火牆規則,允許 Google Cloud 健康狀態檢查。

    resource "google_compute_firewall" "fw_allow_health_check" {
      name          = "fw-allow-health-check"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
      }
      target_tags = ["load-balanced-backend"]
    }

  2. 建立防火牆規則,允許流量從僅限 Envoy Proxy 的子網路傳送至後端。

    resource "google_compute_firewall" "fw_allow_proxies" {
      name          = "fw-allow-proxies"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["10.129.0.0/23"]
      allow {
        protocol = "tcp"
        ports    = ["80", "443", "8080"]
      }
      target_tags = ["load-balanced-backend"]
    }

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

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

這些操作說明的其餘部分假設您已設定共用虛擬私有雲。包括為機構設定 IAM 政策,以及指定主機和服務專案。

請先設定共用虛擬私有雲,並啟用主專案和服務專案,再繼續進行後續步驟。

完成本節定義的必要步驟後,您可以選擇下列任一設定:

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

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

區域外部應用程式負載平衡器的網路資源 (例如僅限 Proxy 的子網路和後端執行個體的子網路) 會在主專案中建立。後端執行個體的防火牆規則也會在主專案中建立。

圖 1. 共用 VPC 上的區域型外部 HTTP(S) 負載平衡器
圖 1. 共用 VPC 上的區域性外部應用程式負載平衡器

本節說明如何設定負載平衡器和後端。這些步驟應由服務專案管理員 (或在服務專案中運作的開發人員) 執行,不需要主專案管理員參與。本節中的步驟與設定區域性外部應用程式負載平衡器的標準步驟大致相同。

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

建立代管執行個體群組後端

本節說明如何建立執行個體範本和代管執行個體群組後端。從用戶端到這些執行個體群組中 VM 的流量會經過負載平衡。

主控台

  1. 建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

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

    1. 點選「建立執行個體範本」
    2. 在「Name」(名稱) 中輸入 l7-xlb-backend-template
    3. 確認「開機磁碟」已設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明使用僅在 Debian 上可用的指令,例如 apt-get。如要變更「開機磁碟」,請按一下「變更」
      1. 在「Operating System」(作業系統) 部分,選取「Debian」
      2. 在「版本」中,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」
      3. 按一下 [選取]。
    4. 依序點選「進階選項」和「網路」
    5. 輸入下列「Network tags」(網路標記)load-balanced-backend
    6. 在「網路介面」中,選取「與我共用的網路 (來源主專案:HOST_PROJECT_ID)」
    7. lb-network 網路選取 lb-frontend-and-backend-subnet 子網路。
    8. 按一下 [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
      
    9. 點選「建立」

  2. 建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

    1. 點選「建立執行個體群組」
    2. 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
    3. 在「Name」(名稱) 中輸入 l7-xlb-backend-example
    4. 在「Location」(位置) 中選取「Single zone」(單一可用區)
    5. 在「Region」(區域) 中選取「us-west1」
    6. 針對「Zone」(區域),選取 us-west1-a
    7. 在「Instance template」(執行個體範本) 中選取 l7-xlb-backend-template
    8. 指定要在群組中建立的執行個體數量。

      在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:

      • 針對「Autoscaling mode」(自動調度資源模式),選取 Off:do not autoscale
      • 在「Maximum number of instances」(執行個體數量上限) 中輸入 2

      您也可以根據需要,在「Autoscaling」(自動調度資源) 區段中,將執行個體群組設為根據執行個體 CPU 使用量自動新增或移除執行個體

    9. 點選「建立」

gcloud

本指南中的 gcloud 指示假設您使用 Cloud Shell 或已安裝 bash 的其他環境。

  1. 使用 gcloud compute instance-templates create 指令,建立含有 HTTP 伺服器的 VM 執行個體範本。

    gcloud compute instance-templates create l7-xlb-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=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
    
  2. 使用 gcloud compute instance-groups managed create 指令,在區域中建立代管執行個體群組。

    gcloud compute instance-groups managed create l7-xlb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-xlb-backend-template \
        --project=SERVICE_PROJECT_ID
    

在服務專案中保留負載平衡器的 IP 位址

在服務專案中,為負載平衡器預留地區靜態外部 IP 位址。

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

主控台

  1. 前往 Google Cloud 控制台的「Reserve a static address」(保留靜態位址) 頁面。

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

  2. 輸入新地址的名稱。

  3. 在「Network Service Tier」(網路服務級別) 部分,選取「Standard」(標準)。

  4. 在「IP version」(IP 版本) 部分,選取「IPv4」。IPv6 位址只限通用位址且只適用於通用負載平衡器。

  5. 在「Type」(類型) 中,選取「Regional」(地區)。

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

  7. 將「Attached to」(連接至) 選項保留為「None」(無)。建立負載平衡器後,這個 IP 位址會附加至負載平衡器的轉送規則。

  8. 如要保留 IP 位址,請按一下「保留」

gcloud

如要保留靜態外部 IP 位址,請使用 compute addresses create 指令

gcloud compute addresses create IP_ADDRESS_NAME  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_ID

更改下列內容:

  • IP_ADDRESS_NAME:您要稱呼此地址的名稱。
  • SERVICE_PROJECT_ID:要建立負載平衡器的服務專案 ID。

設定負載平衡器

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

  • HTTP 健康狀態檢查
  • 後端服務,後端為代管執行個體群組
  • 網址對應
  • SSL 憑證 (僅適用於 HTTPS)
  • 目標 Proxy
  • 轉送規則

Proxy 可用性

視使用相同共用虛擬私有雲網路的服務專案數量而定,您可能會比在每個專案都代管專屬網路的網路部署模型中,更快達到配額或限制。 Google Cloud

舉例來說,有時 Google Cloud 區域的 Proxy 容量不足,無法支援新的區域性外部應用程式負載平衡器。如果發生這種情況,建立負載平衡器時, Google Cloud 控制台 會顯示 Proxy 可用性警告訊息。如要解決這個問題,請採取下列任一做法:

  • 等待容量問題解決。
  • 如要提高這些上限,請與 Google Cloud 銷售團隊聯絡。

主控台

將環境切換至服務專案

  1. 前往 Google Cloud 控制台的「資訊主頁」頁面。

    前往資訊主頁

  2. 按一下頁面頂端的「Select from」清單。在顯示的「Select from」(可用的選項) 視窗中,選取要建立負載平衡器的服務專案。

選取負載平衡器類型

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

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

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

基本設定

  1. 在負載平衡器的「Name」(名稱) 中輸入 l7-xlb-shared-vpc
  2. 在「Region」(地區) 中選擇 us-west1
  3. 在「Network」(網路) 中選取「lb-network」(來自「Project」(專案):HOST_PROJECT_ID)。

    如果看到「在共用虛擬私有雲網路中必須要有僅限 Proxy 的子網路」警告,請確認主專案管理員已在lb-network共用虛擬私有雲網路的us-west1區域中建立proxy-only-subnet。即使您沒有權限查看這個頁面上的僅限 Proxy 子網路,系統還是可以順利建立負載平衡器。

  4. 請保持開啟這個頁面,以便繼續操作。

設定前端

HTTP:

  1. 按一下「前端設定」
  2. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)
  3. 將「Name」(名稱) 設為 l7-xlb-forwarding-rule
  4. 將「Protocol」(通訊協定) 設為 HTTP
  5. 將「Port」(通訊埠) 設為 80
  6. 您在「保留負載平衡器的 IP 位址」中建立的 IP 位址

  7. 按一下 [完成]

HTTPS:

如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。區域性外部應用程式負載平衡器目前不支援 Google 代管憑證。

  1. 按一下「前端設定」
  2. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)
  3. 在「Name」(名稱) 欄位中輸入 l7-xlb-forwarding-rule
  4. 在「Protocol」(通訊協定) 欄位中,選取「HTTPS (includes HTTP/2)」。
  5. 確認「Port」(通訊埠) 已設為 443,以允許 HTTPS 流量。
  6. 選取您在「保留負載平衡器的 IP 位址」中建立的 IP 位址
  7. 按一下「憑證」清單。
    1. 如果您已擁有自行管理的 SSL 憑證資源,且想要做為主要 SSL 憑證使用,請在選單中選取所需資源。
    2. 否則,請選取「建立新憑證」
      1. 填寫 l7-xlb-cert 的「名稱」
      2. 將 PEM 格式的檔案上傳至相對應的欄位:
        • 公用金鑰憑證
        • 憑證鏈結
        • 私密金鑰
      3. 點選「建立」
  8. 如要新增主要 SSL 憑證資源以外的憑證資源,請按照下列指示操作:
    1. 按一下「新增憑證」
    2. 從「Certificates」(憑證) 清單中選取所需憑證,或是按一下 [Create a new certificate] (建立新憑證) 並按照上述指示操作。
  9. 按一下 [完成]

設定後端

  1. 按一下「後端設定」
  2. 在「Create or select backend services」(建立或選取後端服務) 選單中,選取「Create a backend service」(建立後端服務)。
  3. 將後端服務的「Name」(名稱) 設為 l7-xlb-backend-service
  4. 將「後端類型」(Backend type) 設為「執行個體群組」(Instance groups)
  5. 在「New backend」(新後端) 部分中:
    1. 將「Instance group」(執行個體群組) 設為 l7-xlb-backend-example
    2. 將「Port numbers」(通訊埠編號) 設為 80
    3. 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)
    4. 按一下 [完成]
  6. 在「健康狀態檢查」部分中,選擇「建立健康狀態檢查」以及下列參數:
    1. Name (名稱):l7-xlb-basic-check
    2. Protocol (通訊協定):HTTP
    3. Port (通訊埠):80
  7. 點選「儲存並繼續」
  8. 點選「建立」

設定轉送規則

  • 按一下「轉送規則」。確認「l7-ilb-backend-service」l7-xlb-backend-service是任何不相符主機和路徑的唯一後端服務。

如要瞭解流量管理,請參閱設定流量管理

檢查並完成設定

  • 點選「建立」

gcloud

  1. 使用 gcloud compute health-checks create http 指令定義 HTTP 健康狀態檢查。

    gcloud compute health-checks create http l7-xlb-basic-check \
       --region=us-west1 \
       --use-serving-port \
       --project=SERVICE_PROJECT_ID
    
  2. 使用 gcloud compute backend-services create 指令定義後端服務。

    gcloud compute backend-services create l7-xlb-backend-service \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-xlb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  3. 使用 gcloud compute backend-services add-backend 指令,將後端新增到後端服務。

    gcloud compute backend-services add-backend l7-xlb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-xlb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  4. 使用 gcloud compute url-maps create 指令建立網址對應。

    gcloud compute url-maps create l7-xlb-map \
      --default-service=l7-xlb-backend-service \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  5. 建立目標 Proxy。

    HTTP:

    如果是 HTTP 負載平衡器,請使用 gcloud compute target-http-proxies create 指令建立目標 Proxy。

    gcloud compute target-http-proxies create l7-xlb-proxy \
      --url-map=l7-xlb-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-xlb-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-xlb-proxy \
      --url-map=l7-xlb-map \
      --region=us-west1 \
      --ssl-certificates=l7-xlb-cert \
      --project=SERVICE_PROJECT_ID
    
  6. 建立轉寄規則。

    如果是自訂網路,您必須參照轉送規則中的子網路。

    如要取得轉送規則的 IP 位址,請使用 lb-frontend-and-backend-subnet。如果您嘗試使用僅限 Proxy 的子網路,轉送規則建立作業就會失敗。

    HTTP:

    使用加上正確旗標的 gcloud compute forwarding-rules create 指令。

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-xlb-proxy \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

    HTTPS:

    使用加上正確旗標的 gcloud compute forwarding-rules create 指令建立轉送規則。

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-xlb-proxy \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

測試負載平衡器

負載平衡服務執行時,您可以將流量傳送至轉送規則,並觀察流量是否分散到不同的執行個體。

主控台

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

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

  2. 點選剛剛建立的負載平衡器。
  3. 記下負載平衡器的 IP 位址。這個 IP 位址在後續步驟中稱為 LB_IP_ADDRESS
  4. 在「Backend」(後端) 區段中,確認 VM 健康狀態良好。「Healthy」(健康狀態良好) 欄應已填妥,顯示兩個 VM 的健康狀態均良好 (2/2)。如看到其他資訊,請先嘗試重新載入頁面。 Google Cloud 控制台可能需要一段時間,才會顯示 VM 的健康狀態良好。如果幾分鐘後,後端仍未顯示為健康,請檢查指派到您後端 VM 的防火牆設定與網路標記。
  5. Google Cloud 控制台顯示後端執行個體健康後,您可以前往 https://LB_IP_ADDRESS (或 http://LB_IP_ADDRESS),使用網路瀏覽器測試負載平衡器。請將 LB_IP_ADDRESS 替換為負載平衡器的 IP 位址
  6. 如果您使用自行簽署的憑證測試 HTTPS,瀏覽器會顯示警告。您必須明確指示瀏覽器接受自行簽署的憑證。
  7. 瀏覽器應會顯示頁面,並於其中列出提供該頁面的執行個體名稱及所屬可用區 (例如 Page served from: lb-backend-example-xxxx)。如果您的瀏覽器無法顯示這個頁面,請檢查本指南中的配置設定。

gcloud

請注意預留的 IP 位址:

gcloud compute addresses describe IP_ADDRESS_NAME \
    --format="get(address)" \
    --region=us-west1

如要使用網路瀏覽器測試負載平衡器,請前往 https://IP_ADDRESS_NAME (或 http://IP_ADDRESS_NAME)。將 IP_ADDRESS_NAME 替換為負載平衡器的 IP 位址

如果您使用自行簽署的憑證測試 HTTPS,瀏覽器會顯示警告。您必須明確指示瀏覽器接受自行簽署的憑證。

瀏覽器應會顯示頁面,其中包含後端執行個體的最低資訊。如果瀏覽器無法顯示這個頁面,請檢查本指南中的設定。

設定具有跨專案後端服務的負載平衡器

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

區域外部應用程式負載平衡器也支援設定共用虛擬私有雲部署作業,其中一個主專案或服務專案中的網址對應表,可以參照共用虛擬私有雲環境中多個服務專案的後端服務 (和後端)。這稱為「跨專案服務參照」

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

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

跨專案服務參照可搭配執行個體群組、無伺服器 NEG 或任何其他支援的後端類型使用。

設定需求

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

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

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

在服務專案 A 中保留負載平衡器的 IP 位址

在服務專案 A 中,為負載平衡器預留地區靜態外部 IP 位址。

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

主控台

  1. 前往 Google Cloud 控制台的「Reserve a static address」(保留靜態位址) 頁面。

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

  2. 輸入 cross-ref-ip-address 做為新地址的名稱。

  3. 在「Network Service Tier」(網路服務級別) 部分,選取「Standard」(標準)。

  4. 在「IP version」(IP 版本) 部分,選取「IPv4」。IPv6 位址只限通用位址且只適用於通用負載平衡器。

  5. 在「Type」(類型) 中,選取「Regional」(地區)。

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

  7. 將「Attached to」(連接至) 選項保留為「None」(無)。建立負載平衡器後,這個 IP 位址會附加至負載平衡器的轉送規則。

  8. 如要保留 IP 位址,請按一下「保留」

gcloud

如要保留靜態外部 IP 位址,請使用 compute addresses create 指令

gcloud compute addresses create IP_ADDRESS_CROSS_REF  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_A_ID

更改下列內容:

  • IP_ADDRESS_CROSS_REF:您要為這個 IP 位址指定的名稱。
  • SERVICE_PROJECT_A_ID:服務專案 A 的專案 ID,負載平衡器的前端會在此建立。

在服務專案 B 中建立後端和後端服務

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

主控台

  1. 建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

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

    1. 點選「建立執行個體範本」
    2. 輸入執行個體範本的「Name」(名稱)cross-ref-backend-template
    3. 確認「開機磁碟」已設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明使用僅在 Debian 上可用的指令,例如 apt-get。如要變更「開機磁碟」,請按一下「變更」
      1. 在「Operating System」(作業系統) 部分,選取「Debian」
      2. 在「版本」中,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」
      3. 按一下 [選取]。
    4. 依序點選「進階選項」和「網路」
    5. 輸入下列「Network tags」(網路標記)load-balanced-backend
    6. 在「網路介面」中,選取「與我共用的網路 (來源主專案:HOST_PROJECT_ID)」
    7. lb-network 網路選取 lb-frontend-and-backend-subnet 子網路。
    8. 按一下 [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
      
    9. 點選「建立」

  2. 建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

    1. 點選「建立執行個體群組」
    2. 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
    3. 輸入執行個體群組的名稱cross-ref-ig-backend
    4. 在「Location」(位置) 中選取「Single zone」(單一可用區)
    5. 在「Region」(區域) 中選取「us-west1」
    6. 針對「Zone」(區域),選取 us-west1-a
    7. 針對「Instance template」(執行個體範本),選取「cross-ref-backend-template」
    8. 指定要在群組中建立的執行個體數量。

      在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:

      • 針對「Autoscaling mode」(自動調度資源模式),選取 Off:do not autoscale
      • 在「Maximum number of instances」(執行個體數量上限) 中輸入 2

      您也可以根據需要,在「Autoscaling」(自動調度資源) 區段中,將執行個體群組設為根據執行個體 CPU 使用量自動新增或移除執行個體

    9. 點選「建立」

  3. 建立區域後端服務。在這個步驟中,我們也會建立健康狀態檢查,並將後端新增至後端服務。前往 Google Cloud 控制台的「後端」頁面。

    前往「後端」頁面

    1. 按一下「建立區域後端服務」
    2. 輸入後端服務的「Name」(名稱)cross-ref-backend-service
    3. 在「Region」(區域) 中選取「us-west1」
    4. 在「負載平衡器類型」部分,選取「區域外部應用程式負載平衡器 (EXTERNAL_MANAGED)」
    5. 將「後端類型」設為「執行個體群組」
    6. 在「Backends」(後端) 專區中,將「Network」(網路) 設為「lb-network」
    7. 按一下「Add backend」(新增後端),然後設定下列欄位:
      1. 將「Instance group」(執行個體群組) 設為「cross-ref-ig-backend」
      2. 將「Port numbers」(通訊埠編號) 設為 80
      3. 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)
      4. 按一下 [完成]
    8. 在「健康狀態檢查」部分中,選擇「建立健康狀態檢查」以及下列參數:
      1. Name (名稱):cross-ref-http-health-check
      2. Protocol (通訊協定):HTTP
      3. Port (通訊埠):80
      4. 按一下 [儲存]
    9. 選用:在「新增權限」部分,輸入其他專案的負載平衡器管理員的身分與存取權管理主體 (通常是電子郵件地址),以便對方為自己專案中的負載平衡器使用此後端服務。如果沒有這項權限,您就無法使用跨專案服務參照。

      如果您沒有權限為這項專案中的後端服務設定存取控管政策,還是可以立即建立後端服務,授權使用者稍後再執行這個步驟,詳情請參閱「授予負載平衡器管理員使用後端服務的權限」一節。該節也會說明如何授予存取權給這個專案中的所有後端服務,這樣您就不必在每次建立新的後端服務時授予存取權。

    10. 點選「建立」

gcloud

  1. 使用 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=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:共用虛擬私有雲主專案的專案 ID。
  2. 使用 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:後端執行個體群組的名稱。
  3. 使用 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 健康狀態檢查的名稱。
  4. 使用 gcloud compute backend-services create 指令定義後端服務。

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_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 中建立的後端服務名稱。
  5. 使用 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
    

在服務專案 A 中建立負載平衡器前端和網址對應

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

主控台

選取負載平衡器類型

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

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

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

準備負載平衡器

  1. 輸入負載平衡器的「Name」(名稱)cross-ref-l7-xlb-shared-vpc
  2. 在「Region」(地區) 中選擇 us-west1
  3. 在「Network」(網路) 中選取「lb-network」(來自「Project」(專案):HOST_PROJECT_ID)。

    如果看到「在共用虛擬私有雲網路中必須要有僅限 Proxy 的子網路」警告,請確認主專案管理員已在lb-network共用虛擬私有雲網路的us-west1區域中建立proxy-only-subnet。即使您沒有權限在這個頁面查看僅限 Proxy 的子網路,系統還是可以順利建立負載平衡器。

  4. 請保持開啟這個頁面,以便繼續操作。

設定前端

如要讓跨專案服務參照正常運作,前端必須使用與建立後端服務時相同的網路 (lb-network),也就是共用虛擬私有雲主專案中的網路。

HTTP:

  1. 按一下「前端設定」
  2. 輸入轉送規則的「Name」(名稱)cross-ref-http-forwarding-rule
  3. 將「Protocol」(通訊協定) 設為 HTTP
  4. 將「Subnetwork」(子網路) 設為 lb-frontend-and-backend-subnet

    即使清單中提供 Proxy 專用子網路選項,也請勿選取。

  5. 選取您在「保留負載平衡器的 IP 位址」中建立的 IP 位址,稱為「cross-ref-ip-address」

  6. 將「Port」(通訊埠) 設為 80

  7. 按一下 [完成]

HTTPS:

如果您在用戶端與負載平衡器間使用的是 HTTPS,則需要有一個或多個 SSL 憑證資源才能設定 Proxy。如要瞭解如何建立 SSL 憑證資源,請參閱「SSL 憑證」。區域性外部應用程式負載平衡器目前不支援 Google 代管憑證。

  1. 按一下「前端設定」
  2. 輸入轉送規則的「Name」(名稱)cross-ref-https-forwarding-rule
  3. 在「Protocol」(通訊協定) 欄位中,選取「HTTPS (includes HTTP/2)」。
  4. 將「Subnetwork」(子網路) 設為 lb-frontend-and-backend-subnet

    即使清單中提供 Proxy 專用子網路選項,也請勿選取。

  5. 選取您在「保留負載平衡器的 IP 位址」中建立的 IP 位址,稱為「cross-ref-ip-address」

  6. 確認「Port」(通訊埠) 已設為 443,以允許 HTTPS 流量。

  7. 按一下「憑證」清單。

    1. 如果您已擁有自行管理的 SSL 憑證資源,且想要做為主要 SSL 憑證使用,請在選單中選取所需資源。
    2. 否則,請選取「建立新憑證」
      1. 輸入 SSL 憑證的名稱
      2. 將 PEM 格式的檔案上傳至相對應的欄位:
        • 公用金鑰憑證
        • 憑證鏈結
        • 私密金鑰
      3. 點選「建立」
  8. 如要新增主要 SSL 憑證資源以外的憑證資源,請按照下列指示操作:

    1. 按一下「新增憑證」
    2. 從「Certificates」(憑證) 清單中選取所需憑證,或是按一下「Create a new certificate」(建立新憑證) 並按照先前的指示操作。
  9. 按一下 [完成]

設定後端

  1. 按一下「後端設定」
  2. 按一下「跨專案後端服務」
  3. 在「Project ID」部分,輸入服務專案 B 的專案 ID
  4. 在「選取後端服務」清單中,選取要使用的服務專案 B 後端服務。在本例中,請輸入 cross-ref-backend-service
  5. 按一下 [確定]

設定轉送規則

  • 按一下「轉送規則」。確認「cross-ref-backend-service」cross-ref-backend-service是任何不相符主機和路徑的唯一後端服務。

如要瞭解流量管理,請參閱設定流量管理

檢查並完成設定

  • 點選「建立」

測試負載平衡器

建立負載平衡器後,請按照「測試負載平衡器」一節所述步驟測試負載平衡器。

gcloud

  1. 選用:建立負載平衡器並交叉參照後端服務前,請先確認您要參照的後端服務是否可透過網址對應參照:

    gcloud compute backend-services list-usable \
        --region=us-west1 \
        --project=SERVICE_PROJECT_B_ID
    
  2. 建立網址對應,並將預設服務設為在服務專案 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權限,就無法建立網址對應。

  3. 建立目標 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 的名稱。
  4. 建立轉送規則。如要跨專案參照服務,轉送規則必須使用與建立後端服務時相同的網路 (lb-network),也就是共用虛擬私有雲主專案中的網路。

    HTTP:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=HTTP_TARGET_PROXY_NAME \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • HTTP_FORWARDING_RULE_NAME:用於處理 HTTP 流量的轉送規則名稱。

    HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=HTTPS_TARGET_PROXY_NAME \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    更改下列內容:

    • HTTPS_FORWARDING_RULE_NAME:用於處理 HTTPS 流量的轉送規則名稱。
  5. 如要測試負載平衡器,請按照「測試負載平衡器」一節所述步驟操作。

授予負載平衡器管理員使用後端服務的權限

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

如果您在建立後端服務時,已在後端服務層級授予必要權限,則不需要執行這個步驟。您可以略過這個章節,或繼續閱讀,瞭解如何授予這個專案中所有後端服務的存取權,這樣就不必在每次建立新的後端服務時授予存取權。

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

主控台

專案層級權限

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

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

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

    前往身分與存取權管理頁面

  2. 選取專案。

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

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

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

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

  7. 按一下 [儲存]

個別後端服務的資源層級權限

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

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

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

    前往「後端」頁面

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

  3. 按一下「新增主體」

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

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

  6. 按一下 [儲存]

gcloud

專案層級權限

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

您必須具備 compute.regionBackendServices.setIamPolicyresourcemanager.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 權限,只套用至部分區域後端服務,方法是使用條件並指定條件屬性

查看參照共用虛擬私有雲後端服務的網址對應

如要查看參照特定共用虛擬私有雲後端服務的網址對應,請按照下列步驟操作:

gcloud

如要查看參照區域共用虛擬私有雲後端服務的資源,請執行下列指令:

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

後續步驟