如何在 Application Load Balancer 上設定路徑型路由?
我打算在 Application Load Balancer 後方執行多個微型服務。我想根據 URL 路徑將請求轉發至特定的目標群組。
簡短描述
您可以使用 Application Load Balancer 建立一個接聽程式,其中包含根據 URL 將請求轉發至目標群組的規則。路徑模式規則僅適用於 URL 的路徑,而不適用於 URL 的查詢參數。如需路徑模式的詳細資訊,請參閱路徑條件。
**注意:**Classic Load Balancer、Network Load Balancer 或閘道負載平衡器不支援此功能。
若要在 Application Load Balancer 上建立路徑型路由,請完成下列步驟:
- 建立目標群組。
- 設定接聽程式規則。
先決條件:
- 在 Amazon Virtual Private Cloud (Amazon VPC) 中啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。如需詳細資訊,請參閱開始使用 Amazon EC2。
- 檢查這些 Amazon EC2 執行個體的目標安全群組是否允許存取接聽程式連接埠和運作狀態檢查連接埠。
- 在您打算向目標群組註冊的 Amazon EC2 執行個體上部署應用程式。例如,請參閱教學課程: 在 AL2023 上安裝 LAMP 伺服器。
- 建立 Application Load Balancer。
解決方法
建立目標群組
建立執行個體之後,請將其註冊至目標群組。根據設定的接聽程式規則,Application Load Balancer 會根據您指定的連接埠和通訊協定傳送請求給已註冊的目標。但是,當您個別註冊目標時,您可以覆寫連接埠資訊。如需詳細資訊,請參閱為 Application Load Balancer 建立目標群組。
例如,假設您有兩項服務,服務 A 和服務 B。執行這些服務的應用程式會使用連接埠 80。服務 A 在路徑 /svcA 上執行應用程式,而服務 B 則在路徑 /svcB 上執行應用程式。
- 您建立兩個通訊協定為 HTTP、連接埠為 80 的目標群組,每個群組都已部署一個應用程式。
- 您將執行服務 A 的 EC2 執行個體註冊至 target-group-A。對於此目標群組,您可以將 HealthCheckProtocol 設定為 HTTP,將 HealthCheckPath 設定為 /svcA。
- 您將執行服務 B 的 EC2 執行個體註冊至 target-group-B。對於此目標群組,您可以將 HealthCheckProtocol 設定為 HTTP,將 HealthCheckPath 設定為 /svcB。
您可以隨時在目標群組中新增目標,或從目標群組中移除目標。如需詳細資訊,請參閱向 Application Load Balancer 目標群組註冊目標。
指定目標群組之後,負載平衡器會持續監控已啟動的可用區域中所有目標的運作狀態。負載平衡器會將請求路由至運作狀態良好的已註冊目標。如需詳細資訊,請參閱 Application Load Balancer 目標群組的運作狀態檢查。
設定接聽程式規則
當您為 Application Load Balancer 建立接聽程式時,除了預設規則之外,您可以定義一個或多個規則。規則包含優先順序、動作以及一個或多個條件。您無法為預設規則定義條件。如果沒有符合已定義規則的任何條件,則會執行預設規則的動作。
若要在 Application Load Balancer 上實現路徑型路由,您必須設定接聽程式規則。根據您想要路由傳送請求的路徑模式,為每個路徑模式設定一個規則。
接聽程式規則範例
下列範例顯示服務 A 和 B 的接聽程式規則:
接聽程式規則 1: 如果您的請求 URL 路徑包含字串 /svcA,請將請求轉發至 target-group-A。這樣做是因為 target-group-A 包含在指定路徑上執行應用程式的服務 A。
接聽程式規則 2: 如果您的請求 URL 路徑包含字串 /svcB,則將該請求轉發至 target-group-B。這樣做是因為 target-group-B 包含在指定路徑上執行應用程式的服務 B。
- 若要建立新的 HTTP 接聽程式,請參閱為您的 Application Load Balancer 建立 HTTP 接聽程式。
- 若要建立新的 HTTPS 接聽程式,請參閱為您的 Application Load Balancer 建立 HTTPS 接聽程式。
若要使用條件和動作更新接聽程式規則,請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導覽窗格的 Load Balancing (負載平衡) 下,選擇 Load Balancers (負載平衡器)。
- 選擇負載平衡器,然後選擇 Listeners and rules (接聽程式和規則)。
- 若要更新接聽程式,請選擇 Listeners and rules (接聽程式和規則) 索引標籤,然後選取 Protocol:Port 欄中的文字,以開啟接聽程式的詳細資訊頁面。
- 在 Rules (規則) 索引標籤的 Listener rules (接聽程式規則) 區段中,選取您要編輯的規則。
- 選擇 Actions (動作),然後選擇 Edit rule (編輯規則)。
- 選擇 Add rule (新增規則)。
- 視需要修改名稱和標籤。若要新增其他標籤,請選擇 Add additional tags (新增其他標籤)。
- 選擇 Next (下一步)。
- 若要為 /svcA 新增路徑型規則,請選擇 Add condition (新增條件、路徑),選擇 Path (路徑),然後輸入路徑模式 /svcA。選擇 Confirm (確認)。
- 選擇 Next (下一步)。
- 若要新增轉送動作,請選擇 Routing actions as Forward to target groups (路由動作做為轉送至目標群組),然後在功能表上選擇目標群組 target-group-A。
- 選擇 Next (下一步)。
- 選擇適當的優先順序。
- 檢閱規則的詳細資料和更新的組態。如果您對選擇感到滿意,請選擇 Save changes (儲存變更)。
對路徑 /svcB 重複上述步驟,並進行下列變更:
- 在步驟 10 中,請輸入路徑模式 /svcB。
- 在步驟 12 中,選擇目標群組 target-group-B f。
如需詳細資訊,請參閱Application Load Balancer 的接聽程式規則。
**注意:**路徑型路由規則會尋找精確比對。如果您的應用程式需要在這些路徑上進一步路由請求,請在路徑型路由規則的條件中加入萬用字元。在路由請求時,使用類似於 /svcA* 或 /svcB* 的路徑模式,以考慮這些路徑上的任何文件。
測試路徑型路由
若要測試路徑型路由,請在 Web 瀏覽器中複製 Application Load Balancer 的 DNS 名稱,然後新增網址路徑 /svcA 或 /svcB。
例如,假設您 Application Load Balancer 的 DNS 名稱為 alb-demo-1234567890.us-west-2.elb.amazonaws.com。
- http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA 必須傳回服務 A。
- http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB 必須傳回服務 B。
當 Application Load Balancer 接聽程式收到請求時,接聽程式會根據路徑條件將該請求轉發至適當的目標群組。
如果使用路徑型路由,您可以在單一 Application Load Balancer 後方託管多個微服務。您可以根據接聽程式規則和目標群組,將流量路由到每個服務。您也可以根據主機標頭、使用者代理程式標頭或查詢參數值等條件來路由流量。如需詳細資訊,請參閱 AWS Application Load Balancer 的進階請求路由。
相關資訊
- 語言
- 中文 (繁體)

