Apache StratOS Cartridges 介紹及部署方式

Cartridge

簡介

Cartridge是一個基於IaaS 的虛擬機 (VM),其中包含了和Stratos PaaS進行交互的組件。Stratos 提供了在OpenStack和Amazon EC2上開箱即用的PHP,MySQL和Tomcat等cartridge。此外,Strato支持任何可插拔的cartridge,包括以下幾類︰數據、負載平衡器、應用框架和應用程序。Cartridg因操作系統 (OS) 和 IaaS 不同而不同,因此,你需要爲每個OS 和 IaaS 創建自定義的Cartridge。Stratos中所有的cartridge都爲雲應用程序提供了非常安全OS級的隔離環境。cartridge可以運行於兩種模式 :單租戶模式和多租戶模式。Cartridge的類型不同源於創建它的方法:通用Cartridge和完全配置Cartridge。如果需要,您可以使用配置工具(如Puppet、Chef等)使得cartridge創建過程自動化。

Cartridge實例

在一個運行的Stratos環境中,每個虛擬機(VM)或Docker容器被認爲是一個cartridge實例。

Cartridge模式

可以用單租戶或多租戶方式來創建cartridge,在下面的小節闡述了這些cartridge類型

單租戶cartridge

在Apache Stratos中,單租戶應用程序部署時,其中包含了一個或多個單租戶cartridge。租戶用戶登錄到應用程序,系統爲應用程序中的每個cartridge創建單獨的cartridge實例,從而,提供用戶進程級別的隔離,並提供用戶專用的實例。單租戶用戶可以映射到一個或多個cartridge實例

wKiom1fBOuLRaxerAAA4SKvAyxE169.jpg-wh_50

多租戶cartridge

在 Stratos中,多租戶應用程序包含一個或多個多租戶cartridge,允許多個租戶共享單個cartridge實例。即使租戶用戶共享單個cartridge實例,用戶的處理也是由隔離的程序代碼安全地單獨處理的。用戶必須註冊到應用程序後,才能夠使用該應用程序。

wKioL1fBO0DQFhfZAAA2HQ6CQkE896.jpg-wh_50

Cartridge創建方式

Apache Stratos允許DevOps使用完全配置cartridge方式或通用cartridge方式來創建cartridge。上述提到的cartridge創建方式,在下面的小節中法進行解釋和分析。

通用cartridge

通用cartridge是指在生成一個cartridge實例後,在已運行的情況下,在cartridge實例中安裝所需的軟件。通用cartridge是一個只含基礎操作系統(OS)鏡像和預裝有安裝腳本的Puppet代理 (PA)的cartridge。創建一個cartridge所涉及的具體步驟取決於所使用 IaaS。有關創建一個cartridge的詳細信息,請參閱創建一個新的cartridge章節。


如何工作?

當用戶註冊到應用,該應用具有一個或多個通用cartridge,雲控制器將加載的基礎數據發送到 IaaS,接着IaaS使用和應用對應的通用cartridge快照來啓動cartridge實例。在cartridge實例啓動時,啓動腳本 (例如,init.sh) 在cartridge內的自動執行,並且啓動Puppet代理程序,Pupput代理將和Puppet主節點交互,然後,在cartridge中安裝cartridge代理和所需軟件。此後,cartridge代理與Stratos交互,來執行所需的操作。


完全配置cartridge

完全配置cartridge也可認爲是預先配置cartridge,其中所有的軟件和配置都事先預製好了。完全配置的cartridge包括基礎的操作系統 (OS)鏡像,安裝腳本,所需的軟件,Puppet代理 (PA) 和cartridge代理 (CA)。Puppet代理將與Puppet主節點交互,當實例中的軟件和Puppet主節點上軟件之間有區別時,獲取所需的軟件更新。創建一個cartridge所涉及的具體步驟取決於所使用的IaaS。有關創建一個cartridge的詳細信息,請參閱創建一個新的cartridge章節。

wKioL1fBPSfgC8qzAAkLSsN_0VU263.jpg-wh_50

如何工作?

當用戶註冊到應用,該應用具有一個或多個預先配置的cartridge,雲控制器將加載的基礎數據發送到 IaaS,接着IaaS使用和應用對應的預先配置cartridge快照來啓動cartridge實例。在cartridge實例啓動時,啓動腳本 (例如,init.sh) 在cartridge內的自動執行,並且啓動cartridge代理程序,cartridge代理和Stratos交互,來執行所需的操作。Puppet代理只與Puppet主節點交互,獲取所需的軟件更新。

 

總體比較

Apache Stratos提供的兩種cartridge的創建方法,各有優缺點。因此,DevOps 根據其組織的需要,選擇最合適的cartridg創建方法。

所有的應用程序和配置已預先配置的完全配置cartridge方式,DevOps可以比通用cartridge方式更快地生成cartridge實例。然而,由於通用cartridge並不擁有任何特定的應用程序和配置,DevOps可以使用同一cartridge生成不同類型的cartridge實例,而不需要爲每個cartridge類型創建單獨的cartridge鏡像。

若要了解如何在虛擬機和Docker上創建一個cartridge,請參閱創建一個新的cartridge章節。


Cartridge部署

最初,當添加一個cartridge,DevOps必須通過CLI、 Web UI 或 REST API使用cartridge.json來定義cartridge,並將其發送到 Stratos管理器。此後,Stratos管理器發送cartridge定義到雲控制器 (CC)要求添加cartridge。雲控制器根據cartridge鏡像ID進行驗證 (例如,EC2上一個亞馬遜機器鏡像 [AMI])。如果cartridge已經存在,雲控制器刪除現有的cartridge並將已修改配置後的新cartridge添加進去。如果不存在cartridge,雲控制器開始添加cartridge的過程,雲控制器將cartridge定義添加到其內存中的數據結構,並持久化記錄到其註冊表,此後,雲控制器更新拓撲結構的服務定義,並將拓撲事件發佈到消息代理 (MB)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章