設定代管執行個體群組後端

Cloud CDN 運用 Google Cloud 全域外部應用程式負載平衡器,提供轉送、健康狀態檢查和 Anycast IP 支援。全域外部應用程式負載平衡器可以有多個後端執行個體類型,您可以選擇要為哪些後端 (或來源) 啟用 Cloud CDN。

本設定指南說明如何建立全域外部應用程式負載平衡器,並啟用 Cloud CDN,後端為 Compute Engine 代管執行個體群組

如需一般概念,請參閱外部應用程式負載平衡器總覽

如果您是傳統版應用程式負載平衡器的現有使用者,請務必在規劃使用全域外部應用程式負載平衡器的新部署作業時,查看遷移作業總覽

負載平衡器拓撲

如果是 HTTPS 負載平衡器,請建立下圖所示的設定。

後端為代管執行個體群組 (MIG) 的外部應用程式負載平衡器。
圖 1. 後端為代管執行個體群組 (MIG) 的外部應用程式負載平衡器 (按一下即可放大)。

如果是 HTTP 負載平衡器,請建立下圖所示的設定。

後端為代管執行個體群組 (MIG) 的外部應用程式負載平衡器。
圖 2. 後端為代管執行個體群組 (MIG) 的外部應用程式負載平衡器 (按一下即可放大)。

圖表中的事件順序如下:

  1. 用戶端會將內容要求傳送至轉送規則中定義的外部 IPv4 位址。
  2. 負載平衡器會檢查是否可從快取提供要求。如果是,負載平衡器會從快取提供要求的內容。如果不是,系統會繼續處理。

  3. 如果是 HTTPS 負載平衡器,轉送規則會將要求導向目標 HTTPS Proxy

    如果是 HTTP 負載平衡器,轉送規則會將要求導向目標 HTTP Proxy

  4. 目標 Proxy 會使用網址對應中的規則,判斷單一後端服務會收到所有要求。

  5. 負載平衡器判斷後端服務只有一個執行個體群組,並將要求導向該群組中的虛擬機器 (VM) 執行個體。

  6. VM 會提供使用者要求的內容。

外部應用程式負載平衡器,後端為代管執行個體群組 (MIG),並已啟用 Cloud CDN。
已啟用 Cloud CDN,且後端為代管執行個體群組 (MIG) 的外部應用程式負載平衡器 (按一下可放大)。

事前準備

建立負載平衡器前,請先完成下列步驟。

設定 SSL 憑證資源

如為 HTTPS 負載平衡器,請按照下列說明建立 SSL 憑證資源:

建議使用 Google 代管的憑證。

這個範例假設您已有名為 www-ssl-cert 的 SSL 憑證資源。

設定權限

如要完成本指南中的步驟,您必須具有在專案中建立 Compute Engine 執行個體、防火牆規則和預留 IP 位址的權限。您必須具有專案擁有者或編輯者角色,或者具有下列 Compute Engine IAM 角色

工作 必要角色
建立執行個體 執行個體管理員
新增與移除防火牆規則 安全管理員
建立負載平衡器元件 網路管理員
建立專案 (選用) 專案建立者

詳情請參閱下列指南:

設定網路和子網路

如要建立範例網路和子網路,請按照以下步驟操作。

主控台

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

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

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

  3. 輸入網路的 [Name] (名稱)

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

  5. 在「New subnet」(新的子網路) 區段中,設定下列欄位:

    1. 提供這個子網路的 [Name] (名稱)
    2. 選擇一個 [Region] (地區)
    3. 在「IP 堆疊類型」部分,選取「IPv4 (單一堆疊)」
    4. 輸入 [IP address range] (IP 位址範圍)。這是子網路的主要 IPv4 範圍
  6. 按一下 [完成]

  7. 如要在其他區域新增子網路,請按一下「新增子網路」,然後重複上述步驟。

  8. 點選「建立」

gcloud

  1. 建立自訂模式虛擬私有雲網路:

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. 在網路中,為後端建立子網路:

    gcloud compute networks subnets create SUBNET \
        --network=NETWORK \
        --stack-type=IPV4_ONLY \
        --range=10.1.2.0/24 \
        --region=REGION
    

    更改下列內容:

    • NETWORK:虛擬私有雲網路的名稱。

    • SUBNET:子網路的名稱。

    • REGION:區域名稱。

