使用網址對應

本指南說明如何設定 Google Cloud網址對應。網址對應是一組規則,用於將傳入的 HTTP(S) 要求轉送至特定後端服務 或後端值區。 最簡單的網址對應涵蓋所有傳入要求路徑 (/*)。

在按照本指南操作之前,請先熟悉網址對應概念

網址對應適用於下列 Google Cloud 產品:

搭配全域外部應用程式負載平衡器、區域外部應用程式負載平衡器、內部應用程式負載平衡器和 Cloud Service Mesh 使用的網址對應,也支援多項進階流量管理功能。詳情請參閱「網址對應概念:進階流量管理」。

網址對應預設值

網址對應表有兩個預設值,如下表所述。

預設類型 設定 意義
網址對應預設值 gcloud compute url-maps create

--default-service | --default-backend-bucket

如果沒有任何路徑比對器或主機規則與收到的網址相符,就會使用指定的預設後端服務 或後端值區 。
路徑比對器預設值 gcloud compute url-maps add-path-matcher

--default-service | --default-backend-bucket

如果網址路徑與路徑比對器相符,但沒有任何指定的--path-rules相符,就會使用指定的預設後端服務 或後端值區 。

主機規則

主機規則定義了一組要用來比對要求的主機。

在主機規則中,主機名稱必須是完整網域名稱 (FQDN)。主機名稱不得為 IPv4 或 IPv6 位址。例如:

  • 公司:example.com
  • 公司:web.example.com
  • 公司:*.example.com
  • 無法運作:35.244.221.250

設定網址對應

網址對應可將流量傳送至後端服務後端值區。區域外部應用程式負載平衡器和內部應用程式負載平衡器不支援後端 bucket。

主控台

如要使用 Google Cloud 控制台新增網址對應,請按照下列步驟操作:

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

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 選取 [Host and path rules] (主機與路徑規則)
  5. 按一下 [Add host and path rule] (新增主機與路徑規則)
  6. 請填寫「Host」(主機) 或「Path」(路徑) 欄位,或者兩者皆填,然後選取一項後端服務後端值區

    1. 請輸入完整且符合資格的主機名稱,例如 web.example.com
    2. 輸入路徑,例如 /video
    3. 在「主機與路徑規則」頁面的「後端」選單中,選取可用的後端服務 或後端 Bucket。
  7. 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。

gcloud

如要使用 Google Cloud CLI 新增網址對應,請使用 url-maps create 指令:

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

針對區域性外部應用程式負載平衡器和內部應用程式負載平衡器,建立網址對應時請務必加入 --region 旗標。

如要建立路徑比對器,請使用 gcloud compute url-maps add-path-matcher 指令:

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE or BUCKET"]

此指令需要有預設的後端服務 或後端值區 ,這樣才能將不相符的要求傳送到預設後端服務上。--path-rules 旗標定義要求路徑與後端服務 或值區之間的對應。下列範例會將要求路徑 /video//video/* 轉送到 video-service 後端服務:

--path-rules="/video=video-service,/video/*=video-service"

如要建立主機規則,請使用 gcloud compute url-maps add-host-rule 指令:

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=[HOSTS] --path-matcher-name=PATH_MATCHER

舉例來說,下列 --hosts 值會向 www.example.com 以及任何 altostrat.com 的子網域比對要求:

--hosts=[*.altostrat.com,www.example.com]

如要變更網址對應的預設服務 或預設值區 ,請使用 url-maps set-default-service 指令:

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
  | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

Terraform

如要建立全域網址對應,請使用 google_compute_url_map 資源

# url map
resource "google_compute_url_map" "default" {
  name            = "http-lb"
  default_service = google_compute_backend_bucket.default.id
}

如要建立地區網址對應,請使用 google_compute_region_url_map 資源

resource "google_compute_region_url_map" "default" {
  name            = "regional-l7-xlb-map"
  region          = "us-west1"
  default_service = google_compute_region_backend_service.default.id
}

驗證網址對應設定

部署網址對應前,請務必驗證網址對應設定,確保對應會將要求轉送至適當的後端。只要在網址對應設定中加入測試,您可以試用不同的網址對應規則,並視需要執行多次測試,確保部署對應後,流量會適當轉送。此外,如果日後需要變更任何規則,您可以在實際發布新設定前測試這些變更。

使用 gcloud compute url-maps validate 指令驗證網址對應設定。這項指令只會測試提供的設定。無論測試通過或失敗,系統都不會將變更儲存至已部署的網址對應。這與其他網址對應指令 (editimport) 的行為不同,這些指令也會執行相同的測試,但如果測試通過,實際上會儲存新的設定。如要測試新的路由設定,但不想變更已部署的網址對應,請使用 validate 指令。

validate 指令可讓您測試進階轉送設定,例如根據標頭和查詢參數轉送、HTTP 至 HTTPS 重新導向,以及網址重寫。

主控台

您無法使用 Google Cloud 控制台驗證網址對應設定。請改用 gcloud 或 REST API。

gcloud

如要驗證網址對應設定,請使用 gcloud compute url-maps validate 指令。

全域外部應用程式負載平衡器:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --global

傳統版應用程式負載平衡器:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL \
    --global
  • PATH_TO_URL_MAP_CONFIG_FILE:請替換為包含網址對應設定的檔案路徑,以進行驗證。

驗證現有負載平衡器網址對應的變更

如果現有負載平衡器的網址對應需要變更,您可以先測試這些設定變更,再讓變更生效。

  1. 將負載平衡器的現有網址對應匯出至 YAML 檔案。

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. 使用新設定編輯 YAML 檔案。舉例來說,如果您想編輯外部應用程式負載平衡器,並將路徑為 /video 的所有要求傳送至名為 video-backend-service 的新後端服務,可以按照下列方式在網址對應設定中新增測試:

    現有的網址對應設定,只有一個預設 web-backend-service

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     

    編輯後的網址對應設定,新增了路徑比對器,並針對預設 web-backend-service 和新的 video-backend-service 後端服務進行測試:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     hostRules:
     - hosts:
       - '*'
       pathMatcher: pathmap
     pathMatchers:
     - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
       name: pathmap
       pathRules:
       - paths:
         - /video
         - /video/*
         service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
     tests:
     - description: Test routing to existing web service
       host: foobar
       path: /
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     - description: Test routing to new video service
       host: foobar
       path: /video
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
    
  3. 驗證新設定。

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    如果所有測試都順利通過,您應該會看到類似以下的成功訊息:

    Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME]
    

    如果測試失敗,系統會顯示錯誤訊息。修正網址對應設定檔中的必要項目,然後再次驗證。

    Error: Invalid value for field 'urlMap.tests': ''.
    Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
    
  4. 確認新設定可正常運作且不會影響現有設定後,即可將新設定匯入網址對應表。請注意,這個步驟也會部署含有新設定的網址對應。

    gcloud compute url-maps import URL_MAP_NAME \
       --source PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    

在網址對應中加入測試

您可以在網址對應中新增設定測試,確保網址對應會將要求轉送至預期的後端服務或後端值區。

本節說明如何將測試新增至已部署的網址對應。如要測試網址對應的新變更,但不想實際部署對應,請參閱「驗證網址對應設定」。

編輯網址對應時,系統會執行測試,如果測試失敗,就會顯示錯誤訊息:

Error: Invalid value for field 'urlMap.tests': ''.
Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.

您可以自行選擇是否要在網址對應中加入測試。

主控台

如要從 Google Cloud 控制台執行測試,請按照下列步驟操作:

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

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 按一下「轉送規則」。如果是傳統版應用程式負載平衡器,則為「主機與路徑規則」
  5. 按一下「顯示設定測試」
  6. 按一下「新增設定測試」。加入下列測試網址和後端:
    • 測試主機與路徑 1 example.com後端 www-service.
    • 測試主機與路徑 2 example.net後端 www-service.
    • 測試主機與路徑 3 example.net/web後端 www-service.
    • 測試主機與路徑 4 example.com/videos後端 video-service.
    • 測試主機與路徑 5 example.com/videos/browse後端 video-service.
    • 測試主機與路徑 6 example.net/static後端 static-service.
    • 測試主機與路徑 7 example.net/static/images後端 static-service.
  7. 確認「Routing rules」(路由規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。如果是傳統版應用程式負載平衡器,請尋找「Host and path rules」(主機與路徑規則) 旁邊的藍色勾號。

gcloud

如要使用 Google Cloud CLI 在網址對應中新增測試,請使用以下指令: gcloud compute url-maps edit

gcloud compute url-maps edit URL_MAP_NAME

這會啟動文字編輯器。如果使用的是外部應用程式負載平衡器,測試必須使用下列格式:

  tests:
    - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.com
      path: /videos
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.com
      path: /videos/browse
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.net
      path: /web
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
      path: /static
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
    - host: example.net
      path: /static/images
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service

請注意,如果未在主機規則中指定主機,來自所有主機的網址 (包含 example.com 與 example.net) 都會符合規則。如果您有主機規則,就必須建立同時符合 example.com 與 example.net 的規則。

列出網址對應

主控台

您無法在 Google Cloud 控制台中列出所有網址對應。

gcloud

如要使用 Google Cloud CLI 顯示網址對應清單,請使用 url-maps list 指令。

gcloud compute url-maps list

取得網址對應的資訊

主控台

若要取得網址對應的資訊,請依照下列步驟操作:

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

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 檢視「Host and path rules」(主機與路徑規則)

gcloud

如要使用 Google Cloud CLI 取得單一網址對應的資訊,請使用 url-maps describe 指令。

gcloud compute url-maps describe URL_MAP_NAME

刪除網址對應

您必須先刪除所有參照網址對應的目標 Proxy,才能刪除網址對應。詳情請參閱「刪除目標 Proxy」。

主控台

如需刪除網址對應,請依照下列步驟操作:

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

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面上,檢視「Host and path rules」(主機與路徑規則)。
  5. 按一下網址對應旁的「X」,即可刪除網址對應。網址對應就會消失。
  6. 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。

gcloud

如要使用 Google Cloud CLI 刪除網址對應,請使用 url-maps delete 指令。刪除網址對應前,必須先刪除任何參考該網址對應的目標 HTTP Proxy。

gcloud compute url-maps delete URL_MAP_NAME [--quiet]

刪除路徑比對器

主控台

如要刪除路徑比對器,請依照下列步驟操作:

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

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 選取 [Host and path rules] (主機與路徑規則)
  5. 在現有網址對應的「Paths」(路徑) 欄位,按一下路徑比對器名稱上的「x」。
  6. 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。

gcloud

如要刪除路徑比對器,請使用 gcloud compute url-maps remove-path-matcher 指令:

gcloud compute url-maps remove-path-matcher URL_MAP_NAME \
   [--path-matcher-name PATH_MATCHER]

刪除主機規則

主控台

若要刪除主機規則,請依照下列步驟操作:

  1. 如果尚未進入「Host and path rules」(主機與路徑規則) 頁面,請前往「Load balancing」(負載平衡) 頁面。

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

  2. 按一下負載平衡器的「名稱」
  3. 在「Load Balancer Details」(負載平衡器詳細資料) 頁面中,按一下所選負載平衡器的「Edit」(編輯)
  4. 選取 [Host and path rules] (主機與路徑規則)
  5. 在現有網址對應的「Hosts」(主機) 欄位中,按一下主機名稱上的「x」。
  6. 確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。

gcloud

如要從網址對應中刪除主機規則,請使用 gcloud compute url-maps remove-host-rule 指令:

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

舉例來說,若要移除的主機規則包含來自名為 my-map 網址對應的主機 altostrat.com,您需要執行下列指令:

gcloud compute url-maps remove-host-rule my-map --host altostrat.com

流量管理指南

並非所有產品都支援所有網址對應功能。網址對應會與負載平衡器搭配使用,支援多項進階流量管理功能,但傳統版應用程式負載平衡器不支援所有功能。

請參閱下表,瞭解管理作品的網址對應功能。

產品 網址對應功能和流量管理指南
全域外部應用程式負載平衡器 負載平衡器功能:轉送和流量管理

流量管理總覽

設定流量管理

設定網址重新導向

設定 HTTP 至 HTTPS 的重新導向

主機名稱和路徑

轉送要求

Cookie

傳統版應用程式負載平衡器 負載平衡器功能:轉送和流量管理

流量管理總覽

設定網址重新導向

設定 HTTP 至 HTTPS 的重新導向

主機名稱和路徑

標頭和查詢參數型轉送

區域性外部應用程式負載平衡器 負載平衡器功能:轉送和流量管理

流量管理總覽

設定流量管理

設定網址重新導向

設定 HTTP 至 HTTPS 的重新導向

主機名稱和路徑

轉送要求

Cookie

內部應用程式負載平衡器 負載平衡器功能:轉送和流量管理

流量管理總覽

設定流量管理

設定網址重新導向

設定 HTTP 至 HTTPS 的重新導向

Cookie

主機名稱和路徑

Cloud Service Mesh Cloud Service Mesh 功能:路由和流量管理

進階流量管理總覽

設定進階流量管理

API 和 gcloud CLI 參考資料

除了 Google Cloud 控制台,您也可以使用 API 和 gcloud CLI 建立網址對應。

API

如需透過 REST API 使用網址對應時可用的屬性和方法說明,請參閱下列內容:

產品 API 說明文件
外部應用程式負載平衡器 urlMaps
內部應用程式負載平衡器 regionUrlMaps
Cloud Service Mesh urlMaps

gcloud CLI

如要瞭解 Google Cloud CLI 中的 Google Cloud CLI,請參閱下列內容:

  • 全域:--global
  • 地區性:--region=[REGION]

如要進行進階流量管理,請使用 YAML 檔案,並透過 gcloud compute url-maps import 指令匯入檔案。

後續步驟