1. 程式人生 > >Openstack元件實現原理 — Nova 體系結構

Openstack元件實現原理 — Nova 體系結構

目錄

前文列表

Nova體系結構

這裡寫圖片描述
Nova主要有API、Compute、Conductor、Scheduler四個核心服務組成,這些服務之間通過AMQP訊息佇列來進行通訊。

Client:Nova Client能夠讓Tenant管理員或使用者終端提交指令,是Openstack官方為了簡化使用者對RESTful API的使用所提供的API封裝,Client能夠將使用者的請求轉換為標準的HTTP請求。

API(nova-api service):nova-api service能夠接收和響應Client的Compute API呼叫,所以API就是Client進入Nova的HTTP介面。

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來建立新的虛擬機器例項。

Conductor(nova-conductor):nova-conductor module能夠協調nova-compute service和database之間的互動,Conductor為資料庫訪問提供了一層安全保障。

Queue:queue是Nova 服務元件之間傳遞資訊的中心樞紐。通常使用AMQP(高階訊息佇列協議Advanced Message Queuing Protocol)的RabbitMQ訊息佇列來實現。

注意:因為Scheduler只能讀取資料庫內容,和API通過Policy機制來限制資料庫的訪問,所以Scheduler和API這兩個服務都可以直接訪問資料庫。但是支援引入了Conductor服務之後,更加規範的方法是通過Conductor服務來對資料庫進行操作。

虛擬機器例項化流程

  • Step1:首先使用者執行Nova Client提供的用於建立虛擬機器的指令

  • 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來實現的。這符合鬆耦合的實現方式。