建立代管執行個體群組

如要設定具有 Compute Engine 後端的負載平衡器,您的 VM 必須屬於某個執行個體群組。本指南說明如何建立代管執行個體群組,其中包含執行 Apache 的 Linux VM,然後設定負載平衡。代管執行個體群組會根據您指定的執行個體範本,建立每個代管執行個體。

代管執行個體群組提供的 VM 會執行外部 HTTP(S) 負載平衡器的後端伺服器。為示範之用,後端會提供自己的主機名稱。

建立代管執行個體群組前,請先建立執行個體範本。

主控台

如要支援 IPv4 流量,請按照下列步驟操作:

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

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

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

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

  4. 確認將開機磁碟設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明使用僅在 Debian 上可用的指令,例如 apt-get

  5. 展開進階選項

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

    1. 在「網路標記」部分輸入 allow-health-check
    2. 在「Network interfaces」(網路介面) 區段中,按一下「Edit」(編輯),然後進行下列變更:
      • Network (網路):NETWORK
      • Subnet (子網路):SUBNET
      • IPv4 流量IPv4 (單一堆疊)
    3. 按一下 [完成]
  7. 展開「管理」。在「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
    
  8. 點選「建立」

gcloud

如要支援 IPv4 流量,請執行下列指令:

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPV4_ONLY \
  --tags=allow-health-check \
  --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'

Terraform

如要建立執行個體範本,請使用 google_compute_instance_template 資源

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

建立代管執行個體群組,然後選取執行個體範本。

主控台

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

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

  2. 點選「建立執行個體群組」

  3. 在左側選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))

  4. 在「Name」(名稱) 中輸入 lb-backend-example

  5. 在「Location」(位置) 底下,選取 [Single zone] (單一區域)。

  6. 在「區域」部分,選取偏好的區域。

  7. 在「可用區」部分,選取可用區。

  8. 在「Instance template」(執行個體範本) 底下,選取執行個體範本 lb-backend-template

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

    將「Minimum number of instances」(執行個體數量下限) 設為 2,並將「Maximum number of instances」(執行個體數量上限) 設為 2 以上。

  10. 如要建立新的執行個體群組,請按一下「建立」

gcloud

  1. 依據範本建立代管執行個體群組。

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

如要建立代管執行個體群組,請使用 google_compute_instance_group_manager 資源

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

將具名通訊埠新增至執行個體群組

針對執行個體群組定義 HTTP 服務,並將通訊埠名稱對應至相關的通訊埠。負載平衡服務會將流量轉送至該具名連接埠。詳情請參閱「已命名的通訊埠」。

主控台

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

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

  2. 按一下「lb-backend-example」

  3. 在執行個體群組的「總覽」頁面上,按一下「編輯」

  4. 在「Port mapping」(通訊埠對應) 專區中,按一下「Add port」(新增通訊埠)

    1. 輸入 http 做為通訊埠名稱。在通訊埠編號欄位中輸入 80
  5. 按一下 [儲存]

gcloud

使用 gcloud compute instance-groups set-named-ports 指令。

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE_A

Terraform

named_port 屬性會納入代管執行個體群組範例

設定防火牆規則

在本範例中,您會建立 fw-allow-health-check 防火牆規則。 這是輸入規則,允許來自 Google Cloud 健康狀態檢查系統 (130.211.0.0/2235.191.0.0/16) 的流量。這個範例會使用目標標記 allow-health-check 來識別 VM。

主控台

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

    前往「防火牆政策」頁面

  2. 按一下「建立防火牆規則」,建立防火牆規則。

  3. 在「Name」(名稱) 中輸入 fw-allow-health-check

  4. 選取「網路」

  5. 在「Targets」(目標) 下方,選取 [Specified target tags] (指定的目標標記)

  6. 在「Target tags」(目標標記) 欄位填入 allow-health-check

  7. 將「Source filter」(來源篩選器) 設為「IPv4 ranges」(IPv4 範圍)

  8. 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為 130.211.0.0/2235.191.0.0/16

  9. 在「Protocols and ports」(通訊協定與通訊埠) 下方,選取 [Specified protocols and ports] (指定的通訊協定與通訊埠)

  10. 勾選「TCP」TCP核取方塊,然後輸入 80 做為通訊埠編號。

  11. 點選「建立」

gcloud

