1.基本信息
MSFE 全稱為 MSHA-FRONT-END,由多活容災產品(MSHA)產品提供的流量網關,負責?口流量的分發及路由。MSHA 產品架構上通常將業務系統自上而下分為接入層、應用層和數據層三層。而本文要介紹的 MSFE 主要工作在接?層,其核心是?個基于 Tengine 的多活組件。
MSFE需要多單元部署,它能承接所有的單元前端流量,并按照路由規則將流量分流到各個單元的后端應?。多活控制臺提供MSFE集群新建、擴容、縮容等常規運維能?。
本?介紹如何配置MSFE。官?中,MSFE 的配置過程主要就是配置域名,或者ip的信息。 MSFE 是基于Tengine實現的,因此可以推測,我們可以利? Nginx + lua ,或者openresty去實現相同的功能。
2.參考Apache APISIX動態路由的?案去實現 MSFE
為了實現路由動態配置,Apache APISIX 做了兩件事:
- 在 Nginx 配置?件??配置單個 server,這個 server ??只有?個 location。我們把這個 location作為主??,這樣所有的請求都會?到這個地?上來。
- 我們? Lua 完成路由分發的?作。Apache APISIX 的路由分發模塊,?持在運?時增減路由,這樣就能動態配置路由了。
3.?案設計
- 路由標提取?式:【多活接??關】從HTTP請求信息中提取路由標的?式,?持從Parameter/Header/Cookie中提取。需要跟業務系統提前約定提取?式,并由業務系統將流量的路由標設置進HTTP請求約定key值中。當流量到達多活接?層后由接??關進?提取識別,以便對流量進?路由計算和糾錯處理。
- 路由標解析規則:?于定義如何解析路由標的邏輯,表?為對路由標的計算,解析規則分為精準和范圍兩類
- 精準:路由標解析邏輯沒有限制
- 范圍:解析邏輯?成的路由標固定落到?個數值范圍中,如哈希、取模、截取等
- 路由規則:流量分配規則,與路由標解析規則相對應
- 精準:采??名單的?式來配置各單元的路由標名單
- 范圍:按照范圍區間來配置各單元的路由規則
4.具體實現步驟
1). 獲取http請求中的路由標,其值分為“精確”和“范圍”兩種。
- 從 Parameter 中獲取,(demo已實現),路由標key為 “routeflag”,
- 從 Header 中獲取,
- 從 Cookie 中獲取,
2). 根據路由標解析規則計算,“精確”的情況設置?名單,“范圍”的情況設置范圍直接轉發。
- 精確:實現?名單的功能,逐個對?轉發,
- 范圍:實現哈希值計算,將計算結果落?到某個范圍中,按照落?區間轉發
- (?前demo實現了進?判斷之后,直接轉發)
3). 實現轉發功能。(即分流給后端的服務器)
- 利? proxy_pass 轉發,在 server 層?,(demo已實現)。
- 利? lua 代碼調? nginx 函數進?轉發