Openstack建立雲主機的流程-小小白(linuxzkq)

  博主自從以前換了工做到如今,由於工做太忙的緣由,已經很久沒有更新博客了,深表歉意,還望你們理解。。。。。。html

  今天正好有點時間,整理下Openstack建立雲主機的流程,大神勿噴j_0019.gifnode

1、流程圖算法

wKioL1m1BnuxRdnMAAQJpX3HlKU625.png-wh_50

2、虛擬機建立流程以下 數據庫

  1. 客戶(用戶)端經過命令行CLI或Dashboard Horizon使用本身的用戶名密碼請求認證組件keystone進行用戶的驗證;api

  2. keystone經過查詢在keystone的數據庫user表中是否存在user的相關信息,包括password加密後的hash值,並返回一個token_id(令牌),和 serviceCatalog(一些服務的endpoint地址,cinder、glance-api後面下載鏡像和建立塊存儲時會用到);restful

  3. 客戶端帶上keystone返回的token_id和建立虛機的相關參數,經過nova-api地址Post請求nova組件建立虛擬機;網絡

  4. nova-api接收到請求後,首先使用請求攜帶的token_id去訪問keystone,驗證令牌是否有效;架構

  5. keystone驗證經過後返回更新後的認證信息;分佈式

  6. nova api經過查詢Nova DB庫,比對檢查建立虛擬機的參數是否有效與合法;ide

    檢查虛擬機name是否符合命名規範,flavor_id是否在數據庫中存在,p_w_picpath_uuid是不是正確的uuid格式,檢查instance、vcpu、ram的數量是否超過配額。

  7. 當且僅當全部傳參都有效合法時,更新nova數據庫,新建一條instance記錄,vm_states設爲BUILDING,task_state設爲SCHEDULING;

  8. nova api 遠程調用傳遞請求、參數給nova scheduler,把消息「請給我建立一臺虛擬機」丟到消息隊列,而後定時查詢虛機的狀態;

  9. nova scheduler從queue中獲取到「請給我建立一臺虛擬機」的這條消息;

  10. nova scheduler訪問nova數據庫,經過調度算法,過濾出一些合適的、空閒的計算節點,而後進行排序;

  11. 更新虛機節點信息,返回一個最優節點id 給nova scheduler;

  12. nova scheduler選定host(最優節點id)以後,經過rpc.call的方式調用nova-compute服務,把「建立虛機請求」消息再次丟到消息隊列(mq);

  13. nova compute從MQ中獲取到建立虛擬機請求的消息;

    #nova-compute有個定時任務,按期從數據庫中查找到運行在該節點上的全部虛擬機信息,統計獲得空閒CPU個數、空閒內存大小和空閒磁盤大小。而後更新數據庫compute_node信息,以保證調度的準確性。

  14. nova compute經過rpc.call的方式查詢nova數據庫中虛機的信息,例如主機模板和id;

  15. nova conductor從消息隊列中拿到請求查詢數據庫中該(虛擬機信息)的消息;

  16. nova conductor查詢nova數據庫;

  17. nova 數據庫返回被查詢的虛擬機信息給nova conductor;

  18. nova conductor把查詢到的虛擬機信息丟到MQ中,而後nova compute從消息隊列中獲取該虛擬機的信息;

  19. nova compute 請求glance 的restful api,下載所須要的鏡像,通常是qcow2格式的; http://www.cnblogs.com/zhoumingang/p/5522463.html

  20. glance api 也會去keystone 驗證請求的token是否有效;

  21. token驗證有效,glance api 返回鏡像信息給nova-compute;

  22. 同理,nova compute請求neutron api配置網絡(Quantum(Neutron的前身)),例如獲取虛機的ip地址、掩碼,網關等信息;

  23. neutron api去keystone 驗證請求的token是否有效;

  24. token驗證有效,neutron api 返回網 絡信息給nova-compute;

  25. 25-27步驟. 同glance、neutron 驗證token, 返回塊設備信息,即雲硬盤給nova-compute;

  26. 28步驟. 根據上面配置的虛擬機信息,生成xml,寫入libvirt.xml文件,而後調用libvirt driver 去使用libvirt.xml 文件啓動虛擬機。

wKioL1m1CIXSbjjFAAAktsbrJGA311.png-wh_50

3、總結

一、Openstack這種分佈式的架構,各個模塊之間鬆耦合,能夠很容易的新增模塊,並且配置靈活,服務能夠安裝在不一樣節點,即便部分服務掛了也不會影響。

二、虛擬機建立簡單來講分三步,nova api接受建立虛機請求,nova scheduler爲建立虛機指定宿主機,nova compute啓動虛擬機。若是可以理解上面的全部步驟,那麼對於定位問題能夠精準,甚至有些問題能夠本身解決,譬如虛機error了,若是你看到虛機的信息已經有host信息了,那基本能從novacompute的日誌中看到問題所在,若是沒有,基本是scheduler會有錯誤信息提示。

相關文章
相關標籤/搜索