gcloud compute firewall-rules create fw-allow-health-check \
    --network=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Terraform

如要建立防火牆規則,請使用 google_compute_firewall 資源

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

保留外部 IP 位址

現在執行個體已開始執行,請設定全域靜態外部 IP 位址,讓客戶可透過該位址連線至負載平衡器。

主控台

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

    前往「External IP addresses」(外部 IP 位址)

  2. 如要預留 IPv4 位址,請按一下「Reserve external static IP address」(預留外部靜態 IP 位址)

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

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

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

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

  7. 按一下「保留」

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global

請注意預留的 IPv4 位址:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Terraform

如要預留 IP 位址,請使用 google_compute_global_address 資源

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

設定負載平衡器

在本範例中,您在用戶端與負載平衡器間使用的是 HTTPS (前端)。如為 HTTPS,您需要一或多個 SSL 憑證資源才能設定 Proxy。建議使用 Google 代管的憑證。

即使前端使用 HTTPS,後端仍可使用 HTTP。 Google 會自動加密 Google Front End (GFE) 和 Google Cloud 虛擬私有雲網路中後端之間的流量。

主控台

開始設定

  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 global workloads」(最適合全域工作負載),然後點選「Next」(下一步)
  6. 在「Load balancer generation」(負載平衡器代別) 部分,選取「Classic Application Load Balancer」(傳統應用程式負載平衡器),然後點選「Next」(下一步)
  7. 按一下 [設定]

基本設定

在負載平衡器的「Name」(名稱) 中輸入 web-map-httpsweb-map-http

前端設定

  1. 按一下「前端設定」
  2. 將「Protocol」(通訊協定) 設為「HTTPS」
  3. 選取 IPv4,即可啟用 IPv4 流量。將「IP address」(IP 位址) 設為您先前建立的 lb-ipv4-1
  4. 將「Port」(通訊埠) 設為「443」
  5. 按一下「憑證」,然後選取主要 SSL 憑證。
  6. 選用:建立 SSL 政策:
    1. 在「SSL policy」(SSL 政策) 清單中,選取「Create a policy」(建立政策)
    2. 將 SSL 政策名稱設為 my-ssl-policy
    3. 在「最低傳輸層安全標準 (TLS) 版本」部分選取「傳輸層安全標準 (TLS) 1.0」
    4. 在「Profile」(設定檔) 部分選取「Modern」(現代)。接著,系統會顯示已啟用的功能已停用的功能
    5. 按一下 [儲存]
    如果您尚未建立任何 SSL 政策,系統會套用預設的 SSL 政策
  7. 選用:選取「啟用從 HTTP 重新導向至 HTTPS 的功能」核取方塊,啟用重新導向功能。

    勾選這個核取方塊會建立額外的部分 HTTP 負載平衡器,該平衡器會使用與 HTTPS 負載平衡器相同的 IP 位址,並將傳入的 HTTP 要求重新導向至負載平衡器的 HTTPS 前端。

    只有在選取 HTTPS 通訊協定並使用預留 IP 位址時,才能勾選這個核取方塊。

  8. 按一下 [完成]

後端設定

  1. 按一下「後端設定」
  2. 在「建立或選擇後端服務與後端 Bucket」下方,依序選取「後端服務」>「建立後端服務」
  3. 為後端服務新增名稱,例如 web-backend-service
  4. 在「Protocol」(通訊協定) 底下,選取「HTTP」
  5. 在「Named Port」(已命名通訊埠) 輸入 http
  6. 在「Backends」(後端) >「New backend」(新增後端) >「Instance group」(執行個體群組) 中,選取您的執行個體群組 lb-backend-example
  7. 在「Port numbers」(通訊埠編號) 部分,輸入 80
  8. 保留其他預設設定。
  9. 在「健康狀態檢查」下方,選取「建立健康狀態檢查」,然後為健康狀態檢查新增名稱,例如 http-basic-check
  10. 將通訊協定設為「HTTP」,然後按一下「儲存」
  11. 選用步驟:設定預設後端安全政策。預設安全政策會根據使用者設定的門檻,限制流量。如要進一步瞭解預設安全性政策,請參閱「速率限制總覽」。

    1. 如要停用 Google Cloud Armor 預設安全性政策,請在後端安全性政策清單選單中選取 None
    2. 在「安全性」部分中,選取「預設安全性政策」
    3. 在「政策名稱」欄位中,接受系統自動產生的名稱,或輸入安全政策的名稱。
    4. 在「要求數量」欄位中,接受預設要求數量,或輸入介於 110,000 之間的整數。
    5. 在「間隔」欄位中選取間隔。
    6. 在「Enforce on key」欄位中,選擇下列其中一個值:「All」、「IP address」或「X-Forwarded-For IP address」。如要進一步瞭解這些選項,請參閱「識別用戶端以限制速率」。
  12. 選取「啟用 Cloud CDN」
  13. 選用:修改快取模式TTL 設定。
  14. 保留其他預設設定。
  15. 點選「建立」

