03
「一塊區(qū)域、一個(gè)平臺(tái)、一套規(guī)范」:優(yōu)化數(shù)字化擴(kuò)展階段的應(yīng)用服務(wù)
前面「數(shù)字化擴(kuò)展階段應(yīng)用服務(wù)常見(jiàn)問(wèn)題」部分,我們?cè)敿?xì)羅列了云基礎(chǔ)架構(gòu)建設(shè)、應(yīng)用現(xiàn)代化、應(yīng)用上云,以及多云環(huán)境下應(yīng)用移植性能力建設(shè)過(guò)程中與應(yīng)用服務(wù)相關(guān)的常見(jiàn)問(wèn)題,這些問(wèn)題也是對(duì)組織在過(guò)去多年實(shí)際生產(chǎn)運(yùn)營(yíng)中遇到問(wèn)題的總結(jié)。本部分探討組織應(yīng)如何應(yīng)對(duì)這些問(wèn)題,并探討在數(shù)字化擴(kuò)展趨勢(shì)下如何優(yōu)化應(yīng)用服務(wù),即如何通過(guò)了解應(yīng)用變化并落實(shí)統(tǒng)一規(guī)范治理,利用自動(dòng)化、多租戶自服務(wù)、流水線驅(qū)動(dòng)等新場(chǎng)景技術(shù),提升運(yùn)維、生產(chǎn)和治理管理的水平,保證在數(shù)字化擴(kuò)展階段現(xiàn)代化的應(yīng)用平滑上云。解決這些問(wèn)題并優(yōu)化數(shù)字化擴(kuò)展階段的應(yīng)用服務(wù)的方法可以總結(jié)為一句話:「一塊區(qū)域、一個(gè)平臺(tái)和一套規(guī)范」。一塊區(qū)域指的是在多云之前規(guī)劃的多云前置網(wǎng)絡(luò)區(qū)域;一個(gè)技術(shù)平臺(tái)指的是在多云前置網(wǎng)絡(luò)區(qū)域建設(shè)的多云統(tǒng)一API網(wǎng)關(guān)技術(shù)平臺(tái);一套規(guī)范指的是結(jié)合業(yè)界領(lǐng)先的理念,為新技術(shù)和新方法論的使用制定的規(guī)范模板,并基于規(guī)范模板將新技術(shù)應(yīng)用于統(tǒng)一的多云API網(wǎng)關(guān)平臺(tái)。接下來(lái),我們將從這三個(gè)方面依次展開(kāi)詳細(xì)說(shuō)明。
多云前置網(wǎng)絡(luò)區(qū)域
如下圖所示,多云前置網(wǎng)絡(luò)區(qū)域的主要目的是部署多云統(tǒng)一API網(wǎng)關(guān)技術(shù)平臺(tái),該平臺(tái)的作用是保證應(yīng)用和工作負(fù)載在多云和傳統(tǒng)數(shù)據(jù)中心之間的可移植性及遷移的平滑性。從負(fù)載均衡的角度,多云前置網(wǎng)絡(luò)區(qū)域分為三層:第一層是傳統(tǒng)硬件,可選擇F5新一代R系列硬件。該層主要用于多云多區(qū)的調(diào)度,通常采用資源池分布式方式進(jìn)行部署。業(yè)界常用兩種方式:內(nèi)網(wǎng)DNS和動(dòng)態(tài)路由。動(dòng)態(tài)路由的硬件負(fù)載需要與云底層SDN網(wǎng)絡(luò)通道緊密互動(dòng),實(shí)現(xiàn)跨多云和多可用區(qū)的請(qǐng)求接入,跨可用區(qū)的多鏈路冗余訪問(wèn),并具備Anycast能力,以在保證業(yè)務(wù)在多云多可用區(qū)冗余的基礎(chǔ)上實(shí)現(xiàn)優(yōu)化。
第二層采用業(yè)界領(lǐng)先的軟負(fù)載NGINX進(jìn)行建設(shè)。NGINX是一個(gè)輕量級(jí)、事件驅(qū)動(dòng)的七層負(fù)載均衡器,具有出色的性能和高并發(fā)處理能力,能夠處理數(shù)千個(gè)并發(fā)連接,適用于高負(fù)載的網(wǎng)絡(luò)環(huán)境。第二層主要作為七層負(fù)載均衡,承擔(dān)云上基于域名和請(qǐng)求路徑URL的現(xiàn)代應(yīng)用負(fù)載調(diào)度職責(zé)。
第三層包括云上租戶內(nèi)的軟負(fù)載,例如K8S容器平臺(tái)的Ingress控制器。將云上租戶內(nèi)的軟負(fù)載統(tǒng)一到多云前置區(qū)域,是為了進(jìn)行統(tǒng)一的規(guī)劃與治理,確保新技術(shù)和新方法論與組織已有的管理流程規(guī)范以及技術(shù)職能部門(mén)有力結(jié)合,使云上新技術(shù)和新場(chǎng)景能夠真正提升組織的運(yùn)營(yíng)管理水平,提高云上業(yè)務(wù)的可靠性。
多云多區(qū)流量調(diào)度
下圖展示了基于動(dòng)態(tài)路由方式實(shí)現(xiàn)的多云多區(qū)工作負(fù)載調(diào)度示意。位于不同區(qū)域的F5新一代R系列負(fù)載均衡器具有相同的地址,例如1.1.1.1:80。在區(qū)域1訪問(wèn)該地址時(shí),動(dòng)態(tài)路由調(diào)度會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到區(qū)域1;在區(qū)域2訪問(wèn)該地址時(shí),請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到區(qū)域2。當(dāng)區(qū)域2的應(yīng)用系統(tǒng)發(fā)生故障后,區(qū)域2的客戶端訪問(wèn)該地址時(shí),請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到區(qū)域1。
這種就近Anycast的實(shí)現(xiàn)是通過(guò)路由協(xié)議BGP和OSPF來(lái)通知路由器哪個(gè)節(jié)點(diǎn)是‘最近’的。每個(gè)節(jié)點(diǎn)向路由器宣告自己的IP地址,路由器維護(hù)一個(gè)路由表,并選擇離客戶端最近的節(jié)點(diǎn)。從負(fù)載均衡的角度,多云多區(qū)雙平面調(diào)度的關(guān)鍵在于通過(guò)動(dòng)態(tài)路由協(xié)議和云區(qū)域的數(shù)據(jù)中心網(wǎng)絡(luò)建立通道。負(fù)載均衡的虛擬IP地址是路由器路由表中的一個(gè)條目,負(fù)載均衡器很好地支持動(dòng)態(tài)路由,并可根據(jù)自身的健康檢查進(jìn)行路由條目的宣告與收斂。只有健康檢查成功的虛擬服務(wù)才會(huì)被宣告到路由器,當(dāng)健康檢查失敗時(shí),路由條目會(huì)迅速收斂。路由器可以基于ECMP實(shí)現(xiàn)四層負(fù)載的水平擴(kuò)展,保證云上按需擴(kuò)展的能力。
以多云多區(qū)調(diào)度的一個(gè)平面為切入點(diǎn),架構(gòu)也具備高可靠性與高可用性,在交換機(jī)層面,采用雙機(jī)的架構(gòu),負(fù)載均衡資源池化在保證了彈性擴(kuò)展的同時(shí),也具備高可靠性,四層負(fù)載均衡負(fù)載7層軟負(fù)載同樣資源池化部署,具體彈性水平擴(kuò)展、高可靠和高可用等特點(diǎn)。
現(xiàn)代應(yīng)用負(fù)載調(diào)度
第二層軟負(fù)載的主要作用是進(jìn)行現(xiàn)代應(yīng)用的負(fù)載調(diào)度。在數(shù)字化擴(kuò)展階段,應(yīng)用現(xiàn)代化通常采用微服務(wù)架構(gòu)。在微服務(wù)架構(gòu)下,一個(gè)系統(tǒng)被拆分為成千上百個(gè)微服務(wù)?,F(xiàn)代應(yīng)用負(fù)載調(diào)度基于域名和請(qǐng)求URL進(jìn)行智能請(qǐng)求路由。具體來(lái)說(shuō),現(xiàn)代應(yīng)用負(fù)載調(diào)度分為以下幾類:
上圖所示的基于比率的灰度路由是現(xiàn)代應(yīng)用負(fù)載調(diào)度的典型場(chǎng)景。通常,組織中的業(yè)務(wù)上云、應(yīng)用現(xiàn)代化和微服務(wù)改造不是一蹴而就的,而是逐步完成的。以某個(gè)特定的應(yīng)用為例,通常該應(yīng)用最初是在數(shù)據(jù)中心的虛擬化平臺(tái)上運(yùn)行的。隨著應(yīng)用架構(gòu)的改造和上云,應(yīng)用系統(tǒng)的某個(gè)特定模板完成了改造并上云,這就需要在云前置進(jìn)行基于比率的灰度流量調(diào)度。
云租戶內(nèi)負(fù)載控制
云租戶內(nèi)負(fù)載控制指的是運(yùn)行在云內(nèi)特定租戶中的軟負(fù)載,云內(nèi)負(fù)載控制器指的是部署在云內(nèi)的控制平面程序,該控制器主要負(fù)責(zé)將云內(nèi)和云外網(wǎng)絡(luò)打通,將云內(nèi)應(yīng)用變化或云內(nèi)負(fù)載均衡的變化通過(guò)API的方式推送到云外。例如overlay網(wǎng)絡(luò)下業(yè)務(wù)請(qǐng)求進(jìn)入云內(nèi)需要通過(guò)隧道技術(shù),隧道技術(shù)下則需要將云內(nèi)的應(yīng)用IP地址等通過(guò)API的方式實(shí)時(shí)更新到云外負(fù)載均衡,一邊更好的實(shí)現(xiàn)云內(nèi)外的更好的聯(lián)動(dòng),真正實(shí)現(xiàn)將云自動(dòng)化自服務(wù)與組織的規(guī)范流程有力的結(jié)合起來(lái)。云內(nèi)負(fù)載控制器可以很好的實(shí)現(xiàn)云內(nèi)的負(fù)載的水平擴(kuò)展,例如外部負(fù)載均衡負(fù)載云內(nèi)負(fù)載均衡的架構(gòu)下,外部負(fù)載均衡的Member就是云內(nèi)負(fù)載均衡的虛擬服務(wù)地址,當(dāng)云內(nèi)負(fù)載均衡虛擬服務(wù)地址變化后則需要及時(shí)更新云外負(fù)載均衡的Member,如果業(yè)務(wù)請(qǐng)求流量大,云內(nèi)負(fù)載均衡進(jìn)行了水平擴(kuò)容,則需要及時(shí)更新云外負(fù)載均衡虛擬服務(wù),增加新的Member。
多云統(tǒng)一API網(wǎng)關(guān)平臺(tái)
多云統(tǒng)一API網(wǎng)關(guān)平臺(tái)位于多云之前,提供多云的統(tǒng)一入口,支持現(xiàn)代應(yīng)用服務(wù)的智能調(diào)度與控制。作為組織的多云統(tǒng)一流量調(diào)度平臺(tái),它基于現(xiàn)代多云流量調(diào)度管理方法,實(shí)現(xiàn)多云流量的規(guī)范治理。這個(gè)平臺(tái)是開(kāi)放、可擴(kuò)展且可重用的,支持不同部門(mén)之間的協(xié)作與創(chuàng)新。它基于流行的開(kāi)源軟件與商業(yè)負(fù)載均衡結(jié)合的方式,構(gòu)建了一個(gè)自主可控的API技術(shù)平臺(tái)。
如上圖所示,多云統(tǒng)一API網(wǎng)關(guān)平臺(tái)分為數(shù)據(jù)面和控制面。數(shù)據(jù)面負(fù)責(zé)轉(zhuǎn)發(fā)和傳輸應(yīng)用流量及數(shù)據(jù)流量,重點(diǎn)關(guān)注響應(yīng)速度、安全可靠性、水平擴(kuò)展能力,以及多云多區(qū)應(yīng)用的多活高可用性??刂泼鎰t負(fù)責(zé)管理數(shù)據(jù)面流量轉(zhuǎn)發(fā)的行為,執(zhí)行標(biāo)準(zhǔn)的控制和訪問(wèn)策略,并提供流量的可觀測(cè)性和洞察數(shù)據(jù)。
F5 R系列實(shí)現(xiàn)跨多云可用區(qū)應(yīng)用負(fù)載轉(zhuǎn)發(fā)
數(shù)據(jù)平臺(tái)的三層架構(gòu)核心思想是在云前置區(qū)域規(guī)劃一個(gè)邏輯和物理上的網(wǎng)絡(luò)區(qū)域,構(gòu)建三層負(fù)載均衡。第一層是硬件資源池,負(fù)責(zé)多云多區(qū)的調(diào)度;第二層是軟負(fù)載資源池,負(fù)責(zé)云上微服務(wù)應(yīng)用的現(xiàn)代應(yīng)用負(fù)載調(diào)度;第三層是租戶內(nèi)的負(fù)載均衡,作為云內(nèi)應(yīng)用的入口,負(fù)責(zé)確保租戶內(nèi)應(yīng)用的高可靠性。
我們堅(jiān)信,隨著組織在數(shù)字化轉(zhuǎn)型之旅中的不斷前進(jìn),對(duì)應(yīng)用交付和安全服務(wù)的需求和復(fù)雜性將急劇上升。這種復(fù)雜性挑戰(zhàn)了IT管理應(yīng)用流量、安全基礎(chǔ)設(shè)施以及滿足客戶需求的能力。憑借F5 R系列這一下一代平臺(tái)架構(gòu),性能提升高達(dá)100%,您可以使應(yīng)用交付基礎(chǔ)設(shè)施具備未來(lái)適應(yīng)性,并提升服務(wù)速度以滿足現(xiàn)代化要求。除了性能提升,F(xiàn)5 R系列還應(yīng)對(duì)多云多區(qū)趨勢(shì),提供基于租戶的設(shè)計(jì)邏輯。租戶是云環(huán)境中的顯著特點(diǎn),F(xiàn)5 R系列的租戶設(shè)計(jì)與云內(nèi)租戶理念類似,租戶獨(dú)享計(jì)算資源。在多云前置網(wǎng)絡(luò)區(qū)域部署F5 R系列硬件,可在應(yīng)用負(fù)載層面構(gòu)建租戶資源池,使應(yīng)用負(fù)載層面的租戶與云可用區(qū)內(nèi)的應(yīng)用租戶一一對(duì)應(yīng),從而提升治理規(guī)范中的安全性和應(yīng)用彈性擴(kuò)展能力。
F5 R系列租戶提供嚴(yán)格的資源隔離機(jī)制,確保不同租戶的數(shù)據(jù)、配置和流量互不干擾。每個(gè)租戶可以獨(dú)立配置其網(wǎng)絡(luò)、安全策略和應(yīng)用服務(wù),同時(shí)支持按需擴(kuò)展資源,以滿足不同租戶的需求增長(zhǎng)。通過(guò)集中化的管理控制臺(tái)和現(xiàn)代API,管理員可以統(tǒng)一配置和監(jiān)控所有租戶的服務(wù),從而簡(jiǎn)化操作并提高效率。下表列出了F5 R系列不同型號(hào)所支持的最大租戶數(shù):
NGINX作為流量最繁重的Web服務(wù)器和反向代理已被廣泛知曉。隨著企業(yè)和組織在數(shù)字化擴(kuò)展、應(yīng)用現(xiàn)代化以及多云多區(qū)流量調(diào)度方面的需求不斷增加,NGINX,特別是在被F5收購(gòu)之后,已經(jīng)發(fā)展成為一個(gè)針對(duì)多云現(xiàn)代應(yīng)用的體系化產(chǎn)品平臺(tái)。如果您的應(yīng)用部署在全球多個(gè)公共云數(shù)據(jù)中心以及傳統(tǒng)數(shù)據(jù)中心,并希望通過(guò)一個(gè)控制臺(tái)監(jiān)控基礎(chǔ)設(shè)施、解決安全漏洞并評(píng)估NGINX集群的健康狀況,您可以選擇NGINX ONE。
如果您是開(kāi)源NGINX的用戶并希望使用一些增強(qiáng)功能,可以選擇NGINX Plus,其主要增加了主動(dòng)健康檢查、API能力、可觀測(cè)健康指標(biāo)等功能,使其成為構(gòu)建統(tǒng)一API網(wǎng)關(guān)的關(guān)鍵組件。NGINX管理套件提供了一系列企業(yè)級(jí)擴(kuò)展、安全、可觀測(cè)和治理工具,您可以依賴此套件進(jìn)行API網(wǎng)關(guān)構(gòu)建。基于NGINX,NGINX應(yīng)用防護(hù)提供輕量級(jí)、高性能的七層應(yīng)用和API安全攻擊防護(hù)能力,有效保護(hù)并緩解針對(duì)應(yīng)用程序和API的第七層拒絕服務(wù)攻擊。對(duì)于Kubernetes上的業(yè)務(wù)流量管理,您可以選擇NGINX Ingress Controller和NGINX Gateway Fabric。
NGINX API路由能力
API路由是API網(wǎng)關(guān)的核心能力之一,主要指根據(jù)HOST和URL請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)。在數(shù)字化擴(kuò)展階段,同一個(gè)應(yīng)用可能會(huì)有多個(gè)版本同時(shí)存在,此時(shí)灰度路由(灰度發(fā)布)用于在不同版本之間轉(zhuǎn)發(fā)請(qǐng)求,并基于生產(chǎn)流量驗(yàn)證新版本的性能?;叶嚷酚刹捎弥鸩椒帕康牟呗裕且淮涡詫⑿掳姹净蚬δ苋客扑徒o所有用戶,而是首先選擇一小部分用戶作為試點(diǎn)。
API路由還可以基于HTTP協(xié)議的多種屬性進(jìn)行轉(zhuǎn)發(fā),例如特定的HTTP頭屬性、Cookie、源地址、和HTTP URL參數(shù)等。NGINX API路由的能力如下表所示:
在數(shù)字化擴(kuò)展階段,組織的主要任務(wù)包括應(yīng)用的現(xiàn)代化和構(gòu)建跨云與數(shù)據(jù)中心的應(yīng)用及工作負(fù)載的可移植性。根據(jù)F5《應(yīng)用策略現(xiàn)狀報(bào)告》,從2023年開(kāi)始,超過(guò)一半的組織已通過(guò)現(xiàn)代化應(yīng)用替代傳統(tǒng)應(yīng)用。傳統(tǒng)應(yīng)用通常按功能模塊拆分,不同的功能模塊由不同的項(xiàng)目組開(kāi)發(fā),并通過(guò)多個(gè)微服務(wù)實(shí)現(xiàn)。不同模塊的微服務(wù)通過(guò)URL進(jìn)行區(qū)分,因此API網(wǎng)關(guān)的多路徑路由變得尤為重要。下圖展示了多路徑路由的示意。
多路徑路由可以結(jié)合HOST,通過(guò)HOST進(jìn)一步細(xì)化API請(qǐng)求的路由。NGINX不僅支持基于HOST的轉(zhuǎn)發(fā),還支持HTTPS請(qǐng)求。同時(shí),NGINX在根據(jù)HOST和URL轉(zhuǎn)發(fā)時(shí),也具備跨租戶能力。
灰度路由主要應(yīng)用于數(shù)字化擴(kuò)展階段中,實(shí)現(xiàn)跨云可用區(qū)和傳統(tǒng)數(shù)據(jù)中心之間應(yīng)用負(fù)載的可移植性。作為API網(wǎng)關(guān)的核心功能之一,灰度路由允許在不同環(huán)境中逐步引入新版本的應(yīng)用,確保負(fù)載遷移過(guò)程的平穩(wěn)性和可靠性。它在應(yīng)用負(fù)載在云可用區(qū)和傳統(tǒng)數(shù)據(jù)中心之間的遷移中扮演著關(guān)鍵角色,與現(xiàn)代應(yīng)用的SRE(Site Reliability Engineering)理論密切相關(guān)。
這種遷移能力或工作負(fù)載轉(zhuǎn)移的實(shí)現(xiàn),往往涉及到不同的方法和策略。SRE理論強(qiáng)調(diào)通過(guò)持續(xù)監(jiān)控和優(yōu)化操作,確保服務(wù)的高可用性和可靠性,灰度路由則是支持這一目標(biāo)的有效工具之一。通過(guò)逐步放量和驗(yàn)證新版本,灰度路由幫助確保在進(jìn)行應(yīng)用遷移和負(fù)載調(diào)整時(shí),能夠平衡風(fēng)險(xiǎn),優(yōu)化用戶體驗(yàn)。
上圖展示了灰度路由在實(shí)際業(yè)務(wù)場(chǎng)景中的典型應(yīng)用。例如,在信創(chuàng)改造過(guò)程中,遷移并非一蹴而就,而是逐步完成的?;叶嚷酚稍试S模塊逐步遷移,一次只切換一部分流量。信創(chuàng)服務(wù)和非信創(chuàng)服務(wù)可以同時(shí)運(yùn)行,通過(guò)灰度路由實(shí)現(xiàn)平穩(wěn)過(guò)渡。
在這個(gè)場(chǎng)景中,您可以利用HTTP請(qǐng)求頭參數(shù)來(lái)控制流量路由。例如,您可以通過(guò)檢查請(qǐng)求頭中的X_XC屬性來(lái)決定流量的去向。如果請(qǐng)求頭中X_XC的值為true,則將請(qǐng)求轉(zhuǎn)發(fā)到信創(chuàng)區(qū)域;否則,流量繼續(xù)在傳統(tǒng)區(qū)域中處理。這種方式使得在遷移過(guò)程中,可以有效地管理和控制新舊版本的并行運(yùn)行,確保改造過(guò)程中的平穩(wěn)過(guò)渡和服務(wù)的持續(xù)可用性。
NGINX API限流能力
API限流也是API網(wǎng)關(guān)的主要功能,限流用于拒絕過(guò)多的API流量,NGINX支持兩種API限流方式,即防止流量激增的影響和允許一段時(shí)間內(nèi)發(fā)送特定數(shù)量的請(qǐng)求。NGINX的limit_req和limit_req_zone指令用于限流,首先通過(guò)limit_req_zone定義請(qǐng)求限速的共享內(nèi)存區(qū)域。用于限制對(duì)某些資源的請(qǐng)求速,limit_req定義請(qǐng)求限速規(guī)則,關(guān)聯(lián)共享內(nèi)存區(qū)域,為保證業(yè)務(wù)連續(xù)性,NGINX API網(wǎng)關(guān)限流對(duì)突發(fā)請(qǐng)求數(shù)采取柔和態(tài)度,NGINX可定義特定窗口時(shí)間內(nèi),可以允許最多的請(qǐng)求超過(guò)速率限制,應(yīng)用現(xiàn)代微服務(wù)應(yīng)用readness Probe等初始化操作,NGINX提供慢啟動(dòng)能力,提升整體用戶體驗(yàn)。
API限流是API網(wǎng)關(guān)的核心功能之一,用于控制和管理流量,以防止系統(tǒng)過(guò)載。NGINX提供了兩種主要的API限流方式:
-防止流量激增的影響:通過(guò)限制請(qǐng)求的速率,防止突發(fā)流量對(duì)系統(tǒng)的影響。
-允許在特定時(shí)間內(nèi)發(fā)送特定數(shù)量的請(qǐng)求:設(shè)定一個(gè)時(shí)間窗口,允許在該時(shí)間內(nèi)處理一定數(shù)量的請(qǐng)求。
NGINX的limit_req和limit_req_zone指令用于限流,首先通過(guò)limit_req_zone定義請(qǐng)求限速的共享內(nèi)存區(qū)域。用于限制對(duì)某些資源的請(qǐng)求速,limit_req定義請(qǐng)求限速規(guī)則,關(guān)聯(lián)共享內(nèi)存區(qū)域。NGINX限流特點(diǎn)是:
-柔和限流:NGINX對(duì)突發(fā)請(qǐng)求數(shù)采取柔和態(tài)度,可以在短時(shí)間內(nèi)允許請(qǐng)求數(shù)量超過(guò)常規(guī)速率限制。
-慢啟動(dòng)能力:為應(yīng)用現(xiàn)代微服務(wù)提供初始化操作,如readiness Probe等,以提升整體用戶體驗(yàn)。NGINX能夠在應(yīng)用啟動(dòng)時(shí)逐漸增加流量,避免對(duì)新服務(wù)的過(guò)大沖擊。
通過(guò)這些功能,NGINX確保了API的高可用性和穩(wěn)定性,同時(shí)能夠在面對(duì)突發(fā)流量時(shí)維持服務(wù)質(zhì)量。
NGINX API限流也可基于特定源地址、特定HTTP頭屬性、HTTP Cookie、HTTP URL參數(shù)等,下表為NGINX根據(jù)源地址限流的示例,我們定義的限流速率為每秒請(qǐng)求10次,當(dāng)請(qǐng)求特定源地址的客戶端每秒鐘請(qǐng)求數(shù)超過(guò)10次后會(huì)觸發(fā)限流。
NGINX API安全防護(hù)
根據(jù)過(guò)去幾年F5《應(yīng)用策略現(xiàn)狀報(bào)告》調(diào)研,租戶越來(lái)越多地關(guān)注API安全,過(guò)去一年有超過(guò)80%的組織部署了一種或多種API安全服務(wù)。在多云統(tǒng)一API網(wǎng)關(guān)上,基于F5 NGINX App Protect,您可以使用軟件安全解決方案保護(hù)您的應(yīng)用程序和API。該解決方案作為輕量級(jí)Web應(yīng)用程序防火墻(WAF)、第7層拒絕服務(wù)(DoS)保護(hù)、機(jī)器人保護(hù)、API安全和威脅情報(bào)服務(wù)無(wú)縫集成到DevOps環(huán)境中。F5 NGINX App Protect在分布式架構(gòu)和混合環(huán)境中提供一致的保護(hù)。NGINX架構(gòu)為模塊化設(shè)計(jì),這種架構(gòu)可以方便擴(kuò)展,NGINX App Protect是通過(guò)擴(kuò)展NGINX實(shí)現(xiàn)的。NGINX App Protect是非常輕量級(jí)的,且不會(huì)影響NGINX整體請(qǐng)求的處理速率。與傳統(tǒng)的安全方案相比,NGINX App Protect輕量且基于單個(gè)應(yīng)用或單個(gè)API的防護(hù),將安全能力與應(yīng)用開(kāi)發(fā)集成,DevOps和DevSecOps可方便地調(diào)整和掌控安全行為和能力。下表匯總了F5 NGINX App Protect構(gòu)建API安全防護(hù)的基本能力。
NGINX App Protect默認(rèn)策略可以防護(hù)常見(jiàn)的OWASP排名前10的攻擊,例如跨站腳本攻擊(XSS)、SQL注入攻擊、訪問(wèn)路徑越權(quán)攻擊等。事實(shí)上,API安全攻擊中常見(jiàn)的攻擊類型占據(jù)了很大比例。啟用默認(rèn)策略可以有效地減緩這些常見(jiàn)攻擊。
NGINX APP Protect基本功能包括安全情報(bào)告警、策略執(zhí)行模式、IP黑白名單、HTTP合規(guī)性驗(yàn)證、定義允許訪問(wèn)的HTTP方法、數(shù)據(jù)保護(hù)欲脫敏、請(qǐng)求文件限制、自定義攔截頁(yè)面、安全策略集中管理等。安全情報(bào)告警指的是NGINX可以將攻擊情報(bào)實(shí)施發(fā)送給現(xiàn)代可觀察可視化技術(shù)棧,并提供對(duì)應(yīng)的模塊快速展示攻擊者信息。自定義允許的訪問(wèn)方法指定義允許HTTP的訪問(wèn)方法,例如某微服務(wù)提供了GET方法,那么可以在防護(hù)策略中定義只允許GET方法被訪問(wèn),當(dāng)攻擊者嘗試發(fā)送POST等方法是,NGINX直接會(huì)攔截攻擊請(qǐng)求。為方便管理,以及滿足安全攻擊應(yīng)對(duì)的及時(shí)性需要自定義攔截頁(yè)面,NGINX安全防護(hù)攔截頁(yè)面可定義攔截的原因,相關(guān)管理人員的聯(lián)系方式等,下圖為NGINX安全防護(hù)自定義攔截頁(yè)面的示意。
微服務(wù)應(yīng)用防護(hù)針對(duì)數(shù)字化擴(kuò)展階段微服務(wù)容器化部署的特點(diǎn),可以在K8S入口控制器中定義基于應(yīng)用的防護(hù)策略。微服務(wù)之間通過(guò)API進(jìn)行通信,傳輸?shù)臄?shù)據(jù)通常為JSON?;谶@些特點(diǎn),NGINX應(yīng)用級(jí)API防護(hù)支持以下防護(hù)能力:根據(jù)內(nèi)容過(guò)濾、非法請(qǐng)求方法、非法目錄訪問(wèn)、特殊的SQL注入、弱類型密碼、弱類型Token等。
此外,NGINX App Protect還支持通過(guò)OpenAPI文檔進(jìn)行安全防護(hù)。通過(guò)導(dǎo)入OpenAPI文檔,可以生成白名單策略,白名單策略是防護(hù)策略中最為有效的一種。下圖展示了一個(gè)OpenAPI文檔,該文檔定義了微服務(wù)支持的所有API以及API請(qǐng)求中的URL參數(shù)類型。例如,文檔中定義了API GET參數(shù)ID的類型為整數(shù)型。如果攻擊者傳遞的參數(shù)不是整數(shù)型,NGINX將攔截該攻擊請(qǐng)求。
gRPC遠(yuǎn)程調(diào)用可以提升微服務(wù)通信的效率和數(shù)據(jù)傳輸?shù)耐掏铝?。針?duì)這種類型的通信,NGINX也提供了相關(guān)防護(hù)功能。具體而言,NGINX可以實(shí)現(xiàn)以下防護(hù):
-gRPC二進(jìn)制流過(guò)濾:對(duì)gRPC二進(jìn)制流進(jìn)行內(nèi)容過(guò)濾,以確保數(shù)據(jù)的安全性。
-gRPC HTTP/2應(yīng)用保護(hù):提供對(duì)gRPC基于HTTP/2的應(yīng)用的保護(hù),防止各種攻擊和惡意請(qǐng)求。
控制平面作模塊說(shuō)明
由于負(fù)載類技術(shù)棧在組織中通常被網(wǎng)絡(luò)部門(mén)建設(shè)管理,控制平面最主要的工作是落實(shí)多云統(tǒng)一API網(wǎng)關(guān)的建設(shè),提升自動(dòng)化能力,靈活部署能力,云原生應(yīng)用支持能力,在應(yīng)用上云及CICD建設(shè)中增加負(fù)載網(wǎng)關(guān)服務(wù)能力,以確保應(yīng)用負(fù)載在多云可用區(qū)和數(shù)據(jù)中心間的可移植性??刂破矫婺芰ㄔO(shè)主要是將云上應(yīng)用交付所需要的三層負(fù)載統(tǒng)一管理,將應(yīng)用發(fā)布的過(guò)程建立業(yè)務(wù)視角的菜單欄,以及統(tǒng)一北向的API,通過(guò)API可以操作云上三層負(fù)載均衡中的任意一層,控制平面基于菜單欄的能力可以作為組織統(tǒng)一云管理平臺(tái)的一個(gè)子模塊。
控制平面按照功能側(cè)重可分為如下幾個(gè)方面:平臺(tái)自動(dòng)化、部署自動(dòng)化以及網(wǎng)絡(luò)自動(dòng)化。平臺(tái)自動(dòng)化是指多云統(tǒng)一網(wǎng)關(guān)平臺(tái)具備自動(dòng)化自服務(wù)能力,數(shù)據(jù)平面硬件負(fù)載均衡和軟件負(fù)載均衡可以自動(dòng)化地部署和創(chuàng)建。部署自動(dòng)化主要是指云上業(yè)務(wù)應(yīng)用的發(fā)布自動(dòng)化,在部署上線業(yè)務(wù)應(yīng)用的同時(shí),能夠自動(dòng)化實(shí)現(xiàn)業(yè)務(wù)應(yīng)用的負(fù)載配置,也就是說(shuō),控制平面生成的相關(guān)配置可以有效地推送到相關(guān)的負(fù)載實(shí)例上。網(wǎng)絡(luò)自動(dòng)化則是將網(wǎng)絡(luò)部門(mén)日常通過(guò)人員手動(dòng)操作的工作,如防火墻規(guī)則和負(fù)載均衡規(guī)則,通過(guò)自動(dòng)化來(lái)實(shí)現(xiàn)。
控制平面還具備服務(wù)發(fā)現(xiàn)與服務(wù)注冊(cè)的能力,可以基于DNS技術(shù)實(shí)現(xiàn)服務(wù)注冊(cè)與服務(wù)發(fā)現(xiàn)。當(dāng)創(chuàng)建服務(wù)時(shí),會(huì)相應(yīng)地創(chuàng)建DNS記錄。在服務(wù)發(fā)布過(guò)程中,服務(wù)發(fā)布描述文件中的域名通過(guò)注冊(cè)中心進(jìn)行指定,控制平面在服務(wù)發(fā)布過(guò)程中進(jìn)行服務(wù)發(fā)現(xiàn),將域名對(duì)應(yīng)的IP地址添加為負(fù)載均衡的Member。
控制平面還具備可觀測(cè)能力??捎^測(cè)性指的是在計(jì)算系統(tǒng)和應(yīng)用程序中能夠有效地監(jiān)控、測(cè)量和理解其狀態(tài)、行為和性能的能力。它是確保系統(tǒng)正常運(yùn)行和進(jìn)行故障排除的關(guān)鍵能力,尤其在大規(guī)模、分布式和復(fù)雜的多云應(yīng)用交付環(huán)境中尤為重要。
多云可用區(qū)場(chǎng)景治理規(guī)范
多云場(chǎng)景治理規(guī)范的主要目的是在云技術(shù)的大背景下,高效且高質(zhì)量地應(yīng)用新技術(shù)和方法論,并與組織已有的管理流程和質(zhì)量保證規(guī)范整合,以確保業(yè)務(wù)運(yùn)營(yíng)的質(zhì)量。具體來(lái)說(shuō),這包括現(xiàn)代應(yīng)用下模板化的治理規(guī)范。模板化規(guī)范基于統(tǒng)一的API網(wǎng)關(guān)平臺(tái),在該平臺(tái)上通過(guò)模板實(shí)現(xiàn)多云可用區(qū)的場(chǎng)景治理規(guī)范。
針對(duì)多云可用區(qū)架構(gòu)下的軟負(fù)載,我們制定了不同的業(yè)務(wù)發(fā)布模板。這些模板基于云原生的YAML格式,可以通過(guò)API或界面快速生成。當(dāng)前平臺(tái)支持的業(yè)務(wù)發(fā)布模板包括:
-HTTP反向代理模板
-HTTP負(fù)載均衡模板
-gRPC HTTP2請(qǐng)求路由模板
-WebSocket請(qǐng)求路由模板
-TCP反向代理模板
-TCP負(fù)載均衡模板
-現(xiàn)代應(yīng)用負(fù)載調(diào)度模版
-限流接入控制模板
如下圖所示,以現(xiàn)代應(yīng)用負(fù)載調(diào)度模板為例,為滿足信創(chuàng)化建設(shè)的需要,user服務(wù)需要同時(shí)支持多個(gè)版本。通過(guò)HTTP請(qǐng)求頭屬性X-TM-Header來(lái)控制流量的轉(zhuǎn)發(fā)行為。當(dāng)請(qǐng)求中X-TM-Header的值為特定值時(shí),流量將被轉(zhuǎn)發(fā)到信創(chuàng)2.0版本。
在此需求下,流量調(diào)度模板如下圖右側(cè)所示。模板的YAML定義了VirtualServer類,VirtualServer通過(guò)在注冊(cè)中心注冊(cè)的服務(wù)名稱(域名)來(lái)管理兩個(gè)服務(wù),并在路由轉(zhuǎn)發(fā)策略部分定義了基于HTTP頭屬性的判斷邏輯。
04
多云統(tǒng)一API網(wǎng)關(guān)平臺(tái)收益總結(jié)
根據(jù)過(guò)去幾年F5《應(yīng)用策略現(xiàn)狀報(bào)告》,我們發(fā)現(xiàn)隨著數(shù)字化轉(zhuǎn)型的深入,以及人工智能對(duì)業(yè)務(wù)的推動(dòng),組織對(duì)應(yīng)用服務(wù)和安全服務(wù)的需求越來(lái)越多。我們將數(shù)字化轉(zhuǎn)型分為三個(gè)階段:任務(wù)自動(dòng)化、數(shù)字化擴(kuò)展和人工智能輔助業(yè)務(wù)。本文主要從組織數(shù)字化轉(zhuǎn)型的第二階段切入,說(shuō)明在數(shù)字化擴(kuò)展階段組織重點(diǎn)工作——應(yīng)用現(xiàn)代化以及構(gòu)建應(yīng)用多云可用區(qū)和數(shù)據(jù)中心工作負(fù)載遷移能力的過(guò)程中的問(wèn)題,并詳細(xì)闡述了如何通過(guò)「一塊區(qū)域、一個(gè)平臺(tái)、一套規(guī)范」—即以多云統(tǒng)一API網(wǎng)關(guān)平臺(tái)來(lái)解決數(shù)字化擴(kuò)展過(guò)程中常見(jiàn)的問(wèn)題。多云統(tǒng)一API網(wǎng)關(guān)是以F5 R系列硬件及F5 NGINX為核心構(gòu)建的,通過(guò)結(jié)合治理規(guī)范,可有效優(yōu)化數(shù)字化擴(kuò)展階段的應(yīng)用服務(wù)。
根據(jù)2024年F5《應(yīng)用策略現(xiàn)狀報(bào)告》,在應(yīng)用現(xiàn)代化方面,95%的組織部署了API網(wǎng)關(guān),以構(gòu)建跨云和數(shù)據(jù)中心的應(yīng)用負(fù)載可移植性。應(yīng)用程序及工作負(fù)載能夠在多個(gè)環(huán)境或多云環(huán)境中運(yùn)行,使組織能夠在多個(gè)環(huán)境下操作,從而提升其數(shù)字化成熟度。在數(shù)字化擴(kuò)展階段,應(yīng)用架構(gòu)要求系統(tǒng)能夠在面對(duì)故障、錯(cuò)誤或?yàn)?zāi)難時(shí),維持正常運(yùn)作并快速恢復(fù),這種能力被定義為應(yīng)用的彈性。67%的調(diào)查者表示,多云可用區(qū)及跨云和數(shù)據(jù)中心的可移植性確實(shí)提供了這種彈性。我們都知道,停機(jī)是不可避免的,它們會(huì)發(fā)生在每個(gè)組織中。即使是最優(yōu)秀、最著名的品牌也會(huì)經(jīng)歷停機(jī)。無(wú)論是由于配置更改、人員錯(cuò)誤,還是自然災(zāi)害,你都希望擁有這種彈性,以便將應(yīng)用程序遷移到最合適的位置,從而確保業(yè)務(wù)能夠繼續(xù)運(yùn)行。
多云統(tǒng)一API網(wǎng)關(guān)的核心價(jià)值在于為組織提供跨云可用區(qū)和數(shù)據(jù)中心的可移植能力。這種能力能夠協(xié)助組織實(shí)現(xiàn)應(yīng)用現(xiàn)代化改造、進(jìn)行灰度上云、分發(fā)應(yīng)用負(fù)載在多云可用區(qū)和數(shù)據(jù)中心之間,甚至支持應(yīng)用從云端回遷。多云統(tǒng)一API網(wǎng)關(guān)為組織帶來(lái)的主要收益包括:
-首先,解決了數(shù)字化擴(kuò)展階段在應(yīng)用現(xiàn)代化及跨云和數(shù)據(jù)中心負(fù)載遷移中的實(shí)際問(wèn)題。通過(guò)統(tǒng)一規(guī)范和平臺(tái),避免了各項(xiàng)目組各自為政的現(xiàn)象,解決了多云架構(gòu)下現(xiàn)代應(yīng)用負(fù)載調(diào)度的可靠性差、流量管理混亂及潛在運(yùn)營(yíng)風(fēng)險(xiǎn)等問(wèn)題。
-其次,引領(lǐng)了技術(shù)體系的變革,保障了組織核心業(yè)務(wù)從傳統(tǒng)主機(jī)到分布式架構(gòu)的遷移,并確保核心業(yè)務(wù)在云端的高效可靠運(yùn)行。這一過(guò)程中采用了現(xiàn)代應(yīng)用新方法論,如DevOps和SRE。
第三,構(gòu)建了敏捷的產(chǎn)研體系,通過(guò)推動(dòng)IT敏捷交付和敏捷研發(fā)能力,促進(jìn)了組織的敏捷轉(zhuǎn)型,支持了端到端的敏-捷業(yè)務(wù)能力。
-第四,推動(dòng)了平臺(tái)化能力建設(shè)。構(gòu)建的多云統(tǒng)一網(wǎng)關(guān)平臺(tái)是支持熱點(diǎn)業(yè)務(wù)、新型應(yīng)用、AI和ChatGPT等技術(shù)的驅(qū)動(dòng)平臺(tái)。
-最后,促進(jìn)了組織的數(shù)字化轉(zhuǎn)型。通過(guò)提升用戶的數(shù)字化體驗(yàn),構(gòu)建數(shù)字化金融生態(tài),落地開(kāi)放組織戰(zhàn)略、數(shù)字經(jīng)濟(jì)戰(zhàn)略及數(shù)智化戰(zhàn)略,實(shí)現(xiàn)了組織的全面數(shù)字化轉(zhuǎn)型。