Cgroups在云計算中的應用

作者: lisperl  來源: 博客園  發布時間: 2013-07-28 12:42  閱讀: 1171 次  推薦: 0   原文鏈接   [收藏]  

  云計算是目前計算機業界熱門的方向,Cgroups作為一種有效的資源管理方案在云計算中得到越來越大的應用。下面簡要介紹一下Cgroups在云計算中一些應用,歡迎補充。

  首先,我們看一下Cgroups的娘家Google(Cgroups最早是Google工程師提出的)。在推出PaaS產品GAE幾年后,Google終于推出了自己的IaaS的產品Google Compute Engine,跟Amazon進行全面的競爭。跟Amazon EC2采用Xen虛擬機不同的是,GCE采用的KVM虛擬機。KVM虛擬機是一種將Linux內核當成Hypervisor的虛擬化技術,一個KVM虛擬機作為一個進程運行在Linux 內核上。由于KVM虛擬機是Linux的一個進程,因此Google采用了Cgroups機制來進行資源管理,控制每個KVM虛擬機可以使用的物理資源,報告CPU占用率,CPU核心,內存等。下面Google IO 2012的圖可以說明這一點:

  然后我們再來看Redhat的OpenShift。OpenShift是Redhat推出的PaaS產品。PaaS主要服務之一就是為App提供一個運行環境。為了保證服務質量,PaaS廠商都會采取一定的技術手段,保證不同的App之間不會互相影響。因此,App的運行環境一般是隔離,資源受控的。Cgroups作為一種資源管理方案,這里正是用武之地。

  下面我們來一下Redhat官方doc上的一段話:

The basic PaaS resource container is called a gear, which uses Security-enhanced Linux (SELinux), control groups (cgroups), quotas, and other Linux technologies to limit the amount of memory and disk available to what is called a cartridge。

  cartridge是OpenShift為App提供的運行環境,而cartridge本身是出于一個叫gear的資源容器中的。而redhat則是通過selinux、Cgroups和quotas來構建這樣一個安全隔離、資源受控的資源容器的。

  最后我們再來看vmware的Cloud Foundry。Cloud Foundry是vmware推出的PaaS產品。Cloud Foundry中,DEA是App的運行環境,全稱是DropletExecution Agent。一臺虛擬機上會運行一個或多個DEA。一個DEA可以啟動多個App(又稱Droplet)。最初的時候,DEA是沒有采用任何隔離手段的,用戶的App是原生跑在機器上的。后來他們開發出了Warden,一個程序運行容器。這個容器提供了一個孤立的環境,Droplet只可以獲得受限的CPU,內存,磁盤訪問權限,網絡權限。而Warden在Linux上的實現的底層機制就是Cgroups。利用Cgroups管理App可以使用的物理資源。

  總結一下,Cgroups作為一種資源管理手段,可以在云計算的多個應用場景使用。

  由于Cgroups是Linux內核提供的一種機制,開銷很小,也不要對內核打額外的補丁,使用起來也很方便。對于IaaS廠商來說,需要強隔離,高靈活性(滿足用戶安裝各種OS的需求),基于容器的虛擬化技術不能很好地滿足要求,Cgroups卻可以提供很好的資源控制,再結合傳統系統虛擬化技術也能提供很好的解決方案,就如同GCE一樣。

  而對于PaaS廠商來說,只要是在一臺機器(無論是物理機還是虛擬機)上部署多個App,就需要多個相互隔離,資源受控的運行環境。現在主流的PaaS廠商基本上都是支持在一臺機器上部署多個App(Amazon Elastic Beanstalk是一個Instance上跑一個App,不需要考慮這個問題)。如果采用傳統的虛擬化技術則有較大的開銷,而有些PaaS本身就構建在IaaS提供的虛擬機上(這樣以來虛擬化開銷更大),因此必須考慮更輕量級的方案。基于容器的虛擬化技術正是這樣一種選擇,既能提供隔離性,又能進行資源控制,而且虛擬化開銷很小。

0
0
 
標簽:云計算
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()