多層網路
OpenResty Edge 可以用於構建和管理大規模的閘道器叢集, 預設情況下,Edge 閘道器節點是直接跟源站通訊的, 我們也提供「多層網路」功能,可以很方便的利用現有的 Edge 閘道器組建一個樹狀的回源網路。
如何使用多層網路呢,首先我們需要建立多層網路的回源策略, 在「全域性配置」=>「多層網路」裡,我們可以看到所有的策略的列表,在這裡我們先點選新建策略
每個多層網路回源策略,都需要一個唯一的名字,這樣用於方便區分使用,
比如這裡我們輸入 source in China
,表示這個策略適合源站是在中國境內的場景。
然後是閘道器叢集網路拓撲,源站在左邊,往後右這一列是所有閘道器叢集的名字, 對的,多層網路的回源拓撲是以閘道器叢集為單位的,一般來說一個閘道器叢集就對應一個 IDC 機房, 初始情況下所有閘道器叢集是直接回源站的。
我們可以拖動閘道器叢集來修改網路拓撲,比如把「 Tokyo 」拖到 「 HongKong 」上方, 「 Tokyo 」就會挪到 「 HongKong 」的後面, 意味著這個策略下 「 Tokyo 」的回源請求會先發到「 HongKong 」,再由「 HongKong 」回真實的源站。
我們還可以拖動「 Tokyo 」上的「備份」到「 Peking 」上方,「 Tokyo 」的備份就會連線到「 Peking 」, 當「 Tokyo 」到「 HongKong 」的連線失敗,「 Tokyo 」會用再次嘗試傳送回源請求到「 Peking 」。
如果再次失敗的話,「 Tokyo 」還會嘗試直接請求真實的源站。
如果沒有配置備份的話,也會嘗試直接請求真實的源站。
同理我們也可以把「 NewYork 」配置為經過「 HongKong 」回源。
點選建立後回到策略列表頁。
我們也可以在列表頁裡,點選策略的名字進入修改策略的頁面。
有了多層網路策略之後,我們就可以在應用內的 反向代理規則 中選擇使用的多層網路策略了。
如下面例子,如果一個請求達到 「 NewYork 」的閘道器節點之後,會先透過「 HongKong 」中轉再回到「 Source 」源站, 如果一個請求達到「 Peking 」閘道器節點,則會直接回「 Source 」源站。
另外,不同的應用可以使用同一個多層網路策略,同一個應用的不同規則也可以使用不同的網路策略。
好了,怎麼使用介紹完了,那麼使用「多層網路」可以有哪些好處呢
- 改善 Edge 閘道器節點到源站的連通性
比如我們用 OpenResty Edge 構建一個全球 CDN 網路對終端使用者提供就近訪問, 但是源站只有一個,那麼邊緣的 Edge 閘道器節點跟源站可能隔著很複雜的網路情況。
比如上述示例中的「 NewYork 」到源站的網路可能會不夠穩定,我們讓「 NewYork 」先回「 HongKong 」,再由「 HongKong 」回源站。
當然,我們是假定「 NewYork 」到「 HongKong 」的網路會好過一般的線路, 比如通常情況下同一個雲主機廠商的不同機房之間線路會有專門的維護,可以認為好過一般的線路。
- 提高 Edge 的整體快取命中率
如果我們還同時開啟了快取,那麼回源的請求在經過中間節點的時候,也是可以快取的。
比如上述示例中的「 NewYork 」到「 HongKong 」的回源請求,是可以利用「 HongKong 」上的快取資源的, 並且如果「 HongKong 」也有直接服務終端使用者的話,來自終端使用者和「 NewYork 」的請求快取是通用的。
- 減少 WAF 的計算資源消耗
首先,WAF 本身是個重 CPU 計算消耗的過程,如果還同時開啟了快取和 WAF, 在多層網路的模式下,我們會把 WAF 的匹配檢查過程安排到多層網路的最後一層來執行。
因為快取命中的請求是無法攻擊源站的,這樣可以充分利用邊緣的快取來減少 WAF 的執行次數, 從而減少整體的 CPU 計算資源消耗。