openstack虛擬機創建流程

wKioL1e5O6mhbZBsAANVT406Ge8062.png-wh_50

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

  1. KeyStone驗證階段

  2. Nova服務組件交換

  3. OpenStack其它服務交換

  4. 執行創建

第一階段:KeyStone驗證

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

2.      Horizon或者CLIlaunch instance 或者nova-boot轉換形成爲一個REST API的請求發送給nova-api

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


第四階段:執行創建

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

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

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


轉載自趙班長微信:

http://mp.weixin.qq.com/s?__biz=MzIxMDAwOTcwMA==&mid=2247483688&idx=1&sn=e9f5b6d8131320e4b74905a10311a221&scene=1&srcid=0821aruPgZflt9bsqw4sYXH6#wechat_redirect

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章