openstack中創(chuàng)建一個(gè)虛擬機(jī)經(jīng)過的51步

一、前言

本文在林海峰老師“openstack創(chuàng)建一個(gè)VM所需的29步”基礎(chǔ)上進(jìn)行了補(bǔ)充和修改,文中只用到了openstack六個(gè)核心組件,為了便于理解,架構(gòu)中不同組件內(nèi)的rabbit mq和db為同一個(gè)(可以為每個(gè)組件配置單獨(dú)的db和rabbit mq)。openstack組件之間通過REST調(diào)用,組件內(nèi)通過RPC協(xié)議通信,RPC協(xié)議又是基于AMQP模型實(shí)現(xiàn)的,rabbit mq就是運(yùn)用該模型的一款軟件。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)柳州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

二、概述

以現(xiàn)實(shí)中的PC舉例來說明openstack創(chuàng)建的VM,一個(gè)PC要能正常工作它需要具備:計(jì)算單元、系統(tǒng)、網(wǎng)絡(luò)和存儲(chǔ)單元這四個(gè)基本要素,對(duì)應(yīng)openstack中實(shí)現(xiàn)該功能的組件分別為:nova、glance、neutron和cinder,以下就詳細(xì)說明一個(gè)VM創(chuàng)建時(shí)所經(jīng)過的具體步驟。

三、創(chuàng)建VM的過程詳解

