1. 程式人生 > >OpenStack-liberty版虛擬機創建流程(八)

OpenStack-liberty版虛擬機創建流程(八)

meta ron 請求 identity 節點 tex 生成 con 創建

虛擬機創建流程:
技術分享圖片

根據官方提供的流程圖,我個人將OpenStack雲主機的創建步驟分為四個階段:

1、KeyStone驗證階段

2、Nova服務組件交換

3、OpenStack其它服務交換

4、執行創建

第一階段:KeyStone驗證

  1. 用戶使用Dashboard Horizon或者命令行CLI,通過REST API給Identity 服務Keystone發送用戶憑據(credentials)並驗證(authenticates)。Keystone使用用戶憑據進行驗證,然後返回一個auth-token。然後後續操作就可以使用這個auth-token通過REST調用請求OpenStack其他的組件。

  2. Horizon或者CLI將launch instance 或者nova-boot轉換形成為一個REST API的請求發送給nova-api。

  3. nova-api接到這個請求後,首先向keystone發送一個請求來確認auth-token是否有效和是否有訪問權限。Keystone確認auth-token後,發送一個包含角色和權限的更新後的認證頭。

  4. nova-api和Nova數據庫交互,將用戶的創建虛擬機的請求在nova 數據庫裏記錄下來。

第二階段:Nova服務組件交互

  1. nova-api以rpc.call的方式發送一個請求給nova-schedule,讓nova-scheduler去選擇一個計算節點來創建虛擬機。註意是通過消息隊列發送給nova-scheduler。

  2. nova-schedule調度服務會偵聽Scheduler隊列,從隊列中獲取數據。

  3. nova-scheduler和Nova數據庫交互,通過調度算法,也就是filtering 和weighing最終選擇一臺運行nova-compute的計算節點,然後nova-schedule將虛擬機信息使用rpc.cast的模式發送至nova-compute.計算節點隊列。讓nova-compute在選擇好的計算節點中去創建實例。

  4. Nova-Compute從隊列獲取請求。

  5. nova-compute發送一個rpc.call 請求給nova-conductor,去獲取實例的信息,比如host ID和選擇的Flavor(CPU、內存和磁盤)。

  6. nova-conductor從隊列中獲取請求。

  7. nova-conductor與nova的數據庫進行交互。nova-conductor返回實例的信息。nova-compute從隊列中獲取實例的信息。

第三階段:OpenStack其它服務交互

在第二階段nova-compute為了獲取到創建實例所需要的資源,比如鏡像、網絡、存儲。會使用在第一階段用戶驗證後獲取到的auth-tokon分別和鏡像服務Glance的glance-api,網絡服務Neutron的neutron-server已經塊存儲服務Cinder的cinder-api進行交互。而且每次對方收到請求後都需要到keystone上去驗證auth-token是否有效。

  1. nova-compute使用驗證後獲取的auth-token發起一個REST調用給glance-api獲取鏡像。然後nova-compute使用使用鏡像ID。從鏡像服務中得到Image URI。從(image storage)鏡像存儲中加載鏡像。

13.glance-api去Keystone上驗證auth-token是否有效。如果有效,nova-compute就可以獲取鏡像的元數據metadata。

14.nova-compute使用驗證後獲取的auth-token執行一個REST調用給neutron-server,讓neutron-server給分配和配置網絡,為實例分配IP地址。

15.neutron-Server去Keystone驗證auth-token是否有效。如果有效,nova-compute就可以獲取到網絡的相關信息。

16.nova-compute使用驗證後獲取的auth-token執行一個REST調用給cinder-api,給實例附加卷存儲,也就是雲硬盤。

17.cinder-api去Keystone驗證auth-token是否有效,如果有效,那麽nova-compute就可以獲取到塊存儲的相關信息。

第四階段:執行創建

在第三階段,nova-compute已經通過Glance、Neutron和Cinder分別獲取到了鏡像、網絡和存儲相關的信息。那麽在第四階段nova-compute就開始創建虛擬機了。

18.nova-compute為hypervisor的驅動生成數據,並且通過libvirt或者其他API讓hypervisor執行請求來創建虛擬機。這樣虛擬機創建的交互流程基本結束,剩下的步驟就是hypervisor最終創建虛擬機的流程。

然後nova-api去輪訓nova database,查看虛擬機的狀態是否變成正確創建虛擬機的狀態(Active,none,sunning),若狀態正確,則虛擬機創建正常成功。

OpenStack-liberty版虛擬機創建流程(八)