Openstack組件部署 — Overview和前期環境準備
Openstack組建部署 — Environment of Controller Node
Openstack組件部署 — Keystone功能介紹與認證明現流程
Openstack組件部署 — Keystone Install & Create service entity and API endpoints
Openstack組件部署 — keystone(domain, projects, users, and roles)
Openstack組件實現原理 — Keystone認證功能
Openstack組建部署 — Glance Install
Openstack組件實現原理 — Glance架構(V1/V2)
Openstack組件部署 — Nova overview
Openstack組件部署 — Nova_安裝和配置Controller Node
Openstack組件部署 — Nova_Install and configure a compute node css
Nova主要有API、Compute、Conductor、Scheduler四個核心服務組成,這些服務之間經過AMQP消息隊列來進行通訊。node
Client:Nova Client可以讓Tenant管理員或用戶終端提交指令,是Openstack官方爲了簡化用戶對RESTful API的使用所提供的API封裝,Client可以將用戶的請求轉換爲標準的HTTP請求。數據庫
API(nova-api service):nova-api service可以接收和響應Client的Compute API調用,因此API就是Client進入Nova的HTTP接口。api
Compute(nova-compute service):nova-compute service是一個經過hypervisor APIs(虛擬化層API)來實現建立和終止虛擬機實例的守護進程,Compute經過和VMM的交互來運行虛擬機並管理虛擬機的生命週期。安全
Scheduler(nova-scheduler service):nova-scheduler service會從queue中接收一個虛擬機實例的請求,並肯定該實例可以運行在哪一臺Compute server中。Scheduler經過讀取數據庫的內容,從可用的池中選擇最合適的Compute Node來建立新的虛擬機實例。markdown
Conductor(nova-conductor):nova-conductor module可以協調nova-compute service和database之間的交互,Conductor爲數據庫訪問提供了一層安全保障。架構
Queue:queue是Nova 服務組件之間傳遞信息的中心樞紐。一般使用AMQP(高級消息隊列協議Advanced Message Queuing Protocol)的RabbitMQ消息隊列來實現。dom
注意:由於Scheduler只能讀取數據庫內容,和API經過Policy機制來限制數據庫的訪問,因此Scheduler和API這兩個服務均可以直接訪問數據庫。可是支持引入了Conductor服務以後,更加規範的方法是經過Conductor服務來對數據庫進行操做。ui
Step1:首先用戶執行Nova Client提供的用於建立虛擬機的指令.net
Step2:nova-api service監聽到來自於Nova Client的HTTP請求,並將這些請求轉換爲AMQP消息以後加入消息隊列Queue
Step3:經過消息隊列Queue調用nova-conductor service
Step4:nova-conductor service從Queue接收到虛擬機實例化請求消息後,進行一些準備工做(EG. 彙總HTTP請求中所須要實例化的虛擬機參數)
Step5:nova-conductor service經過Queue告訴nova-scheduler去選擇一個合適的Compute Node來建立虛擬機,此時nova-scheduler會讀取數據庫的內容
Step6:nova-conductor從nova-scheduler獲得了合適的Compute Node的信息後,在經過Queue來通知nova-compute service實現虛擬機的建立
送虛擬機實例化的過程能夠看出,Nova中最重要的4個服務之間的通訊都是經過Queue來實現的。這符合鬆耦合的實現方式。