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