網址對應概念

Google Cloud Platform HTTP(S) 負載平衡器使用「網址對應」方法,將傳入要求導向至後端服務後端值區

您建立的每個 HTTP(S) 負載平衡器都必須具有網址對應。當您使用 GCP Console 建立 HTTP(S) 負載平衡器時,負載平衡器的名稱及其網址對應是相同的。每個網址對應都會將流量導向至預設的後端服務或後端值區。除了這個預設設定,您還可以根據要求的主機名稱和網址路徑部分,將流量導向至不同的後端服務和後端值區。

例如,您可以將針對 https://example.com/video 的要求轉送到一個後端服務,將針對 https://example.com/audio 的要求轉送到另一個後端服務,以及將針對 https://example.com/graphics 的要求轉送到 Cloud Storage 後端值區,這一切只需要一個網址對應和 HTTP(S) 負載平衡器就可以辦到。

在閱讀本文之前,請先熟悉 HTTP(S) 負載平衡的整體基本概念。

本文說明網址對應與 HTTPS(S) 負載平衡器的作用方式。Traffic Director 是 GCP 針對服務網格推出的全代管流量控制層,它使用網址對應並支援其他設定參數。如要進一步瞭解這些參數,請參閱 Traffic Director 說明文件

關於網址對應

當要求到達負載平衡器時,負載平衡器會根據網址對應的設定,將要求轉送至特定的後端服務或後端值區。

例如,假設您的設定如下:

  • 一個 IP 位址。針對您機構的所有要求都會傳送至相同的 IP 位址和相同的負載平衡器。系統會根據要求網址將流量導向至不同的後端服務。
  • 兩個網域
    • example.net,用於託管訓練影片
    • example.org,用於託管您的機構網站
  • 四組伺服器
    • 一組用於託管您的機構網站 (後端服務:org-site)
    • 一組用於託管整個訓練影片網站 (後端服務:video-site)
    • 一組用於託管高畫質 (HD) 訓練影片 (後端服務:video-hd)
    • 一組用於託管標準畫質 (SD) 訓練影片 (後端服務:video-sd)

