OpenStack 是一個面向 IaaS 層的開源項目,用于實現公有云和私有云的部署及管理,是一個云計算的管理平臺.
**需要弄明白一點,openstack是虛擬化資源的管理平臺.不實現具體的資源虛擬化技術細節.**
## OpenStack 架構
### 概念架構圖

從概念架構圖我們主要需要了解:openstack為我們提供什么服務?
圖片解析:
|Integration整合|Presentation表現層|Logic邏輯層(控制層)|Resources(資源曾)|Management(管理層)|
|--|--|--|--|--|
|Identity認證|Compute API計算接口|Orchestration部署|Compute計算|Admin API管理員API|
|Billing計費|Image API映像接口|Scheduling調度|Volume卷(硬盤上的存儲區域)|Monitoring測控|
||User dashboard儀表盤(顯示系統各種參數)|Policy策略|Network網絡||
||Customer portal顧客門戶(就是UI)|Image Register映像注冊表|||
|||Logging日志|||
OpenStack是一個云平臺管理的項目,這個項目由幾個主要的組件組合起來完成一些具體的工作。
截至 Grizzly 版本, OpenStack 含七個核心項目:
|英文概念|中文|項目|功能描述|
|--|--|--|--|
|Compute|計算|Nova|OpenStack Compute (Nova) 控制云計算架構(基礎架構服務的核心組件)。它是用 Python 編寫的,創建一個抽象層,讓CPU、內存、網絡適配器和硬盤驅動器等商品服務器資源實現虛擬化管理(但并不實現具體的虛擬化技術),并具有提高利用率和自動化的功能。它的實時 VM 管理具有啟動、調整大小、掛起、停止和重新引導的功能,這是通過集成一組受支持的虛擬機管理程序來實現的。還有一個機制可以在計算節點上緩存 VM 鏡像,以實現更快的配置。在運行鏡像時,可以通過應用程序編程接口(API)以編程方式存儲和管理文件。|
|Networking|網絡|Neutron/Quantum|Networking (Neutron) 之前被稱為 Quantum,它提供了管理局域網的能力,具有適用于虛擬局域網(VLAN)、動態主機配置協議和 Internet Protocol 版本 6 的一些功能。用戶可以定義網絡、子網和路由器,以配置其內部拓撲,然后向這些網絡分配 IP 地址和 VLAN。浮動 IP 地址允許用戶向 VM 分配(和再分配)固定的外部 IP 地址。|
|Identity Management|認證|Keystone|OpenStack Identity Management (Keystone) 管理用戶目錄以及用戶可以訪問的 OpenStack 服務的目錄。其目的是跨所有 OpenStack 組件暴露一個中央身份驗證機制。Keystone 本身沒有提供身份驗證,它可以集成其他各種目錄服務,如 Pluggable Authentication Module、Lightweight Directory Access Protocol (LDAP) 或 OAuth。通過這些插件,它能夠實現多種形式的身份驗證,包括簡單的用戶名密碼憑據,以及復雜的多因子系統。|
|Object Storage|對象存儲|Swift|Swift 是一個分布式存儲系統,主要用于靜態數據,比如 VM 鏡像、備份和存檔。該軟件將文件和其他對象寫入可能分布在一個或多個數據中心內的多個服務器上的一組磁盤驅動器,在整個集群內確保數據復制和完整性。|
|Block Storage|塊存儲|Cinder|OpenStack Block Storage (Cinder) 管理計算實例所使用的塊級存儲。塊存儲非常適用于有嚴格性能約束的場景,比如數據庫和文件系統。與 Cinder 配合使用的最常見存儲是 Linux 服務器存儲,但也有一些面向其他平臺的插件,其中包括 Ceph、NetApp、Nexenta 和 SolidFire。|
|Image Service|鏡像服務|Glance|OpenStack Image Service (Glance) 為 VM 鏡像(尤其是為啟動 VM 實例中所使用的系統磁盤)提供了支持。除了發現、注冊和激活服務之外,它還有快照和備份功能。Glance 鏡像可以充當模板,快速并且一致地部署新的服務器。API 服務器暴露了 Representational State Transfer(REST,具象狀態傳輸)接口,用戶可以利用它來列出并獲取分配給一組可擴展后端存儲(包括 OpenStack Object Storage)的虛擬磁盤鏡像。用戶可采用多種格式為服務提供私有和公共鏡像,這些格式包括 VHD(Microsoft(? Hyper-V?)、VDI(VirtualBox)、VMDK(VMware)、qcow2(Qemu/基于內核的虛擬機),以及 Open Virtualization Format。其他一些功能包括注冊新的虛擬磁盤鏡像、查詢已公開可用的磁盤鏡像的信息,以及流式傳輸虛擬磁盤鏡像等。|
|User Interface Dashboard|圖形用戶界面|Horizon|圖形用戶界面,管理員可以很容易地使用它來管理所有項目|
此圖為Grizzly版本組件調用關系圖,簡述了套件之間是如何運作的:

### 邏輯架構圖:

* 終端用戶通過和nova-api對話來與OpenStack Compute交互。
* OpenStack Compute守護進程之間通過隊列(行為)和數據庫(信息)來交換信息,以執行API請求。(交換信息的方式我們以后會講)
* OpenStack Glance基本上是獨立的基礎架構,OpenStack Compute通過Glance API來和它交互。
#### 其各個組件的情況如下:
1. nova-api守護進程是OpenStack Compute的中心。它為所有API查詢(OpenStack API 或 EC2 API)提供端點,初始化絕大多數部署活動(比如運行實例),以及實施一些策略(絕大多數的配額檢查)。
因此很多相對于openstack獨立的基礎架構是跟nova-api交換信息的,而不是向其他進程那樣使用隊列和數據庫;
2. nova-compute進程主要是一個創建和終止虛擬機實例的Worker守護進程。基本原理很簡單:從隊列中接收行為,然后在更新數據庫的狀態時,執行一系列的系統命令執行他們。
3. nova-volume(cinder)管理映射到計算機實例的卷的創建、附加和取消。這些卷可以來自很多提供商,比如,ISCSI和AoE。
4. Nova-network(Neutron/Quantum) worker守護進程類似于nova-compute和nova-volume。它從隊列中接收網絡任務,然后執行任務以操控網絡,比如創建bridging interfaces或改變iptables rules。
5. Queue提供中心hub,為守護進程傳遞消息。當前用RabbitMQ實現。但是理論上能是python ampqlib支持的任何AMPQ消息隊列。
6. SQL database存儲云基礎架構中的絕大多數編譯時和運行時狀態。當前廣泛使用的數據庫是sqlite3(僅適合測試和開發工作),MySQL和PostgreSQL。
7. OpenStack Glance,是一個單獨的項目,它是一個compute架構中可選的部分,分為三個部分:
```
glance-api:glance-api接受API調用;
glance-registry: glance-registry負責存儲和檢索鏡像的元數據,實際的Image Blob存儲在Image Store中;
the image store:Image Store可以是多種不同的Object Store,包括OpenStack Object Storage (Swift);
```
8. user dashboard(Horizon)是另一個可選的項目。OpenStack Dashboard提供了一個OpenStack Compute界面來給應用開發者和devops staff類似API的功能。當前它是作為Django web Application來實現的。當然,也有其他可用的Web前端。(說白了就是個UI)
### 邏輯圖在概念圖上的映射:

## 參考
http://448230305.iteye.com/blog/2081977
- 版權
- 博客主題
- 如何不去做運行3.5G-docker鏡像的工程師
- 預備主題
- FastDFS快速入門
- mysql定時創建月表
- SpringMVC-Restful
- Docker生態系統
- The Docker Ecosystem: An Introduction to Common Components
- docker監控指標
- 基于etcd服務發現的overlay跨多宿主機容器網絡
- etcd:從應用場景到實現原理的全方位解讀
- docker存儲驅動詳解
- 使用docker/engine-api操作docker
- 提升Docker安全性
- docker安全之用戶資源隔離
- marathon
- 開始
- 安裝mararhon
- 高可用模式
- 使用marathon
- 應用的部署
- 架構組件
- Dubbo與Zookeeper、SpringMVC整合和使用(負載均衡、容錯)
- Openstack架構解析
- haproxy
- Ubuntu系統安裝截圖
- mesos官方文檔
- 關于譯者
- mesos基礎
- Mesos架構
- 視頻與ppt
- 讓mesos跑起來
- 快速入門
- 配置
- Containerizer
- Docker Containerizer
- 監控
- 博客文章集
- 煮餃子與mesos之間妙不可言的關系
- linux運維
- 基礎篇
- 進階篇
- mysql
- Ubuntu14.04安裝mysql5.6
- MySQL 5.6 replicate原理與實踐
- mysql性能
- redis
- redis安裝及基礎知識
- redis數據結構
- redis命令
- redis數據持久化
- Redis主從復制
- redis集群
- 其他