openstack虛擬機建立流程

wKioL1e5O6mhbZBsAANVT406Ge8062.png-wh_50

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

  1. KeyStone驗證階段數據庫

  2. Nova服務組件交換api

  3. OpenStack其它服務交換微信

  4. 執行建立網絡

第一階段:KeyStone驗證ide

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

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

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

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


第二階段: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

相關文章
相關標籤/搜索