您希望發生以下情況:

  • 將針對 example.org (或 example.org 以外的任何網域) 的要求傳送至 org-site 後端服務
  • 將針對 example.net (與其他特定路徑不相符) 的要求傳送至 video-site 後端服務
  • 將針對 example.net/video/hd/* 的要求傳送至 video-hd 後端服務
  • 將針對 example.net/video/sd/* 的要求傳送至 video-sd 後端服務
服務設定範例 (點選即可放大)
服務設定範例 (點選即可放大)

您可以建立網址對應來進行這方面的設定。下節將說明您會用到的一些網址對應元件。

網址對應元件

網址對應是一種 GCP 設定資源,可將針對網址的要求導向至後端服務或後端值區。它使用網址的主機名稱和路徑部分做為導向依據:

  • 主機名稱:主機名稱是網址的網域名稱部分;例如,網址 http://example.net/video/hd 的主機名稱部分是 example.net
  • 路徑:路徑是網址中主機名稱後面的部分;例如,網址 http://example.net/video/hd 的路徑部分是 /video/hd

您可以透過下列網址對應設定參數,控制要用哪些後端服務或後端值區來接收傳入的要求:

基本網址對應流程 (點選即可放大)
基本網址對應流程 (點選即可放大)
  • 預設服務預設後端值區:建立網址對應時,您必須指定預設後端服務或預設後端值區,但不能同時指定兩者。除非另有適用的主機規則,否則此預設值表示 GCP 會將帶有任何主機名稱的網址要求導向至預設後端服務或值區。

  • 主機規則:主機規則會將傳送到一或多個相關主機名稱的要求,導向至單一「路徑比對器」。網址的主機名稱部分與主機規則設定的主機名稱完全相符。如要將針對 http://example.net/video/hd 的要求導向至路徑比對器,您必須有一個主機規則至少包含主機名稱 example.net。這個主機規則也可以處理其他主機名稱的要求,但會將它們導向至相同的路徑比對器。如果需要將要求導向至不同的路徑比對器,您必須使用不同的主機規則。網址對應中的兩個主機規則不能包含相同的主機名稱。您可以透過在主機規則中指定萬用字元 * 來比對所有主機名稱。以網址 http://example.orghttp://example.net/video/hdhttp://example.com/audio 為例,其主機名稱 example.orgexample.netexample.com 都可以透過在主機規則中指定 * 來達成比對。您也可以使用萬用字元 * 來比對部分主機名稱。例如,主機規則 *.example.net 可與主機名稱 foo.example.netbar.example.net 都達成比對。

  • 路徑比對器:路徑比對器是主機規則所參照的設定參數。它定義了網址的路徑部分與應處理要求的後端服務或後端值區之間的關係。路徑比對器包含兩個元素:

    • 路徑比對器預設服務路徑比對器預設後端值區:對於每個路徑比對器,您必須至少指定一個預設後端服務或預設後端值區,但不能同時指定兩者。這個預設值表示,GCP 會將主機名稱與路徑比對器相關主機規則相符的網址要求,以及網址路徑與路徑比對器中的任何路徑規則都相符的網址要求,導向至預設後端服務或值區。

    • 路徑規則:您可以為每個路徑比對器指定一或多個路徑規則,這些規則是將網址路徑對應到單個後端服務或後端值區的鍵/值組合。下節作業順序會進一步說明路徑規則的運作方式。

作業順序

對於要求網址中的特定「主機名稱」和「路徑」,GCP 會使用下列程序將要求導向至正確的後端服務或後端值區 (如網址對應的設定):

  • 如果網址對應包含網址主機名稱的主機規則,GCP 會根據您的定義,將要求導向至網址對應的預設後端服務或預設後端值區。

  • 如果網址對應含有具網址主機名稱的「主機規則」,系統會查詢該主機規則參照的路徑比對器:

    • 如果路徑比對器含有與網址路徑完全相符的路徑規則,則 GCP 會將要求導向至該路徑規則的後端服務或後端值區。

    • 如果路徑比對器不含與網址路徑完全相符的路徑規則,但含有結尾為 /* 的路徑規則 (其前置字串與網址路徑中「最長的一段」相符),則 GCP 會將要求至導向該路徑規則的後端服務或後端值區。舉例來說,網址對應含有兩個路徑比對器規則 /video/hd/movie1/video/hd/*,如果網址包含與 /video/hd/movie1 完全相符的路徑,則會與該路徑規則達成比對。

    • 如果前面的條件都不成立,GCP 會將要求導向至路徑比對器的預設後端服務或預設後端值區 (視您的定義而定)。

路徑比對器限制

路徑比對器和路徑規則具有下列限制:

  • 路徑規則只能在正斜線字元 (/) 之後加上萬用字元 (*)。舉例來說,/videos/*/videos/hd/* 為有效的路徑規則,但 /videos*/videos/hd* 則為無效的路徑規則。

  • 路徑規則不使用規則運算式或子字串比對。例如,/videos/hd/videos/hd/* 的路徑規則不適用於含有路徑 /video/hd-abcd 的網址。然而,/video/* 的路徑規則卻能適用。

  • 路徑比對器 (通常指網址對應) 不提供類似於 Apache LocationMatch 指令的功能。如果您的應用程式會產生具有共同前置字串的動態網址路徑 (例如 /videos/hd-abcd/videos/hd-pqrs,而您必須將對這些路徑的要求傳送至不同的後端服務,可能無法透過網址對應來達成目標。如果是只有少數幾個動態網址的簡單情況,您「或許」可以建立具有限路徑規則組合的路徑比對器。如果是較複雜的情況,您必須在後端 VM 上進行以路徑為依據的規則運算式比對。

主機名稱只能參照單一主機規則,且主機規則只能參照單個路徑比對器。但是,單一主機規則可以處理多個主機「名稱」,並且多個主機規則可以「參照」單個路徑比對器。因此,每個專屬網址只會導向到一個後端服務或後端值區:

  • GCP 會使用網址的主機名稱部分來選擇一個主機規則及其參照的路徑比對器。
  • 在路徑比對器中,您不能為同一路徑建立多個路徑規則。例如,針對 /videos/hd 的要求無法導向至超過一個的後端服務或後端值區。請注意,後端服務可以在不同區域和地區中具有後端執行個體群組或後端網路端點群組,您也可以建立使用多地區儲存空間級別的後端值區。

網址對應和通訊協定

您可以使用相同的網址對應、主機規則和路徑比對器來處理用戶端提交的 HTTP 和 HTTPs 要求,只要目標 HTTP Proxy 和目標 HTTPS Proxy 都同時參照網址對應。

網址對應不會為用戶端和負載平衡器之間的連線提供「通訊協定」重新導向。例如,您不能使用網址對應來指示用戶端系統從 HTTP 切換到 HTTPS。您必須在後端 VM 上實作所有用戶端通訊協定重新導向。

最簡單的網址對應

最簡單的網址對應僅有預設的後端服務或預設的後端值區,不含任何主機規則,也沒有路徑比對器。所有要求網址都會由預設的後端服務或後端值區處理 (視您的定義而定)。

如果您定義了預設後端服務,則 GCP 會根據後端服務的設定,將要求導向至其後端執行個體群組或後端網路端點群組。

除預設服務外沒有任何其他規則的網址對應 (點選即可放大)
除預設服務外沒有任何其他規則的網址對應 (點選即可放大)

網址對應範例

以下範例說明網址對應的作業順序。為了方便理解,這個範例只使用後端服務;但您可以改用後端值區。

下列步驟說明如何設定 GCP HTTP(S) 負載平衡器的網址對應。有關如何建立 HTTP(S) 負載平衡器的其他元件的範例,請參閱建立以內容為基礎且跨地區的負載平衡說明。範例中討論的每個後端服務都具有外部機制,並使用 HTTP、HTTPS 或 HTTP/2 通訊協定。

  1. 為負載平衡器建立網址對應,並指定預設的後端服務。本範例建立名為 video-org-url-map 的網址對應,而該網址對應參照了名為 org-site 的現有後端服務。

    gcloud compute url-maps create video-org-url-map \
        --default-service=org-site
    
  2. 建立名為 video-matcher 的路徑比對器,其特性如下:

    • 預設的後端服務是 video-site,這是現有的後端服務。
    • 新增路徑規則,將針對網址路徑 /video/hd 或網址路徑前置字串 /video/hd/* 的要求,導向至名為 video-hd 的現有後端服務。
    • 新增路徑規則,將針對網址路徑 /video/sd 或網址路徑前置字串 /video/sd/* 的要求,導向至名為 video-sd 的現有後端服務。
    gcloud compute url-maps add-path-matcher video-org-url-map \
        --path-matcher-name=video-matcher \
        --default-service=video-site \
        --path-rules=/video/hd=video-hd,/video/hd/*=video-hd,/video/sd=video-sd,/video/sd/*=video-sd
    
  3. 為參照 video-matcher 路徑比對器的 example.net 主機名稱建立主機規則。

    gcloud compute url-maps add-host-rule video-org-url-map \
        --hosts=example.net \
        --path-matcher-name=video-matcher
    

video-org-url-map 網址對應透過以下方式將要求的網址導向至後端:

具有路徑規則、路徑比對器和主機規則的網址對應 (點選即可放大)
具有路徑規則、路徑比對器和主機規則的網址對應 (點選即可放大)

GCP 會根據下表列出的原則,處理針對各種網址的要求:

主機名稱 網址路徑 選取的後端服務 選取理由
主機名稱
example.org 和其他所有主機名稱,但不含
example.net
所有路徑 org-site 主機名稱不在網址對應的任何主機規則中,因此會將要求導向至網址對應的預設後端服務。
主機名稱:
example.net
/video
/video/examples
video-site 將要求導向至預設的後端服務,因為 /video//video/* 沒有路徑規則。example.net 的主機規則參照了一個路徑比對器,但該路徑比對器沒有任何適用於這些路徑的路徑規則。
主機名稱:
example.net
/video/hd
/video/hd/movie1
/video/hd/movies/movie2
其他開頭為 /video/hd/* 的網址
video-hd example.net 的主機規則參照了一個路徑比對器,該路徑比對器的路徑規則會將針對與 /video/hd 完全相符或開頭為 /video/hd/* 之網址路徑的要求導向至 video-hd 後端服務。
主機名稱:
example.net
/video/sd
/video/sd/show1
/video/sd/shows/show2
其他開頭為 /video/sd/* 的網址
video-sd example.net 的主機規則參照了一個路徑比對器,該路徑比對器的路徑規則會將針對與 /video/sd 完全相符或開頭為 /video/sd/* 之網址路徑的要求導向至 video-sd 後端服務。

** 其他注意事項

負載平衡器無法使用 Traffic Director 說明文件中介紹的部分網址對應功能。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Load Balancing