走出NFV與虛擬機(jī)誤區(qū) 或避免再陷“軟件壟斷”
IHS 近期發(fā)布的報告顯示,包括硬件、軟件和服務(wù)在內(nèi)的全球NFV市場規(guī)模,將在2020年達(dá)到155億美元。近年來,移動運營商在軟件領(lǐng)域的投入要遠(yuǎn)遠(yuǎn)大于在服務(wù)器、存儲以及交換機(jī)硬件方面的投入,足以見得電信行業(yè)想通過NFV技術(shù)將重心從硬件轉(zhuǎn)移到軟件的決心。
不過運營商在發(fā)展NFV的過程中,由于對新興技術(shù)理解不足、現(xiàn)網(wǎng)商用經(jīng)驗匱乏等原因,會產(chǎn)生諸多誤區(qū)。比如,很多運營商認(rèn)為NFV需要用虛擬機(jī)承載,并且只能用某家設(shè)備廠商提供的軟件虛擬出來的虛擬機(jī)。這就造成很多設(shè)備廠商打著“底層優(yōu)化”的幌子,對運營商進(jìn)行產(chǎn)品的“捆綁銷售”。本文將針對“NFV與虛擬機(jī)的誤區(qū)”進(jìn)行詳細(xì)解析。
虛擬機(jī)應(yīng)按需求部署
在網(wǎng)絡(luò)架構(gòu)中,虛擬機(jī)的出現(xiàn)是因為物理服務(wù)器處理能力太強(qiáng),某個應(yīng)用獨立占用過于浪費,所以將物理機(jī)的處理能力“一分為N”,在物理服務(wù)器上部署一個虛擬化軟件,將物理服務(wù)器的CPU、內(nèi)存和I/O設(shè)備進(jìn)行“虛擬化”后再次共享,模擬出多臺虛擬的服務(wù)器。
但是虛擬化的過程本身是需要消耗不小的性能。為了模擬出一個“虛擬機(jī)”,也需要額外的附件,這些附件包括虛擬化軟件、東西防火墻、防病毒軟件等。這些附件都是需要額外購買的產(chǎn)品,并且運行這些軟件還需要占用物理服務(wù)器的計算資源,并且消耗資源。
虛擬化的目的是提高資源利用率,但不一定節(jié)約成本,只有合理的虛擬化才能達(dá)到節(jié)約成本的目的。虛擬機(jī)的一些特性,如HA((High Availability,高可用性)、遷移等,確實會帶來應(yīng)用管理上的便捷,但這是虛擬化帶來的“副產(chǎn)品”,如果為了“副產(chǎn)品”而選擇采用虛擬機(jī),比如,一個服務(wù)器上只開設(shè)一臺虛擬機(jī)或少量虛擬機(jī),那就是資源浪費。
云計算的理念是按需分配,并不是一味追求全部使用虛擬機(jī)。因此我建議,對計算資源需求不大的小應(yīng)用適合采用虛擬化技術(shù),而對計算能力要求大于服務(wù)器能提供能力的四分之一以上的應(yīng)用,建議采用物理服務(wù)器。另外,由于不少傳統(tǒng)運營商的基礎(chǔ)核心網(wǎng)元承擔(dān)著基礎(chǔ)通信任務(wù),通俗地說就是“很忙”,對計算、網(wǎng)絡(luò)帶寬都有很高的要求,在這種情況下,就要根據(jù)不同網(wǎng)元的實際情況,選擇物理機(jī)或虛擬機(jī)。甚至可以在同一個網(wǎng)元上采用物理機(jī)+虛擬機(jī)的混合部署模式,比如日?;A(chǔ)量用物理機(jī)承載,突發(fā)量采用虛擬機(jī)承載。
采用同廠家虛擬化軟件恐再陷壟斷
大多數(shù)設(shè)備廠商提出,運營商實現(xiàn)NFV所需要的虛擬化軟件必須是本廠提供。這點類似于運營商傳統(tǒng)核心網(wǎng)網(wǎng)元要采用同一個廠家提供的服務(wù)器要求,是典型的“捆綁銷售”,是“軟件壟斷”的前奏。
因為應(yīng)用并不是直接部署在服務(wù)器上,而是部署在操作系統(tǒng)上。從架構(gòu)上來看,物理機(jī)和虛擬機(jī)的架構(gòu)完全一樣,虛擬化層只是對原來的硬件做了點“手腳”。除了CPU、網(wǎng)絡(luò)等資源是按照“時分”外,其他的如內(nèi)存、存儲等都是按照“空分”來實現(xiàn)。虛擬化層的“魔術(shù)”會讓操作系統(tǒng)完全區(qū)分不出用的是物理機(jī)還是虛擬機(jī),更何況是加載在操作系統(tǒng)之上的應(yīng)用。
而虛擬化軟件的差別只在于其本身運行的穩(wěn)定性、安全性和兼容性。對于一個成熟的虛擬化軟件來說,只要是在x86服務(wù)器上能正常運行的操作系統(tǒng),同樣就可以在虛擬機(jī)上運行。目前,很多設(shè)備廠商的虛擬化軟件其實就是基于開源的XEN或者KVM(Linux虛擬化技術(shù)用戶目前可選擇的兩種免費開源管理程序)上改造而來,但這種類型的虛擬化軟件應(yīng)用場景少,也沒有經(jīng)過大范圍的驗證,反而風(fēng)險更大。另外,如果不同的NFV網(wǎng)元采用不同虛擬化軟件、建設(shè)不同的資源池,不但資源共享無從談起,可能再次形成了各種資源池的“豎井”,與傳統(tǒng)的服務(wù)器“豎井”架構(gòu)毫無區(qū)別,***結(jié)果就是,好不容易打破的硬件“豎井”又改頭換面出現(xiàn)了。
虛擬機(jī)遷移功能并非代表高可靠保障
另外,大多數(shù)人也會對虛擬機(jī)的“遷移”(vMotion)功能產(chǎn)生誤區(qū)。遷移是虛擬機(jī)帶來的最重要特性。遷移是一項資源管理技術(shù),不能替代原來的高可靠性技術(shù)(如HA等)。遷移可以分為“熱遷移”和“冷遷移”。虛擬機(jī)的“冷遷移”本質(zhì)上就是虛擬機(jī)的HA,即每臺虛擬機(jī)和管理平臺都有“心跳”,當(dāng)管理平臺發(fā)現(xiàn)某臺虛擬機(jī)失去“心跳”,就會在合適的物理機(jī)上重建這臺虛擬機(jī)。這個過程實際上需要中斷業(yè)務(wù),而業(yè)務(wù)恢復(fù)的時間也是分鐘級的。
“熱遷移”指的是將一個正常的處于服務(wù)中的虛擬機(jī),從一臺物理服務(wù)器搬家到另一臺物理服務(wù)器的技術(shù)。虛擬機(jī)的“熱遷移”其實也是虛擬機(jī)本身維護(hù)手段,分為主動熱遷移和被動熱遷移。主動熱遷移是維護(hù)人員為了維護(hù)主機(jī)等原因?qū)⑻摂M機(jī)遷移到其他服務(wù)器上;被動熱遷移是指當(dāng)虛擬機(jī)所在的物理機(jī)利用率達(dá)到設(shè)置的閥值后采取的減負(fù)措施,遷移走的是本物理機(jī)上最空閑的虛擬機(jī)。不管是主動還是被動熱遷移,不是每次遷移都會成功的,CPU和內(nèi)存利用率高的虛擬機(jī)的遷移往往經(jīng)過長時間的嘗試后失敗。
也就是說,不管是冷遷移還是熱遷移,都無助于應(yīng)用訪問進(jìn)行故障切換和快速恢復(fù)。遷移的目的是盡可能方便地為維護(hù)人員提供資源調(diào)度、轉(zhuǎn)移手段,當(dāng)物理服務(wù)器維護(hù)時需要關(guān)機(jī)重啟,當(dāng)物理服務(wù)器出現(xiàn)繁忙,當(dāng)數(shù)據(jù)中心需要擴(kuò)容重新安排資源,這種時候遷移就有用武之地了,但虛擬機(jī)的遷移并不給應(yīng)用帶來任何的高可靠或自愈特性。
虛擬機(jī)無法向應(yīng)用提供彈性伸縮能力
虛擬機(jī)在線“縱向”擴(kuò)容能力(在線增加CPU、內(nèi)存等資源)并不是虛擬機(jī)的貢獻(xiàn),而是操作系統(tǒng)的“功勞”。但并不是所有的操作系統(tǒng)都可以支持在線擴(kuò)容,并且所有的操作系統(tǒng)都不支持在線“縱向”縮容(在線減少CPU、內(nèi)存等資源),要完成縮容操作需要重啟虛擬機(jī),也就是需要中斷業(yè)務(wù),所以虛擬機(jī)并沒有像大家以為的那樣靈活。如果想要簡單地利用虛擬機(jī)的“彈性”,是做不到基于實際業(yè)務(wù)需求進(jìn)行自動部署、彈性伸縮的。
如果真想實現(xiàn)應(yīng)用的“橫向”彈性伸縮,可以借助負(fù)載均衡模式。負(fù)載均衡是網(wǎng)絡(luò)設(shè)備本身提供的,他們識別的是IP地址和端口號,對于物理機(jī)和虛擬機(jī)來說效果都是一樣的。只是虛擬機(jī)可以更省些資源,因為虛擬機(jī)在關(guān)機(jī)的時候就變成共享存儲里的一個文件,并不需要占用實際的物理資源。
不管是“縱向”還是“橫向”伸縮能力都要結(jié)合應(yīng)用本身的特點,而不是簡單的監(jiān)控CPU和內(nèi)存。需要利用一些業(yè)務(wù)系統(tǒng)收集的日常數(shù)據(jù),進(jìn)行數(shù)據(jù)分析,建立合適的模型,防止誤判,實現(xiàn)彈性伸縮。實際應(yīng)用中,特別是“縮容” 可能會影響到內(nèi)存里的數(shù)據(jù)和進(jìn)程,隨便重啟或關(guān)機(jī)也會中斷或影響業(yè)務(wù)。
換了“馬甲”的NFV改造意義不大
目前,在運營商NFV改造過程中,出現(xiàn)了很多“為了改造而改造”的現(xiàn)象。比如原來是設(shè)備上一張板卡,就對應(yīng)一臺虛擬機(jī)的的改造,把虛擬機(jī)直接封裝在容器里進(jìn)行容器部署的改造。特別是核心網(wǎng)元的改造,因為提供的是普遍服務(wù),日常的業(yè)務(wù)量巨大,硬件改造成為軟件后,本身的處理能力實際上是下降的,這種情況就需要一個能夠符合軟件定義特點的架構(gòu)和實現(xiàn)方式。
特別強(qiáng)調(diào)的是,“容器”的微服務(wù)架構(gòu)可以幫助解決核心網(wǎng)元長期以來的“升級影響大”、“新業(yè)務(wù)開發(fā)慢”等難題。但是真正采用容器的微服務(wù)架構(gòu),需要將原來的應(yīng)用體系完全推倒重來,而且短時間內(nèi)也達(dá)不到現(xiàn)有系統(tǒng)的功能和穩(wěn)定性。上述成本是運營商不愿意承擔(dān)的,所以現(xiàn)在運營商還是喜歡用“新瓶子裝老酒”,但這樣換了“馬甲”的NFV改造意義不大。