虛擬機建立過程以下:
1.界面或命令行經過RESTful API向keystone獲取認證信息。
2.keystone經過用戶請求認證信息,並生成auth-token返回給對應的認證請求。
3.界面或命令行經過RESTful API向nova-api發送一個boot instance的請求(攜帶auth-token)。
4.nova-api接受請求後向keystone發送認證請求,查看token是否爲有效用戶和token。
5.keystone驗證token是否有效,若有效則返回有效的認證和對應的角色(注:有些操做須要有角色權限才能操做)。
6.經過認證後nova-api和數據庫通信。
7.初始化新建虛擬機的數據庫記錄。
8.nova-api經過rpc.call向nova-scheduler請求是否有建立虛擬機的資源(Host ID)。
9.nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。
10.nova-scheduler經過查詢nova數據庫中計算資源的狀況,並經過調度算法計算符合虛擬機建立須要的主機。
11.對於有符合虛擬機建立的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息。
12.nova-scheduler經過rpc.cast向nova-compute發送對應的建立虛擬機請求的消息。
13.nova-compute會從對應的消息隊列中獲取建立虛擬機請求的消息。
14.nova-compute經過rpc.call向nova-conductor請求獲取虛擬機消息。(Flavor)
15.nova-conductor從消息隊隊列中拿到nova-compute請求消息。
16.nova-conductor根據消息查詢虛擬機對應的信息。
17.nova-conductor從數據庫中得到虛擬機對應信息。
18.nova-conductor把虛擬機信息經過消息的方式發送到消息隊列中。
19.nova-compute從對應的消息隊列中獲取虛擬機信息消息。
20.nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求glance-api獲取建立虛擬機所須要鏡像。
21.glance-api向keystone認證token是否有效,並返回驗證結果。
22.token驗證經過,nova-compute得到虛擬機鏡像信息(URL)。
23.nova-compute經過keystone的RESTfull API拿到認證k的token,並經過HTTP請求neutron-server獲取建立虛擬機所須要的網絡信息。
24.neutron-server向keystone認證token是否有效,並返回驗證結果。
25.token驗證經過,nova-compute得到虛擬機網絡信息。
26.nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求cinder-api獲取建立虛擬機所須要的持久化存儲信息。
27.cinder-api向keystone認證token是否有效,並返回驗證結果。
28.token驗證經過,nova-compute得到虛擬機持久化存儲信息。
29.nova-compute根據instance的信息調用配置的虛擬化驅動來建立虛擬機。
算法