劉沛東,安 博,鐘業弘,王 虎,曹東剛+
1.北京大學 高可信軟件技術教育部重點實驗室,北京 100871
2.北京大學(天津濱海)新一代信息技術研究院,天津 300450
私有云環境下基于虛擬集群的資源共享方法*
劉沛東1,2,安 博1,2,鐘業弘1,2,王 虎1,2,曹東剛1,2+
1.北京大學 高可信軟件技術教育部重點實驗室,北京 100871
2.北京大學(天津濱海)新一代信息技術研究院,天津 300450
隨著云計算與大數據處理的飛速發展,越來越多的應用框架開始使用“云”的方式運行,這對企業私有云平臺提出了一些重要挑戰:如何讓私有云環境有限的物理資源支持多個應用框架和多個用戶,不僅能保證絕大多數現有的異構應用同時運行,還能為新應用提供擴展性與彈性支持。提出了一種新的服務模型ClaaS(cluster as a service),用一種簡單而易于實現的方式為中小規模的數據中心解決了上述問題。ClaaS的主要思路是將虛擬化的單位擴展為集群,為分布式的應用框架直接提供虛擬的集群環境。這樣,大部分的分布式應用就可以在無需任何修改的條件下直接運行在虛擬的集群環境中。為了驗證ClaaS的可行性,基于現有的輕量化容器技術和軟件定義網絡技術等實現了一個開源輕量級私有云系統Docklet,能夠支持用戶按需共享資源,支持Spark、MPI等各種計算框架,及Python、R、Java等語言,并在真實教學科研環境中提供、部署服務。最后描述了系統的設計與實現,并進行了實驗與評估。
云計算;虛擬機群;ClaaS;軟件定義
如今,伴隨數據規模的膨脹與數據使用方式的增加,在許多企業內部,需要運行的計算框架越來越多[1]。同時,應用框架本身的多樣性也隨著云計算和大數據處理技術的發展而快速上升。在當今的環境下 Hadoop(http://hadoop.apache.org)、Spark(http://spark.apache.org)、Storm(http://storm.apache.org)這樣的分布式應用框架占據主流地位,而MPI(http://www.mpi-forum.org/docs)和OpenMP(http://openmp.org/wp/)這樣的傳統分布式或并行應用框架也扮演著相當重要的角色。分析這些使用計算資源的方式,不難發現它們的一些共性,其中最為重要的就是它們都需要依托集群資源來使得計算效率最大化。然而,許多中小型的企業和組織只擁有有限的計算資源,對他們而言,為每一個需要運行的應用框架單獨配置集群花銷巨大且浪費資源,幾乎不可能實現。因此,他們迫切需要一種簡單而高效的方法來在各種應用框架之間共享計算資源,解決資源共享率低和資源浪費的問題[2],在滿足運算需求的前提下減少在計算資源方面的開銷。此外,同一個機構下的不同用戶出于各種原因也會需要同一個計算框架的不同副本。例如,A用戶在運行版本1的Spark的同時,另一個用戶B需要同時運行版本2的Spark,這就需要為計算資源提供多用戶和多實例的支持。
目前,在同一個物理集群中為不同框架提供計算資源方面已經有了一些解決方案[3]。Mesos[4]是其中有代表性的一種,它通過合理地封裝、調度資源,提供了一套可行的共享資源方法。然而,Mesos對于不包括在它支持列表里的計算框架而言不夠靈活,甚至需要使用者編寫新的調度代碼來使得這些框架運行在Mesos上。例如,在Mesos上運行MPI程序就需要用戶額外編寫一個調度腳本,這對不夠精通Mesos的使用者而言是一個相當大的負擔。而且在Mesos中,用戶通常共享同一框架的同一個實例,讓不同用戶出于各種原因(比如安全性)運行同一框架的不同實例有時是非常困難的。而Borg[5]、Apollo[6]、Omega[7]這樣的系統又過于專有化,需要巨量的計算資源與定制化的應用,難以在中小型私有云中進行使用。
為了解決上述私有云環境下的資源共享問題,本文提出了ClaaS(cluster as a service)的概念。ClaaS的目標是構建一個可擴展的高效而易于使用的系統,這一系統可以向私有云中可信的用戶提供虛擬集群服務,能夠支持用戶按需共享資源。用戶可以方便地僅通過Web接口在線創建虛擬集群,在集群中運行Spark和MPI這樣的應用,而無需掌握有關新系統的復雜知識。與以往的解決方案最重大的不同是,ClaaS提供“虛擬集群即服務”,包括若干虛擬單位(虛擬機或容器)和網絡設施,而非單個的虛擬單位,作為一個單元。
ClaaS有如下的能力和優勢:其一,提供簡單可靠的資源管理與作業管理技術;其二,不同進程可以通過虛擬集群提供的可靠通信方法形成一個整體;其三,ClaaS系統會按需為每個計算框架構建一個虛擬的私有子網;最后,由于每個應用的負載在實際應用中不盡相同,ClaaS的虛擬集群提供可伸縮性以實現更高的資源利用率。
基于ClaaS的理念,開發了一個輕量的可擴展的云系統Docklet。為了減少中間過程的性能損耗,Docklet使用了Linux容器LXC(http://lxc.sourceforge.net/lxc.html)。LXC目前集成在Linux內核中,擁有封裝和隔離資源的功能[8]。相較于其他資源封裝手段,該項技術對于ClaaS而言更高效,更加適合私有云環境。同時,在Docklet中使用了軟件定義技術來幫助管理和虛擬化集群資源。對于多用途的應用,Docklet提供了簡單的Restful接口。Docklet可方便地支持Spark、Storm、MPI、Hadoop、MapReduce、HDFS、Akka、Erlang、RabbitMQ和Jupyter等應用,所有這些應用都可以簡單地通過瀏覽器訪問而無需額外部署軟件環境,這對于企業用戶而言是十分易于使用的。Docklet已經在多個教育科研環境進行了部署,提供教學實驗環境、大數據分析等服務,代碼在github開源(https://github.com/unias/docklet)。
本文組織結構如下:第2章敘述了相關工作;第3章描述了ClaaS模型和虛擬集群的概念;第4章描述了基于ClaaS模型的Docklet系統設計;第5章給出了一些實例和實驗;最后給出了一些結論,同時描述了未來的工作。
Mesos[4]是一個支持多框架共享物理資源的開源資源調度引擎,得到了廣泛的應用。但Mesos的一個問題是,并非所有應用都能簡單地代入Mesos中運行,讓Mesos支持新的框架是一件困難的工作,程序員需要編寫許多額外的代碼來完成這一目標。在最壞的情況下,程序員甚至需要調整應用框架的源代碼,使其適應Mesos。此外,Mesos還缺乏多用戶的隔離支持,比起提供ClaaS,它更專注于資源調度。在ClaaS中,通過使用軟件定義技術,新的應用框架可以很容易得到支持,同時ClaaS也提供多用戶支持。
ClaaS使用了Linux容器技術LXC。Felter等人[9]對比了傳統虛擬機和Linux容器間的性能差異,列出了二者性能損耗的細節。其實驗結果指出,幾乎在所有情況下,Linux容器在性能上等同于或超過傳統虛擬機。基于該實驗的結果,為了提升整體性能表現,本文在虛擬化方面放棄虛擬機而使用容器。Docker是另一種容器技術的封裝,本文沒有采用Docker而采用LXC技術的原因是Docker技術更復雜,而LXC更輕量簡單,適合本文面向的私有云環境。
Doelitzscher等人[10]描述了一個用于為私有云中的研究項目與機器學習任務按需提供高性能計算資源的云解決方案,該方案可以在需要時使用亞馬遜的公有云作為擴展資源池。Brock等人[11]也提出了在云設施中提供整個集群作為服務的概念。與以上工作不同的是,本文更專注于為任意不同的應用框架構建一個高效易用的ClaaS平臺,并支持靈活的資源調度。
OpenStack[12]是一個按節點分配資源、部署系統環境的開源私有云平臺,它在不改變程序源代碼和操作方式的條件下就能在同一集群里運行各種不同的應用框架。和ClaaS不同之處在于,它其實是使用虛擬機的方法隔離了資源,依舊是一次提供單個虛擬資源的模式,對于許多分布式的彈性的應用框架而言缺乏效率與擴展性。OpenStack工作在基礎設施即服務(infrastructure as a service,IaaS)層面,因此對于應用框架本身并不友好。使用類似OpenStack的工具構建、管理、使用一個虛擬云平臺是一件十分繁重而復雜的工作。
ClaaS不僅不同于提供單節點服務的IaaS,與對程序提供應用接口的平臺即服務(platform as a service,PaaS)也有很大的區別。它通過直接提供集群作為服務單元,描述了一種通用的定義不同應用的方法,同時為私有云環境下的應用實現了高兼容性、高效性與高擴展性支持。
3.1 Vcluster與它的優勢
ClaaS提供給用戶的是虛擬集群Vcluster(virtual cluster),每個Vcluster包括一系列分布式的同構的節點與連接它們的網絡設施,對于用戶而言Vcluster可以看成是物理集群環境,從而可以安裝運行自己所需要的分布式計算框架。在ClaaS中,使用者可以將不同的應用框架部署在不同的Vcluster中,這樣的設計有如下的優點:
(1)靈活性。Vcluster中的每個節點都提供和傳統虛擬機相似的環境,任何應用框架都可以簡單地移植到Vcluster中,通過創建新的Vcluster來支持和擴展。
(2)可擴展性。同一Vcluster中的不同節點可以透明地在不同物理機器上運行,由此使得單個應用框架可以利用不同位置的物理資源。
(3)伸縮性。每個Vcluster都允許內部的應用方便地控制工作節點的生存周期,這對應用自身通過調度實現彈性有著極大幫助。
(4)可定義性。Vcluster可以通過軟件定義技術描述和重建,用戶可以自定義分布式結構、遷移策略、運行腳本及其他特征,這使得Vcluster的使用十分靈活。同時,該特性獨立于硬件結構。
如圖1所示,ClaaS提供的這種服務模型使得它比在IaaS層面操作更有優勢,而且它在部署分布式框架時也能做到和PaaS模式類似。
3.2 ClaaS中的軟件定義技術
在虛擬化過程中,使用了軟件定義技術,利用靈活的軟件協議來代替固定的硬件設備。例如,軟件定義網絡、軟件定義存儲等。在Vcluster層面,同樣使用了這一類技術,本文稱之為軟件定義虛擬集群。軟件定義的虛擬集群需要用戶提供構建邏輯集群,處理集群狀態變化和執行內部應用的一些關鍵參數。

Fig.1 Multiple Vcluster for multiple tenants圖1 多租戶條件下的多個Vcluster
軟件定義虛擬集群有如下兩方面的優勢:
(1)簡化集群部署的復雜度。ClaaS的用戶無需單獨配置每一個節點,只需要提供一些簡單的策略來處理集群伸縮、節點恢復與節點遷移這樣的事件。
(2)簡化分布式設備的管理。Vcluster與其內部的應用可以隨時被方便、快捷而安全地共享或重現,這無疑同時減輕了管理員和用戶的學習與使用成本。
Docklet是設計用來支持ClaaS的平臺系統,它是一個開源項目(https://github.com/unias/docklet)。
Docklet是為擁有中小型數據中心的企業或科研機構設計的輕量級私有云平臺,使員工能方便地共享使用有限的計算資源。這些用戶通常有很多在物理機或虛擬機上工作的經驗,且不太愿意接受很高的時間花費去學習一套新系統的使用方法。人們希望Docklet提供的虛擬集群可以像用戶熟悉的傳統物理機或虛擬機一樣使用。同時,Docklet引入了一些方便用戶使用的新特性。例如,提供一份軟件定義的文檔,就可以迅速構建并重現一個特定的Vcluster,并在它啟動時自動運行指定的應用框架或服務。同時,還希望它可以在占用盡量少的物理資源的情況下表現良好。
除此之外,Docklet還要求Vcluster擁有彈性,以便使用Hadoop和Spark這樣的分布式程序或框架。在Docklet的設計中,用戶和Vcluster內部的程序都可以方便地控制Vcluster的規模。為了讓Docklet對擴展和外部監督更加開放,應該提供一套簡單易用的接口。在目前版本中,使用了HTTP協議下REST-ful風格的接口,以保證只需要瀏覽器就可以使用Docklet提供的服務。
4.1 結構設計
Docklet的用戶視圖見圖2。用戶通過工作空間(workspace)來訪問自己的資源,workspace就是包含用戶應用與數據的工作空間,在這個空間里,用戶可以進行運行應用、分析數據等操作。每個workspace在底層通過一個對應的Vcluster來支持,而Vcluster是Docklet進行資源管理的一個單元。一個Vcluster由一系列節點與連接它們的私有子網構成。用戶可以在瀏覽器中創建、刪除、重啟、擴展與收縮Vcluster來管理自己的資源。與此同時,每個workspace為用戶提供了一個Portal來訪問和操作Vcluster中的節點。每個節點之間是分開的,只有同一個Vcluster中的節點可以通過網絡互相訪問,即不同Vcluster的節點無法彼此影響。在實現細節上,每個虛擬節點都是一個LXC容器。

Fig.2 User's perspective of Vcluster and workspace圖2 Vcluster和worksapce的用戶視角
Vcluster中的節點需要通過鏡像創建,Docklet使用的鏡像和虛擬機鏡像或Docker鏡像很相似。Docklet采用了一種簡單卻有效的技術來構建、分享和使用適用于不同條件的鏡像。如果需要向Docklet中添加對一種新框架的支持,用戶可以簡單地在一個節點中搭建好對應的軟件環境,然后將這個節點的快照保存為鏡像。用戶還可以在Docklet的所有用戶間共享這個鏡像,一旦一個鏡像被設置為共享,所有用戶都可以訪問并使用它。對于之后的用戶而言,共享鏡像使得應用的部署被大大簡化了。
圖3展示了Docklet的主要組成構件。Docklet使用了一個Web服務器來為用戶展示圖形界面,一個http服務器來處理發來的各種請求。圖中的Core指的是Docklet的核心,它包含一個master進程,若干個運行在每一臺物理機上處理具體工作的worker進程,搭建網絡基礎設施的網絡構件,以及遠程過程調用(remote procedure call,RPC)構件。在系統的更底層,ETCD(https://coreos.com/etcd/docs)被用來存儲系統運行中產生的信息,分布式文件系統被用于存儲用戶的磁盤數據。

Fig.3 Architecture of Docklet圖3 Docklet的結構
在物理層面上,Docklet服務器分為計算服務器和存儲服務器,計算服務器提供處理器、內存等計算資源和一小部分存儲資源(通常被軟件運行環境占用),而存儲服務器提供絕大多數的存儲資源。這樣計算和存儲分離的設計適合中小規模的集群,可以使得Docklet具有較好的彈性伸縮能力和較靈活的系統擴展能力。與此同時,存儲對于用戶而言是透明的,用戶無需關心計算節點中數據的存儲位置。目前,本文使用GlusterFS(http://www.gluster.org)作為底層的分布式文件系統,其他能達到同樣功能的文件系統(如Ceph)也可以用于Docklet中。
當master進程接收到創建Vcluster請求時,會根據物理資源的狀態和已有Vcluster的負載決定新的Vcluster的部署位置。當Docklet已準備好創建一個Vcluster后,它會將創建容器的參數傳遞給合適的worker,然后開始構造該Vcluster的網絡結構,Docklet的網絡構件會保障該Vcluster容器間的正常通信。鏡像的保存則使用了邏輯卷管理(logical volume manager,LVM)和AUFS(advanced multi-layered unification filesystem,以UNIONFS[13]為原理),以便容器可以被方便地保存和在用戶間共享、重現,而monitor模塊主要負責展示物理資源和虛擬集群的運行狀況。
在Docklet中,用戶可以在瀏覽器中創建一個彈性的、動態的、無需額外配置就可以開始運行所需任務的虛擬集群(例如,創建集群之后直接運行Spark作業)。該集群可以隨時停止或重啟,也可以被分享給系統內的其他用戶。當作業運行時,用戶通過一個網頁了解到集群的各種狀態。作業完成后,邏輯集群就可以被刪除并釋放所占用的資源。
對每個workspace而言,Docklet提供一個門戶來讓用戶可以從外部網絡直接訪問Vcluster的內部節點。在目前版本中,使用了一個開源項目Jupyter來實現在瀏覽器中遠程操作節點的功能。
4.2 Docklet的特點
Docklet有如下特點:
(1)隔離性。Docklet采取了很多措施,防止單個節點出現問題時可能影響到其他節點和外部環境的情況出現,這些措施包括CGroup、Capacity Drop、Namespace、NetFilter、Apparmor、Filesystem Quota等。
(2)高效性。單臺物理機可以被多個用戶的Vcluster中的節點共享,這有利于在資源有限的情況下高效利用計算資源。
(3)簡單性。對用戶而言在Docklet上部署基于集群的應用是十分快捷的,因為Docklet將其中許多復雜單調的工作,例如子網配置、數據共享空間、SSH公私鑰配置,簡化或自動完成了。
(4)透明性。無論虛擬節點在哪一臺物理機上,有沒有被遷移,從外部來看,該節點的IP地址、根文件系統和共享數據等參數都不會發生變化。
4.3 接口設計
為了方便內部修改與外部擴展,Docklet的應用程序編程接口(application programming interface,API)是按照RESTful風格設計的,以下列出了一些重要的API。對于這些API來說,返回類型都是“application/json”。


4.4 虛擬網絡
Docklet的虛擬集群Vcluster各個節點要求是能在一個虛擬網絡子網中,彼此互相聯通,從而像物理集群一樣可安裝運行分布式應用。Docklet的虛擬網絡功能大部分建立在OpenVSwitch(http://openvswitch.org/support/dist-docs/)與iptables的基礎上,OpenVSwitch是OpenFlow[14]技術的開源實現,在Docklet中主要被用來建立虛擬子網。網絡模塊給同一個Vcluster中的節點提供一個透明的虛擬子網,讓它們看起來出于同一個真正的局域網中。Docklet的網絡結構如圖4所示,各個宿主機間建立了連接容器的GRE(generic routing encapsulation)通道,這些通道無需額外的網絡設備支持。當一個Vcluster準備被創建時,Docklet會建立一個子網,該Vcluster中的容器會在這個子網下生成,同時Docklet會配置好SSH公鑰和私鑰,使得容器間可以彼此免密碼登錄。

Fig.4 Docklet network on multi-hosts圖4 多宿主機網絡結構
為了展示Docklet的特性和使用效果,本文在真實環境的物理機下進行了一些實驗。以下的實驗與評估都基于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作業
該實例展示了在Docklet上部署Spark的過程,如圖5所示。登錄Docklet后,創建新的workspace,此時該workspace里默認有1個節點。之后,將該workspace擴展到3個節點,其中的Vcluster含有3個節點,它們的名字分別是系統默認的host-0、host-1、host-2。使用Jupyter進入host-0之后,執行如下的腳本。Spark的運行狀態可以從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作業
MPI也可以在Docklet上方便地運行,集群的配置方法同Spark的例子,在host-0中執行如下腳本就可以開始MPI作業(假設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密集型作業
本實驗中,在Docklet上測試了I/O密集型的Map-Reduce任務,一個處理GlusterFS中14 GB/37 GB數據的并行word count程序。GlusterFS和Docklet節點間的數據交換完全通過TCP/IP網絡進行。表1展示了該實驗在I/O任務中產生的結果。可以看出,Docklet實現了應有的并行效果。

Table1 Speedup of I/O jobs with scalable working nodes表1 可伸縮工作節點進行I/O工作的加速比
5.4 評估:彈性測試
本實驗中,通過一個Spark PageRank作業來測試Docklet的彈性表現。由于每個super-step的計算復雜度基本都是相等且穩定的,每個super-step花費的時間基本隨工作節點數量的上升而下降,Docklet的彈性管理器(在集群擴展或收縮的時候被調用)會在固定的時間改變集群的工作節點數量。圖6展示了該作業的運行效率與Vcluster中節點數量的關系。值得注意的是,新加入的Spark slave需要花10s左右的時間來初始化并準備運行作業,而釋放節點會立即降低Spark的運算效率。由此可知,Docklet實現了基本的彈性控制。

Fig.6 Correlation of Vcluster size and performance圖6 虛擬集群規模與運算性能的關系
5.5 評估:網絡性能測試
本測試中,測試結果均基于傳統的路由器和交換機,并未使用額外的高級硬件,網絡結構如圖7所示,測量了物理機與物理機,物理機與容器,容器與容器之間的網絡吞吐量。此外,容器間的網橋采用OpenVSwitch(v2.4.0)GRE通道(圖中的ovs-bridge),OpenVSwitch設備的MTU值被設置為1 420。

Fig.7 Topology of testing environment圖7 網絡測試環境結構
P0、P1、P2代表物理機(physical host),C0a、C0b、C1、C2代表容器(container)。表2展示了網絡吞吐量和網絡傳輸過程中的ovs-bridge之間的關系。實驗證明,當前版本基于傳統硬件OpenVSwitch,效率并不高,之后可以用VLAN或SDN[15]優化的芯片來提升效率。

Table2 Data transmission throughput between nodes表2 各節點間網絡吞吐量
本文提出了一種私有云環境下基于虛擬集群的資源共享方法ClaaS,介紹了支持ClaaS的Docklet系統及其實現,該系統兼有OpenStack與Mesos這兩種方法的優點,為應用框架提供了可擴展性、兼容性以及軟件定義的方法。
ClaaS是一種方便易用的在不同應用框架之間共享集群的方法,它大大簡化了部署和配置各種應用,特別是分布式應用的過程,還提供了多用戶支持與隨時重建應用所需環境的功能。Docklet平臺可以生成獨立于硬件結構的虛擬集群,并利用設計好的特殊機制讓其中的容器更好地工作。
未來的工作包括兩點:一是更加智能的負載均衡算法,可以使得Docklet根據物理資源的當前狀態及歷史狀態找出資源使用率變化的規律,從而更好地調整容器分布,提高資源利用率;二是更加高效的彈性伸縮,在獲取全局狀態的前提下對縱向和橫向的彈性伸縮進行更好的支持,從而優化整個物理集群的狀態。
[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]程學旗,靳小龍,王元卓,等.大數據系統和分析技術綜述[J].軟件學報,2014,25(9):1889-1908.
[2]盧錫城,王懷民,王戟.虛擬計算環境iVCE:概念與體系結構[J].中國科學:E輯信息科學,2006,36(10):1081-1099.
[3]詹杭龍,曹東剛,謝冰.分布共享環境下支持彈性伸縮的圖處理框架[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年于北京大學信息科學技術學院獲得博士學位,現為北京大學軟件工程研究所副教授,CCF高級會員,主要研究領域為系統軟件,并行計算與分布式計算等。

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—),男,江西新余人,北京大學碩士研究生,主要研究領域為大數據,系統軟件,并行計算與分布式計算等。

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—),男,陜西榆林人,北京大學博士研究生,主要研究領域為云計算,系統軟件,分布式計算等。

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.鐘業弘(1994—),男,海南文昌人,北京大學碩士研究生,主要研究領域為操作系統,大數據,分布式計算與云計算等。

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—),男,河南南陽人,北京大學碩士研究生,主要研究領域為大數據,系統軟件,并行計算與分布式計算等。
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(國家重點研發計劃).
Received 2016-09,Accepted 2016-11.
CNKI網絡優先出版: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