主機與路徑規則

保留「Host and path rules」(主機與路徑規則) 的預設設定。

檢查並完成

  1. 按一下「檢查並完成」
  2. 查看負載平衡器配置設定。
  3. 選用:按一下「對等程式碼」,即可查看用於建立負載平衡器的 REST API 要求。
  4. 點選「建立」

等待負載平衡器建立完成。

如果您建立了 HTTPS 負載平衡器,並選取「Enable HTTP to HTTPS Redirect」(啟用從 HTTP 重新導向至 HTTPS 的功能) 核取方塊,系統也會建立 HTTP 負載平衡器,並加上 -redirect 後置字串。

  1. 按一下負載平衡器的名稱。
  2. 在「Load balancer details」(負載平衡器詳細資料) 畫面中,記下負載平衡器的「IP:Port」(IP:通訊埠)

gcloud

  1. 建立健康狀態檢查。
     gcloud compute health-checks create http http-basic-check \
         --port 80
     
  2. 建立後端服務。
    gcloud compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --global
    
  3. 將執行個體群組新增至後端服務,做為後端使用。
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. 如果是 HTTP,請建立網址對應,將連入的要求轉送至預設後端服務。
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. 如果是 HTTPS,請建立網址對應,將連入要求轉送至預設後端服務。
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

設定 HTTPS 前端

如果是 HTTP 負載平衡器,請略過本節。

  1. 如為 HTTPS,請按照下列章節的說明,建立全域 SSL 憑證資源 (如果尚未建立):
  2. 如果是 HTTPS,請建立目標 HTTPS Proxy,將要求轉送至網址對應。Proxy 是負載平衡器的一部分,用於保存 HTTPS 負載平衡器的 SSL 憑證,因此您還可以在此步驟中載入憑證。

    gcloud compute target-https-proxies create https-lb-proxy \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    
  3. 如果是 HTTPS,請建立全域轉送規則,將傳入要求轉送至 Proxy。
    gcloud compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. 選用:如果是 HTTPS,請建立全域 SSL 政策,並附加至 HTTPS Proxy。
    建立全域 SSL 政策:
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    如要將 SSL 政策附加至全域目標 HTTPS Proxy,請執行下列指令:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

設定 HTTP 前端

如果是 HTTPS 負載平衡器,請略過本節。

  1. 如果是 HTTP,請建立目標 HTTP Proxy,將要求轉送至您的網址對應。
    gcloud compute target-http-proxies create http-lb-proxy \
      --url-map=web-map-http
    
  2. 如果是 HTTP,請建立全域轉送規則,將傳入要求轉送至 Proxy。
    gcloud compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. 如要建立健康狀態檢查,請使用 google_compute_health_check 資源。

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. 如要建立後端服務,請使用 google_compute_backend_service 資源。

    本範例使用 load_balancing_scheme="EXTERNAL_MANAGED",可設定具有進階流量管理功能的全域外部應用程式負載平衡器。如要建立傳統版應用程式負載平衡器,請務必先將 load_balancing_scheme 變更為 EXTERNAL,再執行指令碼。

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. 如要建立網址對應,請使用 google_compute_url_map 資源。

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. 如要建立目標 HTTP Proxy,請使用 google_compute_target_http_proxy 資源。

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. 如要建立轉送規則,請使用 google_compute_global_forwarding_rule 資源。

    本範例使用 load_balancing_scheme="EXTERNAL_MANAGED",可設定具有進階流量管理功能的全域外部應用程式負載平衡器。如要建立傳統版應用程式負載平衡器,請務必先將 load_balancing_scheme 變更為 EXTERNAL,再執行指令碼。

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

