如何構(gòu)建高可用、高并發(fā)、高性能的云原生容器網(wǎng)絡(luò)?
談起云原生基礎(chǔ)設(shè)施構(gòu)建,就必然會(huì)提到云原生的容器網(wǎng)絡(luò)。
眾所周知,容器網(wǎng)絡(luò)作為云原生的基石,是云原生平臺(tái)必不可少的基礎(chǔ)組件,也是云原生容器平臺(tái)構(gòu)建時(shí)的最大挑戰(zhàn)之一。
隨著銀行應(yīng)用數(shù)量和類型的進(jìn)一步增多,對(duì)網(wǎng)絡(luò)復(fù)雜度的要求也越來(lái)越高。銀行的應(yīng)用有自身特點(diǎn),銀行應(yīng)用的管理級(jí)別不同,訪問(wèn)特色也不同,需要考慮如何兼容傳統(tǒng)網(wǎng)絡(luò)架構(gòu),實(shí)現(xiàn)傳統(tǒng)網(wǎng)絡(luò)和容器網(wǎng)絡(luò)之間的互聯(lián)互通,同時(shí),傳統(tǒng)應(yīng)用容器化遷移后如何實(shí)現(xiàn)固定IP,以及對(duì)于容器多網(wǎng)絡(luò)平面、多網(wǎng)卡的管理,多租戶和跨云網(wǎng)絡(luò)、容器流量的監(jiān)測(cè)、調(diào)度與QoS等也都面臨新的挑戰(zhàn)。
目前有很多銀行容器網(wǎng)絡(luò)的內(nèi)部其實(shí)是一個(gè)“黑盒”,容器內(nèi)部和外部的網(wǎng)絡(luò)沒(méi)有打通,也無(wú)法實(shí)現(xiàn)跨云多網(wǎng)絡(luò)集群的互通,亟需進(jìn)行轉(zhuǎn)型改造。
在這種壓力下,構(gòu)建高性能的容器網(wǎng)絡(luò)就顯得尤為重要,然而:
-
兩地三中心架構(gòu)中的容器網(wǎng)絡(luò)怎么改造可用性更高?
-
高并發(fā)場(chǎng)景下,銀行的容器網(wǎng)絡(luò)如何規(guī)劃?
-
如何打造高性能的容器網(wǎng)絡(luò)?
本篇文章將為你解答。
兩地三中心架構(gòu)中的容器網(wǎng)絡(luò)怎么改造可用性更高?
面對(duì)應(yīng)用的高可用性需求,很多銀行都在積極建設(shè)兩地三中心,或者異地災(zāi)備建設(shè)。那么如何對(duì)接或改造容器平臺(tái)的網(wǎng)絡(luò),以滿足容器平臺(tái)中應(yīng)用與傳統(tǒng)虛擬機(jī)、物理機(jī)中舊業(yè)務(wù)系統(tǒng)的相互通信,避免或盡可能減少對(duì)銀行現(xiàn)有網(wǎng)絡(luò)管理模式的沖擊呢?
首先從整體來(lái)看,兩地三中心架構(gòu)下的容器網(wǎng)絡(luò)改造,需要依據(jù)容器平臺(tái)所依賴的IaaS能力而定。譬如容器平臺(tái)部署在傳統(tǒng)虛擬化平臺(tái),也沒(méi)有啟用SDN網(wǎng)絡(luò),如果容器網(wǎng)絡(luò)設(shè)計(jì)為hostnetwork模式,則容器POD的應(yīng)用和傳統(tǒng)虛擬機(jī)、物理機(jī)的舊業(yè)務(wù)系統(tǒng)是直接可以通信的。
如果容器平臺(tái)的宿主節(jié)點(diǎn)在用IaaS的虛擬機(jī),且啟用了SDN網(wǎng)絡(luò),容器平臺(tái)啟用的CNI特性,則容器POD的應(yīng)用可以和IaaS虛擬機(jī)的業(yè)務(wù)應(yīng)用直接通信。如果和傳統(tǒng)網(wǎng)絡(luò)中的舊應(yīng)用通信,則需要開(kāi)啟IaaS的NAT特性或者為宿主節(jié)點(diǎn)配置EIP地址。
銀行容器平臺(tái)中的容器應(yīng)用與傳統(tǒng)虛擬機(jī)、物理機(jī)中舊業(yè)務(wù)系統(tǒng)的相互通信遇到最多的問(wèn)題都集中在IP有狀態(tài)這件事情上,因?yàn)閭鹘y(tǒng)容器平臺(tái)上應(yīng)用如果要實(shí)現(xiàn)對(duì)外通訊,主要有兩種方式:一種是基于宿主機(jī)IP+端口,另外一種是基于域名,這兩種應(yīng)用的對(duì)外暴露模式都隱藏了容器平臺(tái)上應(yīng)用的真實(shí)IP信息,所以不僅會(huì)造成傳統(tǒng)虛擬機(jī)、物理機(jī)中舊業(yè)務(wù)系統(tǒng)無(wú)法和容器平臺(tái)中應(yīng)用的IP扁平化訪問(wèn)的問(wèn)題,同時(shí)也讓銀行現(xiàn)有網(wǎng)絡(luò)管理模式無(wú)法對(duì)于容器平臺(tái)上的應(yīng)用進(jìn)行IP定位和網(wǎng)絡(luò)資源管理。
針對(duì)以上問(wèn)題,銀行在兩地三中心架構(gòu)中可以采用Kube-OVN Underlay網(wǎng)絡(luò)解決方案對(duì)接或改造容器平臺(tái)網(wǎng)絡(luò),Kube-OVN underlay網(wǎng)絡(luò)解決方案通過(guò)采用OpenStack的ovs二層虛擬交換技術(shù),將容器平臺(tái)上的應(yīng)用和傳統(tǒng)虛擬機(jī)、物理機(jī)中舊業(yè)務(wù)系統(tǒng)拉平到一個(gè)二層網(wǎng)絡(luò)平面,讓容器平臺(tái)上的容器應(yīng)用和傳統(tǒng)虛擬機(jī)、物理機(jī)一樣的使用底層網(wǎng)絡(luò)資源并實(shí)現(xiàn)IP直達(dá)通訊。這樣可以使銀行現(xiàn)有的網(wǎng)絡(luò)管理模式在Kube-OVN的underlay容器網(wǎng)絡(luò)下依然有效。
高并發(fā)場(chǎng)景下,銀行的容器網(wǎng)絡(luò)如何規(guī)劃?
在高并發(fā)場(chǎng)景下,銀行傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)相對(duì)缺少靈活性,已無(wú)法滿足日益增長(zhǎng)的敏態(tài)業(yè)務(wù)需求。采用容器后,容器網(wǎng)絡(luò)如何兼容傳統(tǒng)網(wǎng)絡(luò)和安全管理,并提供擴(kuò)展的靈活性,是每一個(gè)銀行用戶都在關(guān)注的問(wèn)題。
我們?cè)诮鹑谛袠I(yè)的大量實(shí)踐中發(fā)現(xiàn),云原生的平臺(tái)化思維和傳統(tǒng)IT的條線式思維存在著一定矛盾。云原生希望通過(guò)一個(gè)yaml文件描述應(yīng)用,所有的部署工藝、應(yīng)用的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)應(yīng)該能夠自動(dòng)化生成,而銀行專門的網(wǎng)絡(luò)部門都有嚴(yán)格定義的網(wǎng)絡(luò)規(guī)范,它們之間的矛盾在銀行業(yè)是特別突出的。
從實(shí)際落地的角度來(lái)看,可以采取以下幾點(diǎn)建議來(lái)有針對(duì)性地解決這個(gè)矛盾,合理規(guī)劃銀行的容器網(wǎng)絡(luò)。
首先,在技術(shù)思路方面,建議underlay和overlay同時(shí)進(jìn)行。目前容器網(wǎng)絡(luò)兩個(gè)基本技術(shù)思路是overlay和underlay,overlay是建設(shè)虛擬網(wǎng)絡(luò),容器采用虛擬IP;underlay是復(fù)用下層物理網(wǎng)絡(luò),容器像虛擬機(jī)一樣使用下層網(wǎng)絡(luò)。從某種意義上說(shuō),overlay是平臺(tái)化思維的產(chǎn)物,underlay是條線式管理思維的產(chǎn)物。某些銀行可以允許大規(guī)模overlay,個(gè)別場(chǎng)景采用underlay(例如多播、運(yùn)管功能等),這樣兩個(gè)一起搞,同時(shí)兼顧。另外還有些銀行目前基本沒(méi)有overlay的空間,更多采用underlay管理;而還有些銀行在虛擬化上建設(shè)容器平臺(tái),underlay不能用(underlay可能會(huì)和IaaS網(wǎng)絡(luò)有沖突),導(dǎo)致只能用overlay。鑒于這些情況,我的建議是兩個(gè)都上,不同的集群采用不同的方案,甚至通過(guò)多網(wǎng)卡同時(shí)采用underlay和overlay。即便僅有一種需求,也兩種方案都規(guī)劃到位,保證未來(lái)拓展的可能性。
在建設(shè)思維方面,可以參考IaaS的網(wǎng)絡(luò)建設(shè)思維。IaaS典型的網(wǎng)絡(luò)思維是三網(wǎng)分離、四網(wǎng)分離,容器網(wǎng)絡(luò)目前規(guī)劃中,以前不太考慮這種方案,這是因?yàn)橐郧案嗍荌aaS負(fù)責(zé)基礎(chǔ)設(shè)施網(wǎng)絡(luò),但是如果一旦在裸金屬上部署容器平臺(tái),那么IaaS原來(lái)遇到的問(wèn)題,今天容器平臺(tái)也會(huì)遇到。
在容器網(wǎng)絡(luò)與外部網(wǎng)絡(luò)通信管控方面,可以通過(guò)統(tǒng)一的接入點(diǎn)(ingress、egress)管控容器內(nèi)網(wǎng)的網(wǎng)絡(luò)互訪,加強(qiáng)到“穩(wěn)態(tài)”和“敏態(tài)”之間的安全交互。
在networkpolicy管理方面,如果有可能,更多采用networkpolicy為每個(gè)應(yīng)用設(shè)置安全管控策略,這也是更“云原生”的一種做法。
從集群管理角度來(lái)看,容器云有多個(gè)集群,其中高并發(fā)高性能集群中,宿主機(jī)上使用傳統(tǒng)網(wǎng)絡(luò),容器網(wǎng)絡(luò)使用ovs。高容量高擴(kuò)展性的集群,宿主機(jī)上采用IaaS的基于VPC隔離的SDN網(wǎng)絡(luò),容器網(wǎng)絡(luò)使用CNI組件,直接offload到宿主機(jī)網(wǎng)絡(luò)上。
如何打造高性能的容器網(wǎng)絡(luò)?
一些銀行雖然針對(duì)傳統(tǒng)網(wǎng)絡(luò)已經(jīng)做了很多優(yōu)化工作,由于網(wǎng)絡(luò)插件的簡(jiǎn)化,還有許多性能問(wèn)題沒(méi)有解決,也許這些問(wèn)題在容器云里不是問(wèn)題,但是到金融場(chǎng)景里就是比較大的挑戰(zhàn)了。
因此,我們需要一個(gè)工具實(shí)現(xiàn)從傳統(tǒng)網(wǎng)絡(luò)向容器網(wǎng)絡(luò)的平滑過(guò)渡,目前業(yè)內(nèi)也已經(jīng)出現(xiàn)了一些比較好的CNI方案。以目前比較活躍的Kube-OVN網(wǎng)絡(luò)方案為例,它以成熟的OVS作為容器網(wǎng)絡(luò)底座,通過(guò)將OpenStack領(lǐng)域成熟的網(wǎng)絡(luò)功能平移到Kubernetes,融合了安全強(qiáng)化、智能運(yùn)維、硬件加速等多方面的特性,極大增強(qiáng)了Kubernetes容器網(wǎng)絡(luò)的安全性、可運(yùn)維性、管理性和性能。
通過(guò)Kube-OVN的一些調(diào)優(yōu),可以實(shí)現(xiàn)和現(xiàn)有容器網(wǎng)絡(luò)有同等流量性能,并未發(fā)生性能損耗的現(xiàn)象。比如某股份制銀行,之前用到Calico方案,是最接近于物理網(wǎng)絡(luò)性能的吞吐量,通過(guò)對(duì)比,Kube-OVN在性能上與Calico是相當(dāng)?shù)?,另外它還可以支持OVS、DPDK這種自定義協(xié)議棧以及硬件加速方案,可以提升整個(gè)的容器性能。通常金融行業(yè)在上核心系統(tǒng)時(shí)要經(jīng)過(guò)嚴(yán)格的容器網(wǎng)絡(luò)性能的壓測(cè),測(cè)試結(jié)果基本能達(dá)到預(yù)期,解決了性能上的后顧之憂。
另外還結(jié)合了一些在不同的銀行里落地的經(jīng)驗(yàn),尤其是把一些安全或者管控、監(jiān)管側(cè)的要求,結(jié)合起來(lái)做了相應(yīng)的構(gòu)建,能夠有效地幫助銀行用戶構(gòu)建更加適配金融云原生的高性能容器網(wǎng)絡(luò)。
最后,希望大家都能夠依據(jù)自身企業(yè)的實(shí)際情況,順利構(gòu)建高并發(fā)、高可用、高性能的云原生容器網(wǎng)絡(luò),穩(wěn)健、高效地實(shí)現(xiàn)云原生化轉(zhuǎn)型。