Revisiting OpenStack Architecture:Esssex Edition

在網上看到這篇文章,感覺非常好,本着學習的態度將文章翻譯成中文。翻譯過程比較倉促,其中還有很多地方不是很理解,也有很多翻譯的不標準。。希望大家諒解。

其實主要爲了加深學習的過程。同時建議大家去看原文。

原文地址:http://ken.pepple.info/openstack/2012/02/21/revisit-openstack-architecture-diablo/


    爲了方便大家的理解,讓我們首先簡要回顧一下OpenStack項目的組成部分和歷史。 該項目於2010年,由Rackspace和美國國家航空航天局聯合成立,目前已經發布了四個版本,並將於四月發佈第五個版本(Esses版、 2010.1)。最初,它由三個核心的服務組成:


    對象存儲(swift):提供了對象儲存服務。它允許你存儲和檢索文件(但是並不能向文件服務器一樣掛載目錄)。由幾家公司基於swift提供商業存儲服務,其中包括KT,Rackspace(swift的起源地)和我的公司Internap。實際上,這篇博客裏面的圖片就是由Internap Swift實現傳輸服務的。

    鏡像(Glance):提供了虛擬磁盤鏡像的目錄和庫。這些磁盤鏡像都是被OpenStack Compute經常用到的。雖然這項服務的技術是可選的,但是任何規模的雲項目都需要它。

    計算(Nova)   : 基於需求提供虛擬服務。類似於亞馬遜的EC2服務,它也提供磁盤服務類似於彈性塊服務(Elastic Block Services, EBS)。Internap基於nova提供商業計算服務,現在主要用在梅爾卡多自由報和美國宇航局內部(也是nova起源地)。

 

   爲了促進核心項目狀態,有兩個即將推出的新項目:


    Dashboard(“Horizon”)爲所有的OpenStack服務提供了一個模塊化的基於頁面的用戶接口。

    Identify(“keystone”)爲所有的OpenStack提供了認證和授權服務。它還提供了特定部署服務的目錄。


    這些新的項目爲原來的三個項目提供了額外的基礎設施。

    

概念架構

    OpenStack項目作爲一個整體設計成爲一個提供大規模可伸縮的雲操作系統。爲了實現這一目標,每個組件服務被設計共同工作,以提供一個完整的基礎設施服務(IaaS)。通過每個服務提供的公共應用程序接口(API),整合是非常方便的。同時這些API允許每個服務使用另一個服務,也可以將這個服務傳遞給其他服務,只要他們仍然保持着API。這些API和提供給雲終端用戶的API是相同的。

    概念上講,可以想象成爲這樣的服務之間的關係:


    

    Horizon爲其他的OpenStack服務提供了Web前端;

    Nova存儲檢索虛擬磁盤(images)和glance中相關的數據;

    Glance可以在Swift中存儲實際虛擬磁盤文件;

    所有的服務最終都有Keystone授權。


    這是整個框架結構的程序化和簡化,假設了正在同時使用常見配置中的所有服務。它也顯示了經營者一面的雲,然而它並沒有顯示消費者如何實際使用雲。例如,許多計算用戶會大量使用對象存儲服務等。


邏輯結構

    可以想象,實際的邏輯結構要遠遠比上面的概念結構要複雜的多。正如所有面向服務的架構,任何試圖說明服務通信組合的圖表都會變得非常混亂。在下面的圖中,只是顯示了OpenStack雲結構中最常見的部分的組合。


    這張圖片和上面的描述一致:

    每個用戶可以通過一個通用的web接口(Horizon)交互或者直接與每個服務的接口交互;

    所有的服務認證都會通過一個公共的資源(keystone的驗證)

    個別服務之間彼此的交互都會通過他們公共的API(除非使用特權管理員命令)

    在下面的章節中,我們將深入每個服務的體系結構中去。


Dashboard

    Horizon是一個模塊化的Web應用程序,它爲用戶和管理員提供了一個與OpenStack服務的接口。

    和大多數的web應用程序一樣,它的結構非常簡單:

    Horizon通常通過Apache的mod_wsgi進行部署。它的代碼被分爲兩部分,一個是可重複使用的python邏輯模塊(和OpenStack裏面各種API進行交互),另一個是演示部分(使它可以很容易的定製爲不同的網站)

    數據庫,它主要依賴於其他服務的數據,它存儲的自己的數據非常少。

    從網絡架構的觀點來看,這項服務需要用戶和其他公共服務API一樣可訪問。如果你想使用管理員功能,它也需要連接到他們的管理員API終端(這應該是用戶不可訪問的)。

Compute

    對於Nova的結構沒有太大的改變,他們加入了一些新的輔助服務例如EC2的兼容性和控制檯服務。

    nova-api接收和響應終端用戶計算和磁盤APi調用。它支持OpenStack API,亞馬遜的EC2 API和特殊管理API(特權用戶執行管理行爲),它還啓動大部分的業務流程行動(例如運行一個實例)以及執行一些政策(主要是配額檢查)。在Essex版本中,nova-api已經被模塊化,允許實施者只運行特定的API。

    nova-compute是最主要的守護進程,它可以通過hypervisor的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for Wmware,etc)創建和終止虛擬機實例.它的整個過程非常的複雜,但是原理非常簡單:在隊列中接收行動,然後執行一系列的系統命令(例如創建KVM實例)來實現行動,同時更新數據庫中的狀態。

    nova-volume負責管理磁盤的創建、附加和分離(類似於亞馬遜的彈性塊存儲功能)。它可以支持各種供應商產品,例如iscsi、Rados Block Device。

    nova-network和nova-compute、nova-volume非常相似,它主要在隊列中接收網絡相關的任務,然後執行任務對網絡進行配置(例如設置網橋接口或者改變iptables規則等)

    nova-schedule進行在概念上應該是nova中非常簡單的一塊代碼:在隊列中接收一個虛擬機實例請求,然後決定在哪裏運行(特別是計算服務在哪裏運行)

    隊列提供了守護進程之間傳遞消息的中央樞紐。他現在是有RabbitMQ實現的,但也可以是任何AMPQ的消息隊列(例如Apache的Qpid)

    SQL數據庫存儲了雲基礎設施在創建和運行時的狀態。它包括可使用的實例類型,正在運行的實例,可用的網絡和項目等。理論上,OpenStack Nova可以支持任務基於SQL機制的數據庫,但是目前正在廣泛應用的數據庫是sqlite3(僅用於測試和開發工作)、mysql和PostgreSQL。

    在過去的兩個版本中,Nova增強了它的控制檯服務。控制檯服務允許用戶可以通過代理服務器訪問虛擬化實例。這就涉及了一對新的守護進程(nova-console和nova-consoleauth).

    Nova和所有的用戶交互需要經過:keystone的認證、Glance的鏡像和Horizon的web接口。然而,Glance的交互是非常有趣的。API進程可以可以上載和查詢Glance,而nova-compute可以下載鏡像使用並啓動鏡像。

Object Store

    swift的架構非常的分散,一方面爲了阻止單點失敗,同時可以實現橫向擴展。它主要包括下面幾個組件:

    Proxy Server: 它通過OpenStack Object API或者原始的HTTP接收傳入的請求。它接受文件上傳、數據認證和創建容器。此外,它需要將文件和容器列表上傳到web瀏覽器中。proxy server可以利用可選的緩存(通常用memcache)來提高性能。

    Account servers管理對象儲存定義的賬戶。

    Container servers管理容器(即文件夾)與對象存儲服務之間的映射。

    Object servers管理存儲節點上世紀的對象。

    還有大量的週期性進程,他們運行在大量數據存儲上執行日常任務。最重要的是複製服務,它通過集羣保證了一致性和可用性。其他的週期性服務包括覈准、更新和收割。

    身份認證是通過配置WSGI中間件處理的(通常使用keystone)。

Image Store

    自從Catus版本之後,Glance的結構一直非常的穩定。結構中最大的變化就是增加了認證,主要是在Diablo版本中開始加入。作爲一個快速提醒,Glance主要包括以下四個部分:

    glance-api接收鏡像API調用包括鏡像發現,鏡像檢索和鏡像存儲;

    glance-registry完成存儲、處理和檢索鏡像相關的數據(大小、類型等)

    一個數據庫來存儲鏡像數據。像Nova一樣,可以根據自己的愛好選擇數據庫(通常使用mysql和sqlite);

    一個實際鏡像文件存儲庫,在圖中,我已經顯示了最普通的配置(利用swift作爲鏡像存儲庫),這也是可配置的。除了swift,glance支持普通的文件系統,RADOS塊設備,亞馬遜S3和HTTP。要知道,這些選擇是受限的,只能用於只讀使用。

    在Glance中也運行着一些週期性的進程以支持緩存。這些服務中最重要的就是複製服務,它通過集羣的方式保證了鏡像的一致性和可用想,其他進程例如覈准、更新和收割等。

    正如在圖中看到的,Glance在整個基礎雲設置中起到一箇中心角色的作用。它從終端用戶和Nova組件中接收請求鏡像的API服務,並可以再其中存儲它的磁盤文件。

 Identity

    Keystone提供了一個單點用於集成OpenStack政策、目錄、令牌和認證。

    Keystone處理API請求同時提供可配置的目錄、政策、令牌和認證服務。

    每個keystone功能都有一個可插拔的後端,它允許使用不同的方式來使用特定的服務。大多數支持標準的後端,例如LDAP、SQL,以及Key Value Stores  (KVS).

    大多數人都使用目前的身份認證服務作爲定製店。

Future Projects

    本文完成了OpenStack架構的介紹。然而,OpenStack並沒有就此止步。下面的OpenStack版本將迎來另一個核心服務:

    網絡(Quantum)爲其他Openstack服務管理的其他接口設備提供網絡連接服務。這項服務允許用戶創建自己的網絡然後連接到接口上。

    


發佈了10 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章