openstack中創(chuàng)建一個(gè)虛擬機(jī)經(jīng)過的51步
上圖是openstack上發(fā)起一個(gè)創(chuàng)建VM請(qǐng)求到VM創(chuàng)建完成的全過程,以下對(duì)上述51步進(jìn)行詳細(xì)解釋:

  1. 用戶通過horizon或者cli發(fā)起一個(gè)創(chuàng)建VM請(qǐng)求時(shí),首先去keystone進(jìn)行認(rèn)證;
  2. 認(rèn)證通過后,keystone將結(jié)果返回給用戶,其中就包含用戶權(quán)限的token令牌;
  3. 用戶通過token像nova-api發(fā)起創(chuàng)建虛擬機(jī)的而請(qǐng)求;
  4. nova-api首先去keystone驗(yàn)證用戶的token是否有效;
  5. keystone將認(rèn)證后的結(jié)果返回給nova-api;
  6. nova-api將用戶要?jiǎng)?chuàng)建VM的信息,如CPU、內(nèi)存、網(wǎng)絡(luò)及硬盤等存入數(shù)據(jù)庫(kù);
  7. 存儲(chǔ)完成后,數(shù)據(jù)庫(kù)將結(jié)果返回給nova-api;
  8. nova-api將要?jiǎng)?chuàng)建VM的信息扔到消息隊(duì)列;
  9. nova-scheduler從消息隊(duì)列中接收到該信息;
  10. nova-shceduler從數(shù)據(jù)庫(kù)中查詢可承載VM的物理服務(wù)器;
  11. 數(shù)據(jù)庫(kù)將可用的物理服務(wù)器反饋給nova-scheduler,它根據(jù)權(quán)重最終選出1臺(tái)物理機(jī)承載VM;
  12. nova-scheduler將最終承載VM的物理機(jī)信息扔到消息隊(duì)列;
  13. 被選中物理服務(wù)器上的nova-compute接收到該消息;
  14. nova-compute將查詢請(qǐng)求扔到消息隊(duì)列,請(qǐng)求獲得用戶需要?jiǎng)?chuàng)建VM的flavor類型;
  15. nova-conductor從消息隊(duì)列中接收到請(qǐng)求。該組件的作用是防止VM在被攻破后被當(dāng)作跳板直接***數(shù)據(jù)庫(kù),大規(guī)模環(huán)境下,該組件可能會(huì)成為瓶頸;
  16. nova-conductor去數(shù)據(jù)庫(kù)查詢用戶要?jiǎng)?chuàng)建的flavor類型;
  17. 數(shù)據(jù)庫(kù)將查詢到的結(jié)果反饋給nova-conductor;
  18. nova-conductor將用戶需要?jiǎng)?chuàng)建VM的flavor類型扔到消息隊(duì)列;
  19. nova-conpute獲取到flavor類型,至此,nova-compute知道用戶需要?jiǎng)?chuàng)建的VM都需要包含哪些資源;
  20. nova-compute向glance-api發(fā)起獲取鏡像請(qǐng)求;
  21. glance-api向keystone進(jìn)行認(rèn)證;
  22. keystone將認(rèn)證后的結(jié)果返回給glance-api(glance組件之間通信不經(jīng)過rabbit mq);
  23. glance-api將任務(wù)交由glance-registry處理,glance-registry負(fù)責(zé)存儲(chǔ)系統(tǒng)鏡像的元數(shù)據(jù);
  24. glance-registry向db查詢創(chuàng)建VM需要的鏡像及鏡像的存放位置;
  25. glance-registry將結(jié)果返回給glance-api;
  26. glance-api去存放鏡像的對(duì)象存儲(chǔ)上獲取鏡(此處的glance模式是V1版本,在V2版本中取消了glance-registry,glance-api直接連db和image store);
  27. glance-api將獲取到的鏡像結(jié)果反饋給nova-compute,至此,系統(tǒng)鏡像已具備;
  28. nova-compute向neutron-server發(fā)起創(chuàng)建網(wǎng)絡(luò)請(qǐng)求(neutron-server此處就是起到api的作用,只是名字不叫api);
  29. neutron-server去keystone進(jìn)行認(rèn)證;
  30. neutron-server將需要?jiǎng)?chuàng)建網(wǎng)絡(luò)的請(qǐng)求扔到消息隊(duì)列;
  31. neutron-plugins從消息隊(duì)列中接收到該請(qǐng)求;
  32. neutron-plugins去db中獲取要?jiǎng)?chuàng)建的網(wǎng)絡(luò)使用的plugin以及要?jiǎng)?chuàng)建網(wǎng)絡(luò)的網(wǎng)絡(luò)類型和機(jī)制類型;
  33. neutron-plugins將獲取到的信息扔到消息隊(duì)列;
  34. neutron-agents從消息隊(duì)列收到該信息后執(zhí)行網(wǎng)絡(luò)創(chuàng)建;
  35. neutron-agents將創(chuàng)建的相關(guān)信息保存到數(shù)據(jù)庫(kù)中;
  36. neutron-agents創(chuàng)建完成后將消息扔到消息隊(duì)列;
  37. neutron-server從消息隊(duì)列中收到創(chuàng)建完成的信息;
  38. neutron-server將該信息反饋給nova-compute,至此,網(wǎng)絡(luò)條件具備;
  39. nova-compute向cinder-api發(fā)起持久存儲(chǔ)的請(qǐng)求;
  40. cinder-api首先會(huì)去keystone進(jìn)行身份認(rèn)證;
  41. 認(rèn)證通過后將需要?jiǎng)?chuàng)建持久化存儲(chǔ)的信息扔到消息隊(duì)列;
  42. cinder-scheduler從消息隊(duì)列中接收到信息;
  43. cinder-scheduler去db上查詢哪些物理主機(jī)可以提供持久存儲(chǔ),并根據(jù)權(quán)中選取出1臺(tái);
  44. cinder-scheduler將結(jié)果扔到消息隊(duì)列;
  45. 被選中主機(jī)上的cinder-volume接收到該消息;
  46. cinder-volume調(diào)用后端存儲(chǔ)驅(qū)動(dòng),創(chuàng)建持久化存儲(chǔ)設(shè)備,如LVM等;
  47. cinder-volume將創(chuàng)建好的持久化存儲(chǔ)信息存到數(shù)據(jù)庫(kù)中;
  48. cinder-volume將創(chuàng)建好的結(jié)果扔到消息隊(duì)列;
  49. cinder-api從消息隊(duì)列中接收到該消息;
  50. cinder-api將該消息反饋給nova-compute,至此,一個(gè)VM所需要的計(jì)算、系統(tǒng)鏡像、網(wǎng)絡(luò)、存儲(chǔ)四個(gè)基本條件都已具備;
  51. nova-compute調(diào)用hypervisor創(chuàng)建VM,hypervisor可以是KVM、XEN、VMware等。

以上就是openstack中一個(gè)VM從用戶發(fā)起請(qǐng)求到創(chuàng)建所需要經(jīng)歷的步驟,如果用到的組件不止示例中的四個(gè),依然是nova-compute向相應(yīng)組件的api發(fā)起請(qǐng)求,待所有條件都具備后,再調(diào)用hypervisor創(chuàng)建VM。

網(wǎng)站名稱:openstack中創(chuàng)建一個(gè)虛擬機(jī)經(jīng)過的51步
轉(zhuǎn)載注明:http://muchs.cn/article22/gheocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)企業(yè)建站、用戶體驗(yàn)、虛擬主機(jī)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)