啟用 Cloud CDN

如果您在建立後端服務時未啟用 Cloud CDN,現在可以更新後端服務來啟用。

gcloud compute backend-services update web-backend-service \
    --enable-cdn \
    --cache-mode=CACHE_MODE

CACHE_MODE 替換為下列其中一個選項,設定快取模式

  • CACHE_All_STATIC:自動快取靜態內容

  • USE_ORIGIN_HEADERS (預設):要求來源設定有效的快取標頭,才能快取內容。

  • FORCE_CACHE_ALL:快取所有內容,忽略 Cache-Control 回應標頭中的任何 privateno-storeno-cache 指令。

將網域連結至負載平衡器

建立負載平衡器後,請記下與負載平衡器相關聯的 IP 位址,例如 30.90.80.100。如要將網域指向負載平衡器,請使用網域註冊服務建立 A 記錄。如果 SSL 憑證中新增了多個網域,請為每個網域新增 A 記錄,並全部指向負載平衡器的 IP 位址。舉例來說,如要為 www.example.comexample.com 建立 A 記錄,請使用下列指令:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

如果您使用 Cloud DNS 做為 DNS 供應商,請參閱「新增、修改及刪除記錄」。

測試流量能否傳送至執行個體

負載平衡服務已開始運作,您可以向轉送規則傳送流量,並觀察流量是否分散到不同的執行個體。

主控台

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

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

  2. 點選剛剛建立的負載平衡器。
  3. 在「Backend」(後端) 區段中,確認 VM 健康狀態良好。「Healthy」(健康狀態良好) 欄應已填妥,顯示兩個 VM 的健康狀態均良好 (2/2)。如看到其他資訊,請先嘗試重新載入頁面。 Google Cloud 控制台可能需要一段時間才能顯示 VM 的健康狀態良好。如果幾分鐘後,後端仍未顯示為健康,請檢查指派到後端 VM 的防火牆設定與網路標記。

  4. 如果是 HTTPS,如果您使用的是 Google 代管的憑證,請確認憑證的資源狀態為「ACTIVE」(有效)。詳情請參閱 Google 代管的 SSL 憑證資源狀態
  5. Google Cloud 控制台顯示後端執行個體健康後,您可以前往 https://IP_ADDRESS (或 http://IP_ADDRESS),使用網路瀏覽器測試負載平衡器。請將 IP_ADDRESS 替換為負載平衡器的 IP 位址
  6. 如果您使用自行簽署的憑證測試 HTTPS,瀏覽器會顯示警告。您必須明確指示瀏覽器接受自行簽署的憑證。
  7. 瀏覽器應會顯示頁面,並於其中列出提供該頁面的執行個體名稱及所屬可用區 (例如 Page served from: lb-backend-example-xxxx)。如果您的瀏覽器無法顯示這個頁面,請檢查本指南中的配置設定。

gcloud

gcloud compute addresses describe lb-ipv4-1 \
   --format="get(address)" \
   --global

幾分鐘後,您可以執行下列 curl 指令來測試設定。

curl http://IP_ADDRESS

-或-

curl https://HOSTNAME

停用 Cloud CDN

主控台

為單一後端服務停用 Cloud CDN

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

    前往 Cloud CDN

  2. 在來源列的右側,按一下「選單」,然後選取「編輯」

  3. 取消勾選要停止使用 Cloud CDN 的後端服務核取方塊。

  4. 按一下「更新」

為來源的所有後端服務移除 Cloud CDN

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

    前往 Cloud CDN

  2. 在來源列的右側,依序按一下「選單」「移除」

  3. 按一下 [移除] 加以確認。

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --no-enable-cdn

停用 Cloud CDN 並不會撤銷或清除快取內容。如果您停用 Cloud CDN,然後重新啟用,系統可能仍會快取大部分或所有快取內容。如要避免系統從快取提供內容,請撤銷該內容

後續步驟

  • 如要瞭解快取的內容,請參閱快取總覽
  • 如要在 GKE 中使用 Cloud CDN,請參閱「Ingress 功能」。
  • 如要確認 Cloud CDN 是否從快取提供回應,請參閱查看記錄
  • 如要瞭解常見問題和解決方案,請參閱「疑難排解」一節。
  • 如要瞭解 Cloud CDN 的運作方式,請參閱 Cloud CDN 總覽