用戶驗證
1、某用戶以登錄web界面或執行rc文件的方式,通過RESTful API向keystone獲取credentials;
2、keystone進行authentication,若正確則生成并返回auth-token;
3、以攜帶auth-token的形式,在web界面或命令行cli,通過RESTful API向nova-api發送一個啟動實例的請求;
4、nova-api向keystone發送認證請求,驗證token是否有效;
5、若有效則返回對應的role、credentials ;
資源查詢
6、通過認證后,nova-api驗證參數是否正確,再與db通信;
7、記錄新建虛擬機的數據;
8、 nova-api通過同步執行遠程方法rpc.call向nova-scheduler請求是否有資源
9、nova-scheduler持續偵聽mq,獲取nova-api的請求;
10、nova-scheduler查詢db中計算資源的情況,通過調度算法計算符合需求的主機;
11、nova-schduler更新db中待創建vm的宿主機信息;
12、nova-scheduler通過異步執行遠程方法rpc.cast向nova-compute發送創建vm請求;
資源組合
13、nova-compute從mq獲取到創建vm的請求消息;
14、nova-compute通過rpc.call向nova-conductor獲取規格flavor;
15、nova-conductor從mq獲取到nova-compute的請求;
16-17、nova-conductor從db種查詢對應vm的信息;
18、nova-conductor把vm信息發送到mq;
19、nova-compute從mq中獲取vm信息;
20、nova-compute攜帶從keystone獲取的token,向glance-api發送http請求,獲取鏡像;
21、glance-api向keystone驗證token是否有效,并返回驗證結果;
22、若token驗證通過,nova-compute獲得相應鏡像的URL;
23、nova-compute攜帶從keystone獲取的token ,向neutron-server發送http請求,獲取網絡;
24、neutron-server向keystone驗證token是否有效,并返回驗證結果;
25、若token驗證通過,nova-compute獲得相應的網絡信息;
26、nova-compute攜帶從keystone獲取的token ,向cinder-api發送http請求,獲取塊存儲;
27、cinder-api向keystone認證token是否有效,并返回驗證結果;
28、若token驗證通過,nova-compute獲得相應的塊存儲信息;
實例創建
29、nova-compute根據虛擬機信息生成配置文件libvirt.xml文件,調用libvirt driver創建vm;