博客 / 詳情

返回

接入層高可用架構設計:EdgeOne實戰

1. 背景

接觸多家客户後,發現大家的接入層架構大都如下圖所示,WAF/DDoS組件客户要麼選其中之一,要麼都不選或自薦。CLB後面掛CVM,CVM上面部署Nginx或者Kong等組件。從這個架構圖可以看出,客户有考慮高可用,但僅關注自己的組件層面,沒有關注外部基礎設施(如DNS)、政策法規的影響、運營商鏈路的不穩定性等,所以往往並不不全面。要分析優化這個問題,就要先搞清楚接入層定義、接入層故障域和經典接入層架構的不足。
圖片

2. 什麼是接入層

2.1 狹義接入層

我們通常理解的接入層,是直面用户的系統組件,具有公網IP的設備,如負載均衡器、公網Nginx、自研gateway等,從實踐經驗來看,大家討論比較多的接入層高可用、穩定性往往是這個層面。(參考上面幾種接入層架構圖)

2.2 廣義接入層

思考一下用户的請求是怎麼到業務系統的?用户首先打開終端(瀏覽器、APP等),然後需要經過dns服務器解析出來域名的目標IP,然後經過公網,訪問到了我們業務系統的公網組件;隱藏在其中的還有DNS的遞歸解析、運營商網絡設備、國家管局的管控等。所有這些事項,都跟用户訪問成功有關,我稱它為廣義接入層。如下圖:
圖片

2.3 結論

那我們討論接入層建設時,應該採用廣義視角還是狹義視角?試想,如果運營商網絡擁塞、路由繞行,用户訪問你業務的請求沒辦法達成或延遲升高、此時你能説自己業務的可用性好麼?所以,為了保證可用性,我傾向於從廣義接入層角度來考慮穩定性建設。

3.接入層的故障域與應對方案

定義清楚我們要解決的接入層問題後,先看看接入層都會遇到什麼樣的故障以及潛在的應對方式。從下表(當然還有其他故障)可以看出,接入層的故障來源是多維度的,就需要我們針對每個維度做特定的設計。
圖片

4. 接入層實戰

如果要實現上面故障域的解決,需要投入大量成本,比如自建接入點+自建專線;引入更多的故障點,比如訪問鏈路上增加了DDoS/WAF;相應的運維成本也有極大的增加。還好雲服務給我們帶來了福音,這些功能都可以打包成一個服務。下面以騰訊雲的EdgeOne為例,展示通過這個組件實現我們接入層穩定性實戰。開始下面的文章之前,要先將域名接入EO,具體步驟參考官網(已經很清晰了)邊緣安全加速平台 EO 從零開始快速接入 EdgeOne-快速入門,這裏不再贅述

4.1 DNS故障和政策法規

4.1.1 單域名被封禁

域名被封禁,如果有備用域名,業務就不會立馬中斷,有時間去爭取儘快解封。大概的流程是:
1、 先創建加速域名
圖片
2、 將備用域名解析到加速域名。這裏可以接入test.xx.com和test2.xx.com做測試
圖片
具體操作參考邊緣安全加速平台 EO 通過別稱域名批量接入

4.1.2 Local DNS被劫持

可以藉助HttpDNS,把備用域名通過CNAME解析到目標加速域名上,加速域名不對外提供服務,就可以規避Local DNS被劫持的問題。

4.2 接入層組件

採用EO後,接入層變成了如下架構:
圖片
從架構圖可以看出,潛在風險在於EO集羣可用性、源站可用性,這裏EO產品也給出了高可用解決方案

4.2.1 源站高可用

從EO角度,源站高可用主要是指EO回源的冗餘。EO提供了源站組的功能實現冗餘。1、新建源站組
圖片
2、添加域名
圖片
3、加速API
圖片
4、 配置成功
圖片
5、 驗證訪問加速域名,結果在0、1兩個頁面輪流出現
圖片
把0對應的設備關機夠,頁面就僅出現1了。ps:第一次需要等0對應的設備超時後,後面才會一直到1對應的設備。
圖片
由此可見,EO本身可以作為負載均衡器使用,用於後端配置多源站,實現源站高可用。

4.2.2 跨雲調度實現

EO災備從系統角度,EO本身也會出問題。EO提供了跨雲調度的功能,實現EO本身的冗餘。與源站高可用類似,可以將加速域名分配多加速服務上,按地域實現調度。當某個服務商故障時,可修改策略或走默認策略,實現跨雲間調度
圖片
具體操作參考:邊緣安全加速平台 EO 通過流量調度至多廠商服務-最佳實踐-文檔中心-騰訊雲

4.3 運營商傳統經過運營商的網絡,對用户來講是一個黑盒;採用EO後,我們就可以通過智能路由動態選路,如下圖

圖片

4.3.1 CNAME加速

傳統業務採用CDN時,大都採用CNAME方式,解析耗時相對於A記錄,會有N倍的增加。原理如下:傳統解析路徑,一個CNAME解析會有多次交互
圖片
經過CNAME加速後,一次交互即可拿到結果,與A記錄一致。
圖片
驗證過程
1、 準備加速域名
圖片
2、 準備別稱域名
圖片
3、 驗證方式通過dig命令,來測試加速域名的目標域名及別稱域名,如下圖:
圖片
4、 驗證結果
圖片
從上表可見,加速生效了

4.3.2 靜態內容加速

大家都比較熟悉了,邊緣節點更貼近用户,有效降低了數據訪問時間延遲,避免數據傳輸抖動,保障大量數據傳輸的穩定性和有效性。

4.3.3 對於動態內容加速

原本用户訪問是走公網傳輸,具體路徑不可控導致延時不可控。從上面訪問鏈路圖可以見,EO產品藉助自建專線提供了動態數據加速,跨國加速,智能路由優化等加速特性,保證高效支撐對時延敏感的相關業務。EO邊緣節點到源站速度,經過專線加速後,相當於走了高速公路,避免路由繞行、擁塞的煩惱。1、啓用智能加速
圖片
2、配置加速域名
圖片
3、配置動態加速引擎
圖片
4、 測試結果通過下面測試,可以看出,相比於直通源站,加速後的域名離用户更近;然後加速節點走內網到達源站
圖片

4.4 安全提升

4.4.1 DDoS

分佈式拒絕服務攻擊(Distributed Denial of Service,DDoS)是指攻擊者通過網絡遠程控制大量殭屍主機向一個或多個目標發送大量攻擊請求,堵塞目標服務器的網絡帶寬或耗盡目標服務器的系統資源,導致其無法響應正常的服務請求。傳統的防禦方式,是在單一入口,提供更高的帶寬+清洗能力來硬扛。但單一地域的帶寬總有上限,而EO可以藉助多地能力,最高支撐T級的防護帶寬,安全感十足。防護種類也比較豐富,可以對SYN、ACK、ICMP等數據包做防護。

4.4.2 Web攻擊

對於大部分互聯網人員來説,SQL 注入、CC攻擊、XSS 攻擊、開源組件漏洞等多種攻擊方式都不陌生,要麼是自研WAF進行防禦,要麼是藉助雲廠商的WAF。現在EO默認集成了這些功能,運維成本、組件成本大大降低。

5. 其他

本文僅從基礎設施角度展開接入層該有的樣子,並沒有討論接入層的業務屬性,比如降級、限流、熔斷、統一認證等功能,預計後面展開聊聊。從整體功能來看,EO可以做到一站式的實現接入層的穩定性建設,值得嘗試。對內容有任何疑問,可以在評論區找我留言討論。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.