使用網址對應

本指南說明如何設定 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

設定網址對應

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

主控台

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

  1. 前往「負載平衡」頁面。

    前往「負載平衡」

  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. 在「Host and path rules」(主機與路徑規則) 頁面上,於「Backends」選單中,選取可用的後端服務 或後端值區。
  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.comaltostrat.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. 前往「負載平衡」頁面。

    前往「負載平衡」

  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. 前往「負載平衡」頁面。

    前往「負載平衡」

  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. 前往「負載平衡」頁面。

    前往「負載平衡」

  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. 前往「負載平衡」頁面。

    前往「負載平衡」

  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」(負載平衡) 頁面。

    前往「負載平衡」

  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 指令匯入這些檔案。

後續步驟