劉沛東,安 博,鐘業(yè)弘,王 虎,曹東剛+
1.北京大學 高可信軟件技術教育部重點實驗室,北京 100871
2.北京大學(天津濱海)新一代信息技術研究院,天津 300450
私有云環(huán)境下基于虛擬集群的資源共享方法*
劉沛東1,2,安 博1,2,鐘業(yè)弘1,2,王 虎1,2,曹東剛1,2+
1.北京大學 高可信軟件技術教育部重點實驗室,北京 100871
2.北京大學(天津濱海)新一代信息技術研究院,天津 300450
隨著云計算與大數(shù)據(jù)處理的飛速發(fā)展,越來越多的應用框架開始使用“云”的方式運行,這對企業(yè)私有云平臺提出了一些重要挑戰(zhàn):如何讓私有云環(huán)境有限的物理資源支持多個應用框架和多個用戶,不僅能保證絕大多數(shù)現(xiàn)有的異構應用同時運行,還能為新應用提供擴展性與彈性支持。提出了一種新的服務模型ClaaS(cluster as a service),用一種簡單而易于實現(xiàn)的方式為中小規(guī)模的數(shù)據(jù)中心解決了上述問題。ClaaS的主要思路是將虛擬化的單位擴展為集群,為分布式的應用框架直接提供虛擬的集群環(huán)境。這樣,大部分的分布式應用就可以在無需任何修改的條件下直接運行在虛擬的集群環(huán)境中。為了驗證ClaaS的可行性,基于現(xiàn)有的輕量化容器技術和軟件定義網絡技術等實現(xiàn)了一個開源輕量級私有云系統(tǒng)Docklet,能夠支持用戶按需共享資源,支持Spark、MPI等各種計算框架,及Python、R、Java等語言,并在真實教學科研環(huán)境中提供、部署服務。最后描述了系統(tǒng)的設計與實現(xiàn),并進行了實驗與評估。
云計算;虛擬機群;ClaaS;軟件定義
如今,伴隨數(shù)據(jù)規(guī)模的膨脹與數(shù)據(jù)使用方式的增加,在許多企業(yè)內部,需要運行的計算框架越來越多[1]。同時,應用框架本身的多樣性也隨著云計算和大數(shù)據(jù)處理技術的發(fā)展而快速上升。在當今的環(huán)境下 Hadoop(http://hadoop.apache.org)、Spark(http://spark.apache.org)、Storm(http://storm.apache.org)這樣的分布式應用框架占據(jù)主流地位,而MPI(http://www.mpi-forum.org/docs)和OpenMP(http://openmp.org/wp/)這樣的傳統(tǒng)分布式或并行應用框架也扮演著相當重要的角色。分析這些使用計算資源的方式,不難發(fā)現(xiàn)它們的一些共性,其中最為重要的就是它們都需要依托集群資源來使得計算效率最大化。然而,許多中小型的企業(yè)和組織只擁有有限的計算資源,對他們而言,為每一個需要運行的應用框架單獨配置集群花銷巨大且浪費資源,幾乎不可能實現(xiàn)。因此,他們迫切需要一種簡單而高效的方法來在各種應用框架之間共享計算資源,解決資源共享率低和資源浪費的問題[2],在滿足運算需求的前提下減少在計算資源方面的開銷。此外,同一個機構下的不同用戶出于各種原因也會需要同一個計算框架的不同副本。例如,A用戶在運行版本1的Spark的同時,另一個用戶B需要同時運行版本2的Spark,這就需要為計算資源提供多用戶和多實例的支持。
目前,在同一個物理集群中為不同框架提供計算資源方面已經有了一些解決方案[3]。Mesos[4]是其中有代表性的一種,它通過合理地封裝、調度資源,提供了一套可行的共享資源方法。然而,Mesos對于不包括在它支持列表里的計算框架而言不夠靈活,甚至需要使用者編寫新的調度代碼來使得這些框架運行在Mesos上。例如,在Mesos上運行MPI程序就需要用戶額外編寫一個調度腳本,這對不夠精通Mesos的使用者而言是一個相當大的負擔。而且在Mesos中,用戶通常共享同一框架的同一個實例,讓不同用戶出于各種原因(比如安全性)運行同一框架的不同實例有時是非常困難的。而Borg[5]、Apollo[6]、Omega[7]這樣的系統(tǒng)又過于專有化,需要巨量的計算資源與定制化的應用,難以在中小型私有云中進行使用。
為了解決上述私有云環(huán)境下的資源共享問題,本文提出了ClaaS(cluster as a service)的概念。ClaaS的目標是構建一個可擴展的高效而易于使用的系統(tǒng),這一系統(tǒng)可以向私有云中可信的用戶提供虛擬集群服務,能夠支持用戶按需共享資源。用戶可以方便地僅通過Web接口在線創(chuàng)建虛擬集群,在集群中運行Spark和MPI這樣的應用,而無需掌握有關新系統(tǒng)的復雜知識。與以往的解決方案最重大的不同是,ClaaS提供“虛擬集群即服務”,包括若干虛擬單位(虛擬機或容器)和網絡設施,而非單個的虛擬單位,作為一個單元。
ClaaS有如下的能力和優(yōu)勢:其一,提供簡單可靠的資源管理與作業(yè)管理技術;其二,不同進程可以通過虛擬集群提供的可靠通信方法形成一個整體;其三,ClaaS系統(tǒng)會按需為每個計算框架構建一個虛擬的私有子網;最后,由于每個應用的負載在實際應用中不盡相同,ClaaS的虛擬集群提供可伸縮性以實現(xiàn)更高的資源利用率。
基于ClaaS的理念,開發(fā)了一個輕量的可擴展的云系統(tǒng)Docklet。為了減少中間過程的性能損耗,Docklet使用了Linux容器LXC(http://lxc.sourceforge.net/lxc.html)。LXC目前集成在Linux內核中,擁有封裝和隔離資源的功能[8]。相較于其他資源封裝手段,該項技術對于ClaaS而言更高效,更加適合私有云環(huán)境。同時,在Docklet中使用了軟件定義技術來幫助管理和虛擬化集群資源。對于多用途的應用,Docklet提供了簡單的Restful接口。Docklet可方便地支持Spark、Storm、MPI、Hadoop、MapReduce、HDFS、Akka、Erlang、RabbitMQ和Jupyter等應用,所有這些應用都可以簡單地通過瀏覽器訪問而無需額外部署軟件環(huán)境,這對于企業(yè)用戶而言是十分易于使用的。Docklet已經在多個教育科研環(huán)境進行了部署,提供教學實驗環(huán)境、大數(shù)據(jù)分析等服務,代碼在github開源(https://github.com/unias/docklet)。
本文組織結構如下:第2章敘述了相關工作;第3章描述了ClaaS模型和虛擬集群的概念;第4章描述了基于ClaaS模型的Docklet系統(tǒng)設計;第5章給出了一些實例和實驗;最后給出了一些結論,同時描述了未來的工作。
Mesos[4]是一個支持多框架共享物理資源的開源資源調度引擎,得到了廣泛的應用。但Mesos的一個問題是,并非所有應用都能簡單地代入Mesos中運行,讓Mesos支持新的框架是一件困難的工作,程序員需要編寫許多額外的代碼來完成這一目標。在最壞的情況下,程序員甚至需要調整應用框架的源代碼,使其適應Mesos。此外,Mesos還缺乏多用戶的隔離支持,比起提供ClaaS,它更專注于資源調度。在ClaaS中,通過使用軟件定義技術,新的應用框架可以很容易得到支持,同時ClaaS也提供多用戶支持。
ClaaS使用了Linux容器技術LXC。Felter等人[9]對比了傳統(tǒng)虛擬機和Linux容器間的性能差異,列出了二者性能損耗的細節(jié)。其實驗結果指出,幾乎在所有情況下,Linux容器在性能上等同于或超過傳統(tǒng)虛擬機?;谠搶嶒灥慕Y果,為了提升整體性能表現(xiàn),本文在虛擬化方面放棄虛擬機而使用容器。Docker是另一種容器技術的封裝,本文沒有采用Docker而采用LXC技術的原因是Docker技術更復雜,而LXC更輕量簡單,適合本文面向的私有云環(huán)境。
Doelitzscher等人[10]描述了一個用于為私有云中的研究項目與機器學習任務按需提供高性能計算資源的云解決方案,該方案可以在需要時使用亞馬遜的公有云作為擴展資源池。Brock等人[11]也提出了在云設施中提供整個集群作為服務的概念。與以上工作不同的是,本文更專注于為任意不同的應用框架構建一個高效易用的ClaaS平臺,并支持靈活的資源調度。
OpenStack[12]是一個按節(jié)點分配資源、部署系統(tǒng)環(huán)境的開源私有云平臺,它在不改變程序源代碼和操作方式的條件下就能在同一集群里運行各種不同的應用框架。和ClaaS不同之處在于,它其實是使用虛擬機的方法隔離了資源,依舊是一次提供單個虛擬資源的模式,對于許多分布式的彈性的應用框架而言缺乏效率與擴展性。OpenStack工作在基礎設施即服務(infrastructure as a service,IaaS)層面,因此對于應用框架本身并不友好。使用類似OpenStack的工具構建、管理、使用一個虛擬云平臺是一件十分繁重而復雜的工作。
ClaaS不僅不同于提供單節(jié)點服務的IaaS,與對程序提供應用接口的平臺即服務(platform as a service,PaaS)也有很大的區(qū)別。它通過直接提供集群作為服務單元,描述了一種通用的定義不同應用的方法,同時為私有云環(huán)境下的應用實現(xiàn)了高兼容性、高效性與高擴展性支持。
3.1 Vcluster與它的優(yōu)勢
ClaaS提供給用戶的是虛擬集群Vcluster(virtual cluster),每個Vcluster包括一系列分布式的同構的節(jié)點與連接它們的網絡設施,對于用戶而言Vcluster可以看成是物理集群環(huán)境,從而可以安裝運行自己所需要的分布式計算框架。在ClaaS中,使用者可以將不同的應用框架部署在不同的Vcluster中,這樣的設計有如下的優(yōu)點:
(1)靈活性。Vcluster中的每個節(jié)點都提供和傳統(tǒng)虛擬機相似的環(huán)境,任何應用框架都可以簡單地移植到Vcluster中,通過創(chuàng)建新的Vcluster來支持和擴展。
(2)可擴展性。同一Vcluster中的不同節(jié)點可以透明地在不同物理機器上運行,由此使得單個應用框架可以利用不同位置的物理資源。
(3)伸縮性。每個Vcluster都允許內部的應用方便地控制工作節(jié)點的生存周期,這對應用自身通過調度實現(xiàn)彈性有著極大幫助。
(4)可定義性。Vcluster可以通過軟件定義技術描述和重建,用戶可以自定義分布式結構、遷移策略、運行腳本及其他特征,這使得Vcluster的使用十分靈活。同時,該特性獨立于硬件結構。
如圖1所示,ClaaS提供的這種服務模型使得它比在IaaS層面操作更有優(yōu)勢,而且它在部署分布式框架時也能做到和PaaS模式類似。
3.2 ClaaS中的軟件定義技術
在虛擬化過程中,使用了軟件定義技術,利用靈活的軟件協(xié)議來代替固定的硬件設備。例如,軟件定義網絡、軟件定義存儲等。在Vcluster層面,同樣使用了這一類技術,本文稱之為軟件定義虛擬集群。軟件定義的虛擬集群需要用戶提供構建邏輯集群,處理集群狀態(tài)變化和執(zhí)行內部應用的一些關鍵參數(shù)。
Fig.1 Multiple Vcluster for multiple tenants圖1 多租戶條件下的多個Vcluster
軟件定義虛擬集群有如下兩方面的優(yōu)勢:
(1)簡化集群部署的復雜度。ClaaS的用戶無需單獨配置每一個節(jié)點,只需要提供一些簡單的策略來處理集群伸縮、節(jié)點恢復與節(jié)點遷移這樣的事件。
(2)簡化分布式設備的管理。Vcluster與其內部的應用可以隨時被方便、快捷而安全地共享或重現(xiàn),這無疑同時減輕了管理員和用戶的學習與使用成本。
Docklet是設計用來支持ClaaS的平臺系統(tǒng),它是一個開源項目(https://github.com/unias/docklet)。
Docklet是為擁有中小型數(shù)據(jù)中心的企業(yè)或科研機構設計的輕量級私有云平臺,使員工能方便地共享使用有限的計算資源。這些用戶通常有很多在物理機或虛擬機上工作的經驗,且不太愿意接受很高的時間花費去學習一套新系統(tǒng)的使用方法。人們希望Docklet提供的虛擬集群可以像用戶熟悉的傳統(tǒng)物理機或虛擬機一樣使用。同時,Docklet引入了一些方便用戶使用的新特性。例如,提供一份軟件定義的文檔,就可以迅速構建并重現(xiàn)一個特定的Vcluster,并在它啟動時自動運行指定的應用框架或服務。同時,還希望它可以在占用盡量少的物理資源的情況下表現(xiàn)良好。
除此之外,Docklet還要求Vcluster擁有彈性,以便使用Hadoop和Spark這樣的分布式程序或框架。在Docklet的設計中,用戶和Vcluster內部的程序都可以方便地控制Vcluster的規(guī)模。為了讓Docklet對擴展和外部監(jiān)督更加開放,應該提供一套簡單易用的接口。在目前版本中,使用了HTTP協(xié)議下REST-ful風格的接口,以保證只需要瀏覽器就可以使用Docklet提供的服務。
4.1 結構設計
Docklet的用戶視圖見圖2。用戶通過工作空間(workspace)來訪問自己的資源,workspace就是包含用戶應用與數(shù)據(jù)的工作空間,在這個空間里,用戶可以進行運行應用、分析數(shù)據(jù)等操作。每個workspace在底層通過一個對應的Vcluster來支持,而Vcluster是Docklet進行資源管理的一個單元。一個Vcluster由一系列節(jié)點與連接它們的私有子網構成。用戶可以在瀏覽器中創(chuàng)建、刪除、重啟、擴展與收縮Vcluster來管理自己的資源。與此同時,每個workspace為用戶提供了一個Portal來訪問和操作Vcluster中的節(jié)點。每個節(jié)點之間是分開的,只有同一個Vcluster中的節(jié)點可以通過網絡互相訪問,即不同Vcluster的節(jié)點無法彼此影響。在實現(xiàn)細節(jié)上,每個虛擬節(jié)點都是一個LXC容器。
Fig.2 User's perspective of Vcluster and workspace圖2 Vcluster和worksapce的用戶視角
Vcluster中的節(jié)點需要通過鏡像創(chuàng)建,Docklet使用的鏡像和虛擬機鏡像或Docker鏡像很相似。Docklet采用了一種簡單卻有效的技術來構建、分享和使用適用于不同條件的鏡像。如果需要向Docklet中添加對一種新框架的支持,用戶可以簡單地在一個節(jié)點中搭建好對應的軟件環(huán)境,然后將這個節(jié)點的快照保存為鏡像。用戶還可以在Docklet的所有用戶間共享這個鏡像,一旦一個鏡像被設置為共享,所有用戶都可以訪問并使用它。對于之后的用戶而言,共享鏡像使得應用的部署被大大簡化了。
圖3展示了Docklet的主要組成構件。Docklet使用了一個Web服務器來為用戶展示圖形界面,一個http服務器來處理發(fā)來的各種請求。圖中的Core指的是Docklet的核心,它包含一個master進程,若干個運行在每一臺物理機上處理具體工作的worker進程,搭建網絡基礎設施的網絡構件,以及遠程過程調用(remote procedure call,RPC)構件。在系統(tǒng)的更底層,ETCD(https://coreos.com/etcd/docs)被用來存儲系統(tǒng)運行中產生的信息,分布式文件系統(tǒng)被用于存儲用戶的磁盤數(shù)據(jù)。
Fig.3 Architecture of Docklet圖3 Docklet的結構
在物理層面上,Docklet服務器分為計算服務器和存儲服務器,計算服務器提供處理器、內存等計算資源和一小部分存儲資源(通常被軟件運行環(huán)境占用),而存儲服務器提供絕大多數(shù)的存儲資源。這樣計算和存儲分離的設計適合中小規(guī)模的集群,可以使得Docklet具有較好的彈性伸縮能力和較靈活的系統(tǒng)擴展能力。與此同時,存儲對于用戶而言是透明的,用戶無需關心計算節(jié)點中數(shù)據(jù)的存儲位置。目前,本文使用GlusterFS(http://www.gluster.org)作為底層的分布式文件系統(tǒng),其他能達到同樣功能的文件系統(tǒng)(如Ceph)也可以用于Docklet中。
當master進程接收到創(chuàng)建Vcluster請求時,會根據(jù)物理資源的狀態(tài)和已有Vcluster的負載決定新的Vcluster的部署位置。當Docklet已準備好創(chuàng)建一個Vcluster后,它會將創(chuàng)建容器的參數(shù)傳遞給合適的worker,然后開始構造該Vcluster的網絡結構,Docklet的網絡構件會保障該Vcluster容器間的正常通信。鏡像的保存則使用了邏輯卷管理(logical volume manager,LVM)和AUFS(advanced multi-layered unification filesystem,以UNIONFS[13]為原理),以便容器可以被方便地保存和在用戶間共享、重現(xiàn),而monitor模塊主要負責展示物理資源和虛擬集群的運行狀況。
在Docklet中,用戶可以在瀏覽器中創(chuàng)建一個彈性的、動態(tài)的、無需額外配置就可以開始運行所需任務的虛擬集群(例如,創(chuàng)建集群之后直接運行Spark作業(yè))。該集群可以隨時停止或重啟,也可以被分享給系統(tǒng)內的其他用戶。當作業(yè)運行時,用戶通過一個網頁了解到集群的各種狀態(tài)。作業(yè)完成后,邏輯集群就可以被刪除并釋放所占用的資源。
對每個workspace而言,Docklet提供一個門戶來讓用戶可以從外部網絡直接訪問Vcluster的內部節(jié)點。在目前版本中,使用了一個開源項目Jupyter來實現(xiàn)在瀏覽器中遠程操作節(jié)點的功能。
4.2 Docklet的特點
Docklet有如下特點:
(1)隔離性。Docklet采取了很多措施,防止單個節(jié)點出現(xiàn)問題時可能影響到其他節(jié)點和外部環(huán)境的情況出現(xiàn),這些措施包括CGroup、Capacity Drop、Namespace、NetFilter、Apparmor、Filesystem Quota等。
(2)高效性。單臺物理機可以被多個用戶的Vcluster中的節(jié)點共享,這有利于在資源有限的情況下高效利用計算資源。
(3)簡單性。對用戶而言在Docklet上部署基于集群的應用是十分快捷的,因為Docklet將其中許多復雜單調的工作,例如子網配置、數(shù)據(jù)共享空間、SSH公私鑰配置,簡化或自動完成了。
(4)透明性。無論虛擬節(jié)點在哪一臺物理機上,有沒有被遷移,從外部來看,該節(jié)點的IP地址、根文件系統(tǒng)和共享數(shù)據(jù)等參數(shù)都不會發(fā)生變化。
4.3 接口設計
為了方便內部修改與外部擴展,Docklet的應用程序編程接口(application programming interface,API)是按照RESTful風格設計的,以下列出了一些重要的API。對于這些API來說,返回類型都是“application/json”。
4.4 虛擬網絡
Docklet的虛擬集群Vcluster各個節(jié)點要求是能在一個虛擬網絡子網中,彼此互相聯(lián)通,從而像物理集群一樣可安裝運行分布式應用。Docklet的虛擬網絡功能大部分建立在OpenVSwitch(http://openvswitch.org/support/dist-docs/)與iptables的基礎上,OpenVSwitch是OpenFlow[14]技術的開源實現(xiàn),在Docklet中主要被用來建立虛擬子網。網絡模塊給同一個Vcluster中的節(jié)點提供一個透明的虛擬子網,讓它們看起來出于同一個真正的局域網中。Docklet的網絡結構如圖4所示,各個宿主機間建立了連接容器的GRE(generic routing encapsulation)通道,這些通道無需額外的網絡設備支持。當一個Vcluster準備被創(chuàng)建時,Docklet會建立一個子網,該Vcluster中的容器會在這個子網下生成,同時Docklet會配置好SSH公鑰和私鑰,使得容器間可以彼此免密碼登錄。
Fig.4 Docklet network on multi-hosts圖4 多宿主機網絡結構
為了展示Docklet的特性和使用效果,本文在真實環(huán)境的物理機下進行了一些實驗。以下的實驗與評估都基于3臺擁有400 GB物理內存,32核CPU(Xeon E5-2670 2.60 GHz)的裝有Docklet的物理機。Docklet配置每個容器使用1個CPU和4 GB的內存。此外,該物理集群中還包括額外的3臺用作全局NFS存儲的機器,每臺機器擁有3 TB的RAID5磁盤陣列(redundant arrays of independent disks,RAID)。
5.1 樣例:Spark作業(yè)
該實例展示了在Docklet上部署Spark的過程,如圖5所示。登錄Docklet后,創(chuàng)建新的workspace,此時該workspace里默認有1個節(jié)點。之后,將該workspace擴展到3個節(jié)點,其中的Vcluster含有3個節(jié)點,它們的名字分別是系統(tǒng)默認的host-0、host-1、host-2。使用Jupyter進入host-0之后,執(zhí)行如下的腳本。Spark的運行狀態(tài)可以從Docklet提供的代理鏈接中查看。
Start scripts for Spark
root@host-0:~#cd/home/spark
root@host-0:/home/spark#./sbin/start-master.sh
root@host-0:/home/spark#ssh root@host-1/home/spark/sbin/start-slave.sh spark://host-0:7077
root@host-0:/home/spark#ssh root@host-2/home/spark/sbin/start-slave.sh spark://host-0:7077
root@host-0:/home/spark#./bin/spark-submit--master spark://host-0:7077 examples/src/main/python/pi.py 10
Fig.5 Spark example圖5 Spark樣例
5.2 樣例:MPI作業(yè)
MPI也可以在Docklet上方便地運行,集群的配置方法同Spark的例子,在host-0中執(zhí)行如下腳本就可以開始MPI作業(yè)(假設MPI程序是program.cpp)。
Start scripts for MPI
root@host-0:~#cd/nfs
root@host-0:/nfs#mpic++./program.cpp-o mpi.bin
root@host-0:/nfs#mpiexec-hosts host-0,host-1,host-2-n 6./mpi.bin〉/nfs/result.out
5.3 評估:I/O密集型作業(yè)
本實驗中,在Docklet上測試了I/O密集型的Map-Reduce任務,一個處理GlusterFS中14 GB/37 GB數(shù)據(jù)的并行word count程序。GlusterFS和Docklet節(jié)點間的數(shù)據(jù)交換完全通過TCP/IP網絡進行。表1展示了該實驗在I/O任務中產生的結果??梢钥闯?,Docklet實現(xiàn)了應有的并行效果。
Table1 Speedup of I/O jobs with scalable working nodes表1 可伸縮工作節(jié)點進行I/O工作的加速比
5.4 評估:彈性測試
本實驗中,通過一個Spark PageRank作業(yè)來測試Docklet的彈性表現(xiàn)。由于每個super-step的計算復雜度基本都是相等且穩(wěn)定的,每個super-step花費的時間基本隨工作節(jié)點數(shù)量的上升而下降,Docklet的彈性管理器(在集群擴展或收縮的時候被調用)會在固定的時間改變集群的工作節(jié)點數(shù)量。圖6展示了該作業(yè)的運行效率與Vcluster中節(jié)點數(shù)量的關系。值得注意的是,新加入的Spark slave需要花10s左右的時間來初始化并準備運行作業(yè),而釋放節(jié)點會立即降低Spark的運算效率。由此可知,Docklet實現(xiàn)了基本的彈性控制。
Fig.6 Correlation of Vcluster size and performance圖6 虛擬集群規(guī)模與運算性能的關系
5.5 評估:網絡性能測試
本測試中,測試結果均基于傳統(tǒng)的路由器和交換機,并未使用額外的高級硬件,網絡結構如圖7所示,測量了物理機與物理機,物理機與容器,容器與容器之間的網絡吞吐量。此外,容器間的網橋采用OpenVSwitch(v2.4.0)GRE通道(圖中的ovs-bridge),OpenVSwitch設備的MTU值被設置為1 420。
Fig.7 Topology of testing environment圖7 網絡測試環(huán)境結構
P0、P1、P2代表物理機(physical host),C0a、C0b、C1、C2代表容器(container)。表2展示了網絡吞吐量和網絡傳輸過程中的ovs-bridge之間的關系。實驗證明,當前版本基于傳統(tǒng)硬件OpenVSwitch,效率并不高,之后可以用VLAN或SDN[15]優(yōu)化的芯片來提升效率。
Table2 Data transmission throughput between nodes表2 各節(jié)點間網絡吞吐量
本文提出了一種私有云環(huán)境下基于虛擬集群的資源共享方法ClaaS,介紹了支持ClaaS的Docklet系統(tǒng)及其實現(xiàn),該系統(tǒng)兼有OpenStack與Mesos這兩種方法的優(yōu)點,為應用框架提供了可擴展性、兼容性以及軟件定義的方法。
ClaaS是一種方便易用的在不同應用框架之間共享集群的方法,它大大簡化了部署和配置各種應用,特別是分布式應用的過程,還提供了多用戶支持與隨時重建應用所需環(huán)境的功能。Docklet平臺可以生成獨立于硬件結構的虛擬集群,并利用設計好的特殊機制讓其中的容器更好地工作。
未來的工作包括兩點:一是更加智能的負載均衡算法,可以使得Docklet根據(jù)物理資源的當前狀態(tài)及歷史狀態(tài)找出資源使用率變化的規(guī)律,從而更好地調整容器分布,提高資源利用率;二是更加高效的彈性伸縮,在獲取全局狀態(tài)的前提下對縱向和橫向的彈性伸縮進行更好的支持,從而優(yōu)化整個物理集群的狀態(tài)。
[1]Cheng Xueqi,Jin Xiaolong,Wang Yuanzhuo,et al.Survey on big data system and analytic technology[J].Journal of Software,2014,25(9):1889-1908.
[2]Lu Xicheng,Wang Huaimin,Wang Ji.Internet virtual computing environment-iVCE:concept and architecture[J].Science in China:Series E Information Sciences,2006,36(10):1081-1099.
[3]Zhan Hanglong,Cao Donggang,Xie Bing.Graph processing framework supporting elastic scalability in distributed shared environment[J].Journal of Frontiers of Computer Science and Technology,2016,10(7):901-914.
[4]HindmanB,KonwinskiA,Zaharia M,et al.Mesos:a platform for fine-grained resource sharing in the data center[C]//Proceedings of the 8th USENIX Conference on Networked Systems Design and Implementation,Boston,USA,Mar 30-Apr 1,2011.Berkeley,USA:USENIX Association,2011:295-308.
[5]VermaA,Pedrosa L,Korupolu M,et al.Large-scale cluster management at Google with Borg[C]//Proceedings of the 10th European Conference on Computer Systems,Bordeaux,France,Apr 21-24,2015.New York:ACM,2015:18.
[6]Boutin E,Ekanayake J,Lin Wei,et al.Apollo:scalable and coordinated scheduling for cloud-scale computing[C]//Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation,Broomfield,USA,Oct 6-8,2014.Berkeley,USA:USENIX Association,2014:285-300.
[7]Schwarzkopf M,KonwinskiA,Abd-El-Malek M,et al.Omega:flexible,scalable schedulers for large compute clusters[C]//Proceedings of the 8th ACM European Conference on Computer Systems,Prague,Czech Republic,Apr 14-17,2013.New York:ACM,2013:351-364.
[8]Bernstein D.Containers and cloud:from LXC to Docker to Kubernetes[J].IEEE Cloud Computing,2014,1(3):81-84.
[9]Felter W,FerreiraA,RajamonyR,et al.An updated performance comparison of virtual machines and Linux containers[J].Technology,2014,25482:171-172.
[10]D?litzscher F,Held M,Reich C,et al.ViteraaS:virtual cluster as a service[C]//Proceedings of the 3rd International Conference on Cloud Computing Technology and Science,Athens,Greece,Nov 29-Dec 1,2011.Washington:IEEE Computer Society,2011:652-657.
[11]Brock M,GoscinskiA.Atechnology to expose a cluster asa service in a cloud[C]//Proceedings of the 8th Australasian Symposium on Parallel and Distributed Computing,Brisbane,Australia,Jan 1,2010.Darlinghurst,Australia:Australian Computer Society,Inc,2010:3-12.
[12]OpenStack,NASA and Rackspace[EB/OL].[2016-07-23].http://docs.openstack.org.
[13]Quigley D,Sipek J,Wright C P,et al.Unionfs:user-and community-oriented development of a unification filesystem[C]//Proceedings of the 2006 Ottawa Linux Symposium,2006,2:349-362.
[14]McKeown N,Anderson T,Balakrishnan H,et al.OpenFlow:enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-74.
[15]Software-defined networking:the new norm for networks.Open Networking Foundation,2012.
附中文參考文獻:
[1]程學旗,靳小龍,王元卓,等.大數(shù)據(jù)系統(tǒng)和分析技術綜述[J].軟件學報,2014,25(9):1889-1908.
[2]盧錫城,王懷民,王戟.虛擬計算環(huán)境iVCE:概念與體系結構[J].中國科學:E輯信息科學,2006,36(10):1081-1099.
[3]詹杭龍,曹東剛,謝冰.分布共享環(huán)境下支持彈性伸縮的圖處理框架[J].計算機科學與探索,2016,10(7):901-914.
Virtual Cluster Based Resource SharingApproach for Private Cloud Environment*
LIU Peidong1,2,AN Bo1,2,ZHONG Yehong1,2,WANG Hu1,2,CAO Donggang1,2+
1.Key Lab of High Confidence Software Technologies(Peking University),Ministry of Education,Beijing 100871,China
2.Peking University Information Technology Institute(Tianjin Binhai),Tianjin 300450,China
+Corresponding author:E-mail:caodg@pku.edu.cn
LIU Peidong,AN Bo,ZHONG Yehong,et al.Virtual cluster based resource sharing approach for private cloud environment.Journal of Frontiers of Computer Science and Technology,2017,11(8):1204-1213.
With the rapid development of cloud computing and big data processing,an increasing number of application frameworks are being considered to run in a“cloud way”.This development brings about several challenges to the enterprise private cloud computing platform,e.g.,sharing limited cluster resources effectively among different frameworks and users,being able to run most existing heterogeneous applications,as well as providing scalability and elasticity support for newly emerged frameworks.This paper proposes a new service model,namely,cluster as a service(ClaaS),which is suitable for medium and small-sized data centers to solve these problems in a relatively easy and general way.The idea behind this model is to virtualize the cluster environment for distributed application frameworks.Most applications can directly run in the virtual cluster environment without any modification,which is a great advantage.Based on lightweight containers and software-defined network,this paper implements an opensource system of ClaaS named Docklet to prove the feasibility of this service model.Docklet is able to distribute resources to users according to their needs,support frameworks like Spark,MPI,and languages like Python,R andJava.Moreover,Docklet is now used to provide and deploy services in real scenarios of teaching and researching.Finally,this paper describes the design and implementation of this system,then presents several examples and evaluates the entire system.
cloud computing;virtual cluster;ClaaS;software definition
ang was born in 1975.He
the Ph.D.degree from School of Electronics Engineering and Computer Science,Peking University in 2004.Now he is an associate professor at Software Engineering Institute,School of Electronics Engineering and Computer Science,Peking University,and the senior member of CCF.His research interests include system software,parallel and distributed computing,etc. 曹東剛(1975—),男,山東威海人,2004年于北京大學信息科學技術學院獲得博士學位,現(xiàn)為北京大學軟件工程研究所副教授,CCF高級會員,主要研究領域為系統(tǒng)軟件,并行計算與分布式計算等。
LIU Peidong was born in 1995.He is an M.S.candidate at Software Engineering Institute,Peking University.His research interests include big data,system software,parallel and distributed computing,etc.劉沛東(1995—),男,江西新余人,北京大學碩士研究生,主要研究領域為大數(shù)據(jù),系統(tǒng)軟件,并行計算與分布式計算等。
AN Bo was born in 1992.He is a Ph.D.candidate at Software Engineering Institute,Peking University.His research interests include cloud computing,system software and distributed computing,etc.安博(1992—),男,陜西榆林人,北京大學博士研究生,主要研究領域為云計算,系統(tǒng)軟件,分布式計算等。
ZHONG Yehong was born in 1994.He is an M.S.candidate at Software Engineering Institute,Peking University.His research interests include operating system,big data,distributed computing and cloud computing,etc.鐘業(yè)弘(1994—),男,海南文昌人,北京大學碩士研究生,主要研究領域為操作系統(tǒng),大數(shù)據(jù),分布式計算與云計算等。
WANG Hu was born in 1989.He is an M.S.candidate at Software Engineering Institute,Peking University.His research interests include big data,system software,parallel and distributed computing,etc.王虎(1989—),男,河南南陽人,北京大學碩士研究生,主要研究領域為大數(shù)據(jù),系統(tǒng)軟件,并行計算與分布式計算等。
A
:TP391
*The National Natural Science Foundation of China under Grant Nos.61272154,61421091(國家自然科學基金);the National Science and Technology Major Project of China under Grant No.2016YFB1000105(國家重點研發(fā)計劃).
Received 2016-09,Accepted 2016-11.
CNKI網絡優(yōu)先出版:2016-11-11,http://www.cnki.net/kcms/detail/11.5602.TP.20161111.1627.004.html
ISSN 1673-9418 CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology 1673-9418/2017/11(08)-1204-10
10.3778/j.issn.1673-9418.1609030
E-mail:fcst@vip.163.com
http://www.ceaj.org
Tel:+86-10-89056056