如果您的業務請求需要分發給其他服務或者應用,您可以為應用配置網關路由功能,實現請求路由分發。本文介紹如何通過應用型負載平衡ALB為您的應用設定路由規則。
前提條件
背景資訊
Server Load Balancer (SLB)是一種流量分發服務,旨在通過將流量平衡地分配到後端多個伺服器上,來擴充應用的處理能力並提升系統整體的可用性,同時消除潛在的單點故障。應用型負載平衡ALB作為SLB產品家族的一員,專門針對HTTP、HTTPS和QUIC等應用程式層協議提供服務。ALB不僅具備高度彈性和大規模應用程式層流量管理能力,還能處理複雜的業務路由需求,並與雲原生服務緊密整合,成為阿里雲官方推薦的雲原生Ingress網關解決方案。更多資訊,請參見Server Load Balancer產品家族介紹。
使用情境
單應用或多應用使用相同網域名稱但存在不同路徑流量轉寄。
單應用或多應用由不同網域名稱流量轉寄,即不同網域名稱解析的訪問IP地址是同一個。
網關路由配置完成後,您可以通過<網域名稱>:<訪問連接埠/Path>訪問相應的後端服務或者應用。
建立網關路由
在SAE網關路由中,在頂部選擇目標地區和命名空間,點擊建立網關路由。
在建立路由頁面,按照下表說明完成參數設定,然後單擊儲存。
配置項
配置說明
路由名稱
自訂路由名稱。
網路類型
選擇網路類型:
公網:通過公網網關轉寄的請求,按照實際轉寄流量計費。
私網:通過私網網關轉寄的請求不計費,僅在當前VPC內部轉寄。
網關類型
選擇ALB 應用型負載平衡。
ALB 執行個體
單擊ALB 執行個體下面的下拉框,選擇ALB執行個體,您也可以單擊下拉框右側的建立 ALB 執行個體,建立ALB執行個體。具體操作,請參見建立和管理ALB執行個體。此外,SAE支援ALB代購,目前您可選擇的代購方式包括:
建立標準版ALB執行個體(隨用隨付)
建立WAF增強版ALB執行個體(隨用隨付)
選擇建立後,系統將自動建立指定網路類型的ALB執行個體。關於ALB計費說明,請參見ALB計費概述。
說明如果目前範圍沒有ALB執行個體 ,可能是已有ALB執行個體和當前命名空間綁定的VPC不一致,可前往ALB控制台建立相同地區且VPC相同的ALB執行個體。
前端協議類型
選擇請求轉寄協議:
HTTP:適用於需要對資料內容進行識別的應用,如行動裝置 App和小型手機遊戲等。
HTTPS:適用於需要加密傳輸的應用。
重要若通過HTTPS協議訪問自訂網域名,則要求該網域名稱必須已在阿里雲備案,詳見ICP備案流程。
訪問連接埠
自訂訪問連接埠,連接埠範圍為0~65535。
進階配置
展開進階設定地區,可以設定以下參數:
串連請求逾時時間:佈建要求後端伺服器的逾時時間(可以選擇的範圍為1~180秒)。如果後端伺服器在指定時間內未響應,則會返回HTTP 504錯誤碼。
串連空閑逾時時間:設定無請求時的串連時間長度(可以選擇的範圍為1~60秒)。如果在指定的空閑時間內無新的請求,負載平衡會暫時中斷當前串連,直到下次請求來臨時重建立立新的串連。
附加HTTP頭欄位:選擇以下特定的HTTP頭部欄位以擷取特定的資訊。
開啟通過X-Forwarded-For頭欄位擷取來訪者用戶端IP:欄位格式為
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …。預設開啟
X-Forwarded-For頭欄位。ALB如何擷取用戶端真實IP教程,請參見後端伺服器通過ALB擷取用戶端真實IP。
通過SLB-ID頭欄位擷取Server Load Balancer執行個體ID:欄位格式為
SLB-ID。通過X-Forwarded-Proto頭欄位擷取Server Load Balancer執行個體的監聽協議:欄位格式為
X-Forwarded-Proto: <originatingProtocol>。通過X-Forwarded-Port頭欄位擷取Server Load Balancer執行個體的監聽連接埠:欄位格式為
X-Forwarded-Port: <port>。通過X-Forwarded-Client-srcport頭欄位擷取Server Load Balancer執行個體用戶端的連接埠:欄位格式為
X-Forwarded-Client-srcport: <port>。
資料壓縮:開啟後,ALB 會對滿足條件的響應進行 Gzip 或 Brotli 壓縮,以減少傳輸頻寬。
壓縮條件:回應標頭
Content-Length超過 1024 位元組,且用戶端要求標頭Accept-Encoding包含相應演算法。演算法優先順序:當用戶端同時支援Brotli和Gzip壓縮演算法時,ALB會優先採用更高效的Brotli演算法。
支援的
Content-Type:Brotli支援壓縮所有類型。
Gzip支援的類型包括:
text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml和application/json。
自訂轉寄策略
您可以根據實際需求配置轉寄策略,支援將前端請求轉寄到後端服務。所需配置參數如下:
網域名稱:輸入要轉寄的請求網域名稱。如果不填寫,則預設對所有網域名稱生效。您需要提前佈建網域名解析,才可以實現通過網域名稱訪問應用,請參見為ALB配置CNAME網域名稱解析。
訪問連接埠:預設是上一步驟設定的訪問連接埠,不支援設定。
Path:輸入終端訪問的路徑,不可為空白。
後端應用:選擇接收轉寄請求的應用,該應用須與轉寄請求的應用在同一個命名空間內。
容器連接埠:設定訪問後端應用的容器連接埠。
重寫策略:轉寄前端請求到後端應用時,您可以將原請求中的路徑進行重寫。例如,希望將前端請求路徑/AAA/a、/AAA/b等轉寄到後端應用時重寫為/a、/b等,可以將Path設定為/AAA/(.*),重寫策略中將路徑設定為/${1}。
說明在同一個Server Load Balancer執行個體內,監聽連接埠不可重複。
您也可以單擊+ 添加規則,添加同一網域名稱下的自訂轉寄策略的規則。
您也可以單擊+ 添加網域名稱,添加其他網域名稱的自訂轉寄策略的規則。
預設轉寄策略
ALB 執行個體:預設上面步驟選擇的ALB執行個體,不支援設定。
訪問連接埠:預設選擇上面步驟設定的訪問連接埠,不支援設定。
後端應用:選擇接收轉寄請求的應用,該應用須與轉寄請求的應用在同一個命名空間內。
容器連接埠:設定訪問後端應用的容器連接埠。
說明推薦設定預設轉寄策略,為所有未匹配上自訂轉寄策略的請求指定預設的轉寄策略,如果不設定會導致訪問報錯。
結果驗證。
方式一:登入負載平衡管理主控台,在ALB執行個體頁面,查看監聽是否已經配置。
方式二:通過
<網域名稱>:<訪問連接埠/Path>訪問相應的服務或應用,查看是否按照已配置好的轉寄策略進行了轉寄,以驗證配置是否生效。
管理路由規則
建立路由規則後,您可以在網關路由頁面查看轉寄策略、編輯、刪除網關路由,以及查看相關事件。