OpenStack
提供開放源碼軟件,建立公共和私有雲。
OpenStack
是一個社區和一個項目,以及開放源碼軟件,以幫助企業運行的虛擬計算或者存儲雲。
OpenStackd
開源項目由社區維護,包括
OpenStack
計算(代號為
Nova
),
OpenStack
對象存儲(代號為
SWIFT
),並
OpenStack
鏡像服務(代號
Glance
)的集合。
OpenStack
提供了一個操作平台,或工具包,用於編排雲。
Components of OpenStack
OpenStack
當前主要有三個組件:計算,存儲,鏡像。
OpenStack 計算是一個雲控制器,用來啟動一個用戶或一個組的虛擬實例,它也用於配置每個實例或項目中包含多個實例為某個特定項目的聯網。
OpenStack 計算是一個雲控制器,用來啟動一個用戶或一個組的虛擬實例,它也用於配置每個實例或項目中包含多個實例為某個特定項目的聯網。
OpenStack 對象存儲是一個在具有內置冗余和容錯的大容量系統中存儲對象的系統。對象存儲有各種應用,如備份或存檔數據,存儲圖形或視頻(流媒體數據傳輸到用戶的瀏覽器),儲存二級或三級靜態數據,發展與數據存儲集成新的應用程序,當預測存儲容量困難時存儲數據,創造彈性和靈活的雲存儲 Web 應用程序。
OpenStack 鏡像服務是一個查找和虛擬機圖像檢索系統。它可以配置三種方式:使用 OpenStack 對象存儲來存儲圖像 ; 使用亞馬遜 S3 直接存儲,或使用 S3 對象存儲作為 S3 訪問中間存儲。
OpenStack Project Architecture
OpenStack
當前包括三個子項目,三個項目相會獨立,可以單獨安裝。
• Swift 提供對象存儲。這是大致類似於 Rackspace 雲文件(從它派生)或亞馬遜 S3 。
• Glance 提供 OpenStack Nova 虛擬機鏡像的發現,存儲和檢索。
• Nova 根據要求提供虛擬服務。這與 Rackspace 雲服務器或亞馬遜 EC2 類似。
將來會出現 web 接口的子項目以及隊列服務的子項目。
• Swift 提供對象存儲。這是大致類似於 Rackspace 雲文件(從它派生)或亞馬遜 S3 。
• Glance 提供 OpenStack Nova 虛擬機鏡像的發現,存儲和檢索。
• Nova 根據要求提供虛擬服務。這與 Rackspace 雲服務器或亞馬遜 EC2 類似。
將來會出現 web 接口的子項目以及隊列服務的子項目。
Cloud Provider Conceptual Architecture
構建自己的
Iaas
雲環境並將其提供給用戶,需要提供以下幾個特性:
1. 允許應用用戶注冊雲服務、查看使用情況以及賬單。
2. 允許開發商和開發人員創建和存儲自定義的鏡像。
3. 允許開發商和開發人員啟動、監控、停止虛擬機實例。
4. 允許操作人員配置和操作雲基礎設施。
1. 允許應用用戶注冊雲服務、查看使用情況以及賬單。
2. 允許開發商和開發人員創建和存儲自定義的鏡像。
3. 允許開發商和開發人員啟動、監控、停止虛擬機實例。
4. 允許操作人員配置和操作雲基礎設施。
上面只列出了基本的
4
個特性,當然還有其他一些特性,將這些特性列在一起,展示如下:
<ignore_js_op>

在上面的模型中,假定了與雲交互的四種人員(開發商、開發人員、操作員、用戶),還定義了三層架構(表現、邏輯、資源)和兩個正交領域(集成和管理)。
表現層,組件與用戶交互,接受並顯示用戶的信息。在這一層,為非開發人員提供了一個 web 圖形界面,為開發人員提供了 API 。在這一層,還存在負載均衡、控制台代理、安全、命名服務。
表現層,組件與用戶交互,接受並顯示用戶的信息。在這一層,為非開發人員提供了一個 web 圖形界面,為開發人員提供了 API 。在這一層,還存在負載均衡、控制台代理、安全、命名服務。
邏輯層,為我們的雲和控制功能提供情報。這層內包括部業務流程(工作流程復雜的任務),調度(確定作業對資源的映射),政策(配額等),鏡像注冊表(例如鏡像的元數據),日志(事件和計量)。
集成功能,大多數服務提供商已經有一個客戶的身份和計費系統。任何雲架構將需要與這些系統集成。
管理層,提供一個 API 來管理雲並提供監控功能。
資源層,因為這是一個計算雲,我們需要實際的計算,網絡和存儲資源,以提供給客戶。這一層提供這些服務,他們可能是服務器,網絡交換機,網絡附加存儲或其他資源。
OpenStack Compute Logical Architecture
OpenStack
中有兩個守護進程:
接收和調解 API 調用的 WSGI 應用程序 ( nova-api , glance-api 等等)。
進行編排任務的工人守護進程( nova-compute , nova-network, , nova-schedule )。
OpenStack 中還包含兩個組件:消息隊列服務和數據庫。這兩個組件方便異步編排復雜的任務通過消息傳遞和信息共享。
<ignore_js_op>

這個復雜的,但不是太翔實的圖表可以概括為三句話:
- 終端用戶通過nova-api 接口與Openstack 計算交互。
- OpenStack計算守護進程通過隊列的交換信息(行動)和數據庫(信息)進行API請求。
- OpenStack Glance是一個完全獨立的基礎上設施。
各個組件的介紹:
nova-api:是對外的接口。
OpenStack
雲計算的核心控制器(
CloudController
定義在
trunk/nova/api/ec2/cloud.py
)。它提供了一個為所有的
API
查詢(
OpenStack API
或
EC2 API
)的端點,引發多數業務流程的活動(如運行一個實例),並實施一些政策(主要是配額檢查)。
nova-schedule:根據當前資源使用情況,決定計算節點分布到哪台計算節點上。目前實現很薄,目前已支持插件方式擴展,方便后面可能有采用更復雜算法。
nova-compute:接收隊列中的動作,然后執行一系列的系統命令(如啟動
KVM
實例),同時更新數據庫中的狀態。
nova-volume:給虛擬機分配額外持久化的存儲,管理持久卷到計算實例的創建,連接和分離。
nova-network:網絡管理,給虛擬機分配網絡和管理,使外部
PC
可以可直接訪問。它接受隊列中的網絡任務,然后執行任務操縱網絡(如設立橋接接口或更改
iptables
規則)。
SQL database:存儲雲基礎設施的編譯時和運行時的狀態。這包括可用的實例類型,在使用中的實例,可用的網絡和項目。
OpenStack Glance:OpenStack
單獨的一個項目。
Nova Conceptual Mapping
OpenStack
的架構示意圖和目前已實現情況,藍色是要
openstack
概念上的架構圖,紅色是目前已實現的。
上面的功能模塊對應上面模型的映射:
<ignore_js_op>

Service Architecture
管理和使用是走兩個通道的。管理必須要經由
nova-api
轉發過去。而運行時,直接連接計算節點上的虛擬機即可。
<ignore_js_op>

部署
部署時,除了
Dashboard
必須部署在
nova-api server
上以外,所有的其它進程都可以部署在不同的機器上。
<ignore_js_op>

OpenStack
提供了基於
Puppet
的自動部署工具。經過簡單配置,就可以把各個組件部署到不同機器上。
鏡像管理
OpenStack
的鏡像創建並沒有納入其職責列表。
你可以使用 Ubuntu 的已有 image (https://help.ubuntu.com/community/UEC/) ,或者直接重新自己通過 KVM 安裝 :
你可以使用 Ubuntu 的已有 image (https://help.ubuntu.com/community/UEC/) ,或者直接重新自己通過 KVM 安裝 :
網絡模型
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager 這種方式適合於共有雲。
在私有雲方面, IP 充足,而且為了方便的互聯互通,簡單的 Flat 結構網絡比較適合。
OpenStack 支持 Floating IPs , 該特性可以方便的通過更改 IP 來 Failover( 容錯轉移)或者遷移。
VLAN Network Manager 這種方式適合於共有雲。
在私有雲方面, IP 充足,而且為了方便的互聯互通,簡單的 Flat 結構網絡比較適合。
OpenStack 支持 Floating IPs , 該特性可以方便的通過更改 IP 來 Failover( 容錯轉移)或者遷移。