存儲極客
這是一群存儲偏執(zhí)狂
為存儲而生,跟存儲死磕
各具獨(dú)家秘笈
有觀點(diǎn),有碰撞,有干貨
從8月18起
做客存儲極客欄目
與你分享存儲里的那點(diǎn)事兒
以Docker為代表的容器,在人們眼中是平臺層面的技術(shù)。與屬于基礎(chǔ)架構(gòu)層面的虛擬機(jī)相比,容器看似與底層存儲設(shè)備沒有什么必然的聯(lián)系,甚至許多情況下使用本地存儲就可以了。那么Docker到底有沒有企業(yè)存儲方面的需求?它與傳統(tǒng)存儲陣列之間有哪些需要配合的地方呢?
從企業(yè)存儲生態(tài)系統(tǒng)到Docker結(jié)合點(diǎn)
Copy-On-Write機(jī)制的Docker存儲卷,支持LVM、ZFS、BTRFS、AUFS和OverlayFS等幾種供給格式。
隨著每一輪新技術(shù)熱潮的來襲,從事技術(shù)工作的筆者都會有一種“危機(jī)感”,畢竟包括企業(yè)級在內(nèi)的IT行業(yè)更新太快,不堅持學(xué)習(xí)就很容易落伍。
從虛擬化、云計算、大數(shù)據(jù),一直到軟件定義無不如此,我們謹(jǐn)慎地關(guān)注著每個概念中有多少炒作的泡沫?當(dāng)然也會有真正改變用戶IT消費(fèi)方式的變革,包括與傳統(tǒng)基礎(chǔ)設(shè)施,特別是服務(wù)器、存儲設(shè)備的結(jié)合點(diǎn);還有公共云服務(wù)、Server SAN/超融合這樣的顛覆。
具體到技術(shù)和廠商,比如下圖中的VMware、微軟(Hyper-V和Azure);新一輪還在發(fā)展完善中的開源虛擬化管理/云平臺OpenStack;還有本文要討論的重點(diǎn)——Docker容器。
現(xiàn)在有一種比較激進(jìn)的思想,未來一切都是軟件定義的,傳統(tǒng)商業(yè)存儲陣列將會慢慢失去市場。我們看到了VSAN的出現(xiàn)——至少目前它的應(yīng)用還是有局限,而不是萬能的;我們也看到搭車OpenStack/KVM而火熱的Ceph開源分布式存儲,但它距離成熟易用還有很大的一段距離。因此在當(dāng)前,虛擬化/云計算平臺一直在加強(qiáng)對傳統(tǒng)外部共享存儲的支持,容器也不例外。
本文中引用了一些來自戴爾的資料,但它們都具有普適性,我們接下來的話題也會圍繞通用技術(shù)趨勢,而不是專屬于某一家具體的產(chǎn)品。
上圖列出了存儲系統(tǒng)與領(lǐng)先的技術(shù)合作伙伴間的管理整合,這些是行業(yè)內(nèi)一線廠商基本都要去做的工作。大致包括以下幾個方面:
虛擬化整合:VMware VAAI、VASA、VVOL,微軟Hyper-V對應(yīng)的API支持等,由于本文主題在這里不詳細(xì)介紹了。
云平臺整合:OpenStack針對塊存儲設(shè)備支持的Cinder driver等。
應(yīng)用保護(hù)整合:生成和管理具備Oracle數(shù)據(jù)庫等應(yīng)用程序一致性的快照/恢復(fù)點(diǎn),也包括Windows VSS、VMware虛擬機(jī)的支持。
備份軟件整合:通過流行的備份軟件對生成快照的數(shù)據(jù)進(jìn)行保護(hù),從而確保可恢復(fù)性,這里列出了賽門鐵克(嚴(yán)格說現(xiàn)在算Veritas)和CommVault。如果是基于戴爾SC存儲快照的備份,應(yīng)該還有自家的NetVault備份軟件可以支持。(詳見:《DellWorld2015快訊:NetVault Backup11智能備份詳解》)
應(yīng)用監(jiān)控整合:如Foglight,是戴爾收購Quest獲得的高級應(yīng)用監(jiān)控解決方案。我記得EMC等廠商也提供類似的軟件產(chǎn)品。
Docker容器整合:針對SAN共享塊存儲設(shè)備的容器卷管理系統(tǒng)。
Flocker擁有“無限可能”的卷管理器
目前我們看到包括EMC、戴爾SC系列在內(nèi)的幾家存儲廠商/產(chǎn)品家族,都在與ClusterHQ公司的Flocker合作——一個針對Docker應(yīng)用開源的容器數(shù)據(jù)卷管理器,它能夠像本地存儲那樣對基于塊的共享存儲提供良好支持。
Flocker帶來了靈活性和擴(kuò)展性,它提供的工具能夠:
●遷移數(shù)據(jù)
●運(yùn)行容器化狀態(tài)的服務(wù)(例如數(shù)據(jù)庫)
●可移動性 - 在集群中的任意容器上使用
●管理Docker容器和數(shù)據(jù)卷
●卷跟隨容器在主機(jī)之間(移動)
●由控制服務(wù)提供的REST API接口
與Flocker結(jié)合之后,存儲陣列擁有“無限可能”。Flocker可以支持較高版本的CentOS和Ubuntu Linux服務(wù)器(不排除有更新增加);可以使用的數(shù)據(jù)卷除了共享塊存儲之外,還有“本地”存儲——我們理解后者中也包括被虛擬機(jī)視為本地存儲的Amazon EBS、OpenStack Ceph RBD和Swift中的鏡像掛載,還有RackSpace云設(shè)施里類似的實(shí)現(xiàn)。
Flocker還可以與Linux上運(yùn)行的任意數(shù)據(jù)庫一起工作,這里面包括傳統(tǒng)關(guān)系型的MySQL、PostgreSQL,也有新興的MongoDB、Redis和RabbitMQ等。上圖中并未列出Oracle,應(yīng)該是因?yàn)镺racle已經(jīng)有并且推薦使用自己的存儲管理器ASM,直接控制到磁盤/SSD/LUN一級,Oracle一直不官方支持除自家VM之外的虛擬機(jī)環(huán)境,我們也沒聽說過有人在容器中使用。
共享塊存儲 容器遷移、能否做HA?
我們來看一下使用了Flocker之后有何不同。在原生Docker環(huán)境,當(dāng)一臺服務(wù)器上運(yùn)行的容器化有狀態(tài)服務(wù)(數(shù)據(jù)庫)遷移至另一臺時,其數(shù)據(jù)卷會留在原地,在新的服務(wù)器上啟動的容器沒有任何數(shù)據(jù)。也就是說,在遷移之前需要先手動停止容器并復(fù)制數(shù)據(jù)到新的服務(wù)器才能使用。
而在使用了Flocker之后,當(dāng)容器移動時數(shù)據(jù)卷與它一起移動,您的數(shù)據(jù)庫(容器)能夠保持其數(shù)據(jù)狀態(tài)。這里大家有沒有聯(lián)想到VMware的vMotion呢?傳統(tǒng)并且最實(shí)用的vMotion虛擬機(jī)遷移是需要vmdk鏡像位于共享存儲上的,在這里戴爾SC陣列是同樣的角色,我想與Flocker合作的其他傳統(tǒng)存儲廠商也是類似情況。
最后,具體到戴爾的存儲是如何與Flocker一同工作呢?如上圖,我們看到SC陣列上有一個100TB的LUN 10映射到2臺服務(wù)器,其中Ubuntu Docker Host 1在上面運(yùn)行了一個MongoDB容器。當(dāng)Flocker遷移容器時,會一并發(fā)送指令給戴爾存儲插件(由存儲廠商與Flocker合作開發(fā))遷移卷到Ubuntu Docker Host 2。
這里并不需要真正的數(shù)據(jù)拷貝,簡單理解應(yīng)該是一個把MongoDB卷從Host 1的容器上解除注冊,然后將其注冊到Host 2上的過程。
進(jìn)一步思考,按照從vMotion到vSphere HA的思路,容器是否也可以在兩臺主機(jī)之間做高可用呢?在偵測到Host 1出現(xiàn)故障時,上面提到容器遷移的后半部分——即在備用主機(jī)注冊共享存儲上的數(shù)據(jù)卷,然后啟動容器這一過程,實(shí)現(xiàn)起來并不復(fù)雜。
我們預(yù)計,隨著Docker應(yīng)用的不斷普及,企業(yè)級數(shù)據(jù)遷移、高可用需求的不斷出現(xiàn),主流存儲廠商會陸續(xù)提供這方面的支持。