IT領(lǐng)域,變革的速度令人瞠舌??焖僭鲩L(zhǎng)的數(shù)據(jù),云計(jì)算規(guī)模的處理正推動(dòng)企業(yè)向著更高效、更可靠和可擴(kuò)展的方向前行。傳統(tǒng)的應(yīng)用架構(gòu)已日趨極限,所幸的是,最被看好的容器化技術(shù)正成為應(yīng)對(duì)上述難題的妙藥良方。
容器觸發(fā)無(wú)限場(chǎng)景
現(xiàn)實(shí)工作中,企業(yè)云工程師經(jīng)常會(huì)遇到這樣的問(wèn)題:程序在我這兒跑得好好的,怎么到你那里就不行了?系統(tǒng)好卡,是哪個(gè)進(jìn)程把CPU給吃光了?這套系統(tǒng)我已經(jīng)搭建好了,要不你再重新搭建一遍?每每出現(xiàn)這類問(wèn)題,容器技術(shù)都成為解決它們的不二法寶。
雖然容器技術(shù)很早就已經(jīng)存在,例如lxc、jails。但自從2013年Docker的橫空出世,對(duì)容器的管理方式做了良好的封裝。尤其是鏡像概念及docker build工具的出現(xiàn),極大的促進(jìn)了容器技術(shù)的普及,同時(shí)也使得更多應(yīng)用場(chǎng)景成為可能。
眾所周知,很長(zhǎng)一段時(shí)間,IaaS平臺(tái)主要基于虛擬機(jī)承載業(yè)務(wù)服務(wù)。但隨著業(yè)務(wù)復(fù)雜度的升高,每一個(gè)虛擬機(jī)都是一個(gè)完整的操作系統(tǒng),所以需要給其分配物理資源。而當(dāng)虛擬機(jī)數(shù)量增多時(shí),操作系統(tǒng)本身消耗的資源勢(shì)必增多。此外,由于開(kāi)發(fā)與運(yùn)維的環(huán),比較復(fù)雜。所以在部署上線應(yīng)用時(shí),企業(yè)依舊需要花費(fèi)不少時(shí)間去處理環(huán)境不兼容的問(wèn)題。因此虛擬機(jī)分發(fā)慢,資源耗用大,無(wú)法體現(xiàn)配置既代碼的弊端逐步體現(xiàn)出來(lái)。
恰巧,容器類似于集裝箱的設(shè)置有著鏡像小,啟動(dòng)快,占用資源少的特點(diǎn),解決了虛擬機(jī)的不足。它能夠更好的適用于無(wú)狀態(tài)的服務(wù),尤其是web服務(wù),DevOps, 微服務(wù)等場(chǎng)景。從Docker的角度來(lái)說(shuō),只要提供各種容器,它們相互之間配合,通過(guò)搭積木的方式就可以向上提供服務(wù)。
持久化存儲(chǔ)造就容器難題
而隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,從虛擬化到OpenStack,再到容器技術(shù),都走向了成熟的商業(yè)應(yīng)用。隨著Kubernetes的風(fēng)頭正勁,給容器和業(yè)務(wù)的管理帶來(lái)更多的便利性,企業(yè)用戶已經(jīng)開(kāi)始逐步將原有運(yùn)行在虛擬機(jī)上的應(yīng)用遷移到容器上來(lái)。
對(duì)于企業(yè)級(jí)用戶來(lái)說(shuō),業(yè)務(wù)龐雜、高耦合低內(nèi)聚、平臺(tái)各異、語(yǔ)言各異等是共通的系統(tǒng)屬性。容器的出現(xiàn)讓企業(yè)真正可以聚焦在業(yè)務(wù)本身,而不受運(yùn)維開(kāi)發(fā)的困擾。但是當(dāng)企業(yè)在將傳統(tǒng)應(yīng)用容器化的時(shí)候,也面臨一些挑戰(zhàn)。他們希望通過(guò)持久化存儲(chǔ)以保證高可靠、高可用和高性能。
但容器本身并不提供持久化存儲(chǔ)的解決方案。存儲(chǔ)在容器內(nèi)部的任何內(nèi)容,在容器被銷毀以后,數(shù)據(jù)將自動(dòng)消失,例如網(wǎng)站頁(yè)面、配置文件、數(shù)據(jù)庫(kù)和大數(shù)據(jù)應(yīng)用等。因此在企業(yè)真正運(yùn)行環(huán)境中,如何實(shí)現(xiàn)容器持久化存儲(chǔ)一直是業(yè)界的熱點(diǎn)問(wèn)題。
當(dāng)容器遇見(jiàn)存儲(chǔ)
為了確保持久化存儲(chǔ)的靈活性及可訪問(wèn)性,遠(yuǎn)程網(wǎng)絡(luò)存儲(chǔ)是最理想的方案。這樣既可以利用不同的協(xié)議,如ISCSI、NFS等訪問(wèn),也可以支持不同介質(zhì)的存儲(chǔ),如云存儲(chǔ)、SAN設(shè)備,從理論上打通了現(xiàn)有的存儲(chǔ)與容器的整合之路。
但現(xiàn)有的存儲(chǔ)方案真的能很好的應(yīng)對(duì)容器存儲(chǔ)場(chǎng)景嗎?答案是NO!就像虛擬化流行時(shí)發(fā)現(xiàn)存儲(chǔ)不能滿足需求一樣,今天容器用戶依然會(huì)發(fā)現(xiàn)傳統(tǒng)的存儲(chǔ)體系不能滿足容器場(chǎng)景下對(duì)存儲(chǔ)的需求。
在現(xiàn)有的容器管理平臺(tái)中,例如Kubernetes,已經(jīng)內(nèi)在支持了廣泛的存儲(chǔ)插件,典型的可分為兩部分。首先是文件存儲(chǔ),例如 CephFS、GlusterFS、NFS等。CephFS, GlusterFS盡管有龐大的社區(qū)的支持,但成熟度上還需要進(jìn)一步驗(yàn)證。同時(shí)在大型集群的環(huán)境下它們還無(wú)法達(dá)到企業(yè)級(jí)穩(wěn)定性、可靠性的要求,在高可靠、高性能場(chǎng)景也有著架構(gòu)上的不足。而NFS在性能上存在不足。其次是塊存儲(chǔ),例如Ceph RBD、SAN存儲(chǔ)等。對(duì)于這類存儲(chǔ),本身并不支持多讀寫的需求,而對(duì)復(fù)雜的容器業(yè)務(wù)系統(tǒng)又是強(qiáng)需求。
因此,我們發(fā)現(xiàn)容器應(yīng)用場(chǎng)景下的存儲(chǔ)有著自己獨(dú)特的需求,需要能夠?qū)θ萜骷?jí)別的存儲(chǔ)卷做細(xì)粒度的管理,例如Persistent Volume級(jí)別的Quota配置、QoS限速、ACL控制、快照等。而這就是Container-Native Storage(當(dāng)容器遇見(jiàn)存儲(chǔ))的基本要求。
值得注意的是,從2018年Gartner技術(shù)趨勢(shì)圖中,我們發(fā)現(xiàn)專門針對(duì)容器應(yīng)用場(chǎng)景的持久化存儲(chǔ)Container-Native Storage正處于明顯上升趨勢(shì)。那么Container-Native Storage 與企業(yè)日常的存儲(chǔ)有什么差別呢?可以用四句話來(lái)詮釋,首先它專門為支持容器而設(shè)計(jì);其次它能夠滿足應(yīng)用的擴(kuò)展以及性能需求;第三它與容器管理系統(tǒng)深度整合;最后它支持大量系統(tǒng)的并行訪問(wèn)。
此外,為了保證容器的可用性,容器調(diào)度平臺(tái)會(huì)在容器或者所在宿主機(jī)發(fā)生故障時(shí),自動(dòng)將容器轉(zhuǎn)移到其他節(jié)點(diǎn)。這意味著在容器遷移到其他節(jié)點(diǎn)之后,需要能夠無(wú)差別的訪問(wèn)原有的存儲(chǔ)內(nèi)容,也就是存儲(chǔ)要做到與容器跟隨。
企業(yè)級(jí)容器存儲(chǔ)的五大特性
容器存儲(chǔ)既然是存儲(chǔ),存儲(chǔ)的基本功能諸如可靠性、可用性等自不用說(shuō)。隨著業(yè)務(wù)的發(fā)展,新的應(yīng)用形態(tài),如Cloud-Native、微服務(wù)等對(duì)容器存儲(chǔ)有了新的要求,主要體現(xiàn)在以下幾個(gè)方面。
第一,標(biāo)準(zhǔn)的社區(qū)接口對(duì)接。容器存儲(chǔ)需要與容器管理平臺(tái)做深度整合,以Kubernetes為例。Kubernetes中內(nèi)置Flex Volume與CSI兩種支持外部存儲(chǔ)的插件化方案。對(duì)于存儲(chǔ)廠商來(lái)說(shuō),需要實(shí)現(xiàn)靜態(tài)與動(dòng)態(tài)的存儲(chǔ)卷的生命周期管理。如今Kubernetes社區(qū)已經(jīng)增強(qiáng)了對(duì)持久化存儲(chǔ)的重視度,從定義標(biāo)準(zhǔn)的CSI存儲(chǔ)接口到持續(xù)增加容器對(duì)持久化存儲(chǔ)的標(biāo)準(zhǔn)調(diào)用API,可見(jiàn)容器存儲(chǔ)提供商需要持續(xù)跟進(jìn)社區(qū)計(jì)劃。
第二,豐富的讀寫模式支持。為了滿足業(yè)務(wù)的需求,容器存儲(chǔ)對(duì)于ReadWriteMany的支持也是一個(gè)必備的選項(xiàng)。
第三,數(shù)據(jù)跟隨。容器數(shù)據(jù)的跟隨意味著數(shù)據(jù)必須能夠快速的在全局可見(jiàn)。
第四,最小的擴(kuò)容、故障帶來(lái)的影響范圍。隨著機(jī)器規(guī)模的增加,磁盤,物理機(jī)等發(fā)生故障的幾率也大幅增加。對(duì)于任何一個(gè)節(jié)點(diǎn)都可能有數(shù)十上百個(gè)容器在訪問(wèn)的存儲(chǔ)來(lái)說(shuō),如何做到在擴(kuò)容、故障的情況下,減小業(yè)務(wù)的影響時(shí)間及范圍就顯得更加重要。
第五,海量并行任務(wù)下優(yōu)異的讀寫性能。微服務(wù)、應(yīng)用容器化、集群內(nèi)容器的實(shí)例數(shù)量相比虛擬機(jī)場(chǎng)景會(huì)增加10倍以上。以前一個(gè)大型企業(yè)可能總共幾百個(gè)虛擬機(jī),容器化后會(huì)演變成上千個(gè)容器實(shí)例,這就要求在海量并行任務(wù)下存儲(chǔ)的性能能夠持續(xù)保障業(yè)務(wù)需求。
綜上所述,一個(gè)好的企業(yè)級(jí)容器存儲(chǔ)應(yīng)該是一個(gè)分布式存儲(chǔ),具備良好彈性能力,通過(guò)分布式文件接口暴露給容器使用,與容器管理平臺(tái)融合并提供高可用數(shù)據(jù)卷功能,提供豐富的基于容器粒度的存儲(chǔ)功能,能夠讓容器感知也能夠感知容器變化,甚至于存儲(chǔ)整體容器化,同時(shí)針對(duì)擴(kuò)容以及故障的影響進(jìn)行優(yōu)化,做到最小甚至無(wú)影響。
縱觀目前業(yè)界發(fā)展,成熟的容器存儲(chǔ)方案還在探索的過(guò)程中。加之用戶的需求量巨大,所以越來(lái)越多的容器存儲(chǔ)產(chǎn)品在市場(chǎng)上涌現(xiàn)。
焱融云作為新一代超融合產(chǎn)品研發(fā)的倡導(dǎo)者,一直走在技術(shù)的前沿。他們認(rèn)為超融合從早期支持vmware esxi到xen、hyper-v,再到kvm,隨著容器應(yīng)用的快速普及,新一代的超融合產(chǎn)品將是支持容器化應(yīng)用場(chǎng)景的最佳實(shí)踐。
為了實(shí)現(xiàn)這個(gè)愿景,2017年焱融云針對(duì)容器技術(shù)趨勢(shì)預(yù)判,走訪容器客戶,在現(xiàn)有技術(shù)經(jīng)驗(yàn)積累下提早技術(shù)布局,打造了焱融高性能超融合容器存儲(chǔ),并最終在2018年6月推出國(guó)內(nèi)第一家企業(yè)級(jí)Container-Native Storage產(chǎn)品,完美支持容器存儲(chǔ)場(chǎng)景。而據(jù)記者了解,該產(chǎn)品具備以下七大優(yōu)勢(shì)。
首先,它具備高性能分布式文件接口,全分布式元數(shù)據(jù)集群;
其次,支持容器以及Namespace級(jí)別的Quota配置,QoS限速;
第三,它與容器平臺(tái)的深度整合。在KubernetesV1.10.5以下版本中,可使用 Flex Volume插件支持靜態(tài)與動(dòng)態(tài)的卷創(chuàng)建。在KubernetesV1.10.5及以上版本,可以使用CSI plugin支持靜態(tài)與動(dòng)態(tài)卷的創(chuàng)建;
第四,它支持RWO/ROX/RWX三種訪問(wèn)方式,滿足各種應(yīng)用對(duì)存儲(chǔ)的使用要求,并且針對(duì)不同的訪問(wèn)方式做深度優(yōu)化;
第五,它的高性能客戶端以及緩存層,提高數(shù)據(jù)訪問(wèn)的效率與性能;
第六,它有效控制了故障以及擴(kuò)容的場(chǎng)景下對(duì)業(yè)務(wù)數(shù)據(jù)的影響,在大規(guī)模集群場(chǎng)景下相比其他方案對(duì)容器應(yīng)用影響時(shí)間、范圍最??;
第七,打造了優(yōu)異的高并發(fā)任務(wù)下的讀寫性能;
最后,它支持融合、分離的多種部署方式。
此外,通過(guò)FIO的對(duì)比測(cè)試(本次僅對(duì)比了ceph塊存儲(chǔ)),在高并發(fā)模式(采用iodepth=64 + numjobs=32)下的測(cè)試結(jié)果如下:
革命,才剛剛開(kāi)始
以虛擬機(jī)形式呈現(xiàn)的服務(wù)器虛擬化花費(fèi)了十年才替代掉企業(yè)數(shù)據(jù)中心中應(yīng)用程序?qū)S玫奈锢矸?wù)器?,F(xiàn)在,容器化應(yīng)用程序似乎將會(huì)在一兩年內(nèi)替換許多完整的虛擬機(jī)應(yīng)用。而在這其中,最大挑戰(zhàn)在于我們能否為容器快速提供企業(yè)級(jí)持續(xù)性數(shù)據(jù)存儲(chǔ)。
不得不承認(rèn),當(dāng)下容器持久化存儲(chǔ)依然有待發(fā)展和成熟,焱融云正努力持續(xù)創(chuàng)新 ,為開(kāi)發(fā)人員和管理員提供更加無(wú)縫的體驗(yàn),幫助他們?cè)谌萜骰h(huán)境中管理存儲(chǔ),從而加速企業(yè)的容器和微服務(wù)的革命。
革命,才剛剛開(kāi)始。