Openstack新建雲主機的流程

前言前端

前天晚上沒睡覺,因此昨天睡得很早,致使今天4點就起來了mysql

時間是人最寶貴的財富,因而我打消了鑽在被子裏刷劇的念頭,爬起來整理一下在Openstack中新建一個雲主機的流程。web

Openstack可讓你在登陸dashboard以後只須要點一下」建立主機「的按鈕,選擇相應配置,在幾十秒內就能夠建立好一臺雲主機供你使用,這麼牛逼的事情是怎麼作到的呢?算法

彆着急,聽我跟你慢慢道來sql

新建一個雲主機流程總覽圖數據庫

 

 

 

 

圖中流程-1

首先你訪問dashboard以後,顯示的是一個登陸頁面,人家horizon告訴你:想用Openstack新建雲主機?那你先把你的帳號密碼交給我,等我找我大哥keystone確認你的身份以後才能放你進去django

 

原來我還一直覺得這裏登陸的時候只是一個簡單的django框架使用pymysql直接查詢數據庫,而實際上這裏的表單信息是提交到了keystone,而後經過keystone查詢數據庫進行驗證的api

圖中流程-2

keystone接收到前端表單傳過來的域、用戶、密碼信息之後,查詢了數據庫,確認身份後將一個token(就像是辦了身份證~~~)返回給該用戶,讓這個用戶之後再進行操做的時候不須要再提供帳號密碼,而是拿出token來網絡

圖中流程-3

horizon拿到token以後,實際上這裏在web頁面上的顯示就是登陸成功了,接着找到建立雲主機的按鈕並點擊框架

填寫雲主機相關配置信息

填了這麼一大堆配置信息,點擊啓動實例以後,horizon就帶着三樣東西去找nova-api了:

  1.建立雲主機的請求

       2.雲主機相關配置信息

  3.剛剛keystone返回給的token

圖中流程-4

你horizon來找我nova-api辦事可我也不認識你啊,這樣,你把身份證給我,我去找我大哥keystone問問(這些組件都有一個共同的大哥keystone,但他們本身之間卻不認識)。而後他就帶着horizon的token去找keystone

圖中流程-5

keystone一看nova-api帶來的token,這不就是本身剛發的那個麼,但程序可沒這麼聰明,它還得乖乖查一次數據庫,而後告訴nova-pai,這兄弟信得過,你就照它說的作吧

圖中流程-6

nova-api從大哥那回來,接收了horizon提供的兩樣東西,一是雲主機配置信息,二是建立請求,這nova-api手底下也有一幫小兄弟,這幫人之間溝通可不太方便都得經過一塊小黑板(mq消息隊列),把本身的需求寫在小黑板上,能作的了這事的人天然就去作了。但配置信息如今還不能寫在小黑板上,得找到肯定去幹活的人以後才行啊,因此nova-api就把配置信息放到數據庫裏

圖中流程-7

數據庫把配置信息收好以後,對nova-api說了聲,我放好了

圖中流程-8

放好配置信息後nova-api就在小黑板上寫「如今要建立一臺雲主機,配置信息我已經放到數據庫了,小s你給安排安排吧」

圖中流程-9

這個小s就是nova-schedular,他就像是nova-api的祕書,nova-api的有事都是經過它交代給其餘人的,這一步就是他從小黑板上看到了nova-api的信息

圖中流程-10

小s如今知道了要建立雲主機,但它要看一看雲主機都要什麼配置,纔好決定該把這事交給誰去作(這裏是指多個nova-compute的狀況,各個計算節點的資源使用狀況都在小s這裏),因此他讓數據庫把雲主機配置信息發給他看看

圖中流程-11

數據庫收到請求以後,把雲主機配置信息發給小s

圖中流程-12

小s拿到配置信息後,使用調度算法決定了要讓nova-compute去幹這個事,就在小黑板上寫「nova-compute你給建立個雲主機,配置都在數據庫裏了」

圖中流程-13

nova-compute看到小黑板上的東西以後,本應該直接去數據庫拿取配置信息,但由於nova-compute的特殊身份,nova-compute所在計算節點上全是雲主機,萬一有一臺雲主機被黑客入侵從而控制計算節點,直接拖庫是很危險的。因此不能讓nova-compute知道數據庫在什麼地方

圖中流程-14

nova-compute沒辦法去數據庫取東西難道就不工做了嗎?那可不行啊,他不知道去哪取,但他哥們知道啊,因而他在小黑板上寫「nova-conductor,你幫我去數據庫取一下配置信息」

圖中流程-15

nova-conductor從小黑板上看到了nova-compute的請求

圖中流程-16

nova-conductor告訴數據庫我要查看某某雲主機的配置信息

圖中流程-17

數據庫把雲主機配置信息發送給nova-conductor

圖中流程-18

nova-conductor把配置信息寫在小黑板上

圖中流程-19

nova-compute從小黑板上讀取雲主機的配置信息

圖中流程-20

nova-compute拿到了雲主機配置信息一看,人家但是專業的,立馬就知道該怎麼作了,先去找glance-api拿鏡像吧,剛纔講了那麼多,可都是在nova組件內部的,此次去找別的組件可不是寫在小黑板上了,它得帶着本身的身份證去,告訴glance-api,我要xxx鏡像

圖中流程-21

glance-api看nova-compute過來,他可不認識nova-compute,讓nova-compute拿出身份證,拿着人家身份證找到本身大哥keystone看看這人靠不靠譜,keystone一看,沒問題,按他說的作吧(在nova驗證horizon被當作兩步,這裏化作一步,是爲了簡化重複的流程)

圖中流程-22

glance-api把鏡像資源信息返回給nova-compute(這裏主要說建立雲主機的過程,除nova外其餘組件內部先不提)

圖中流程-23

接着nova-compute找到neutron-server(圖裏畫錯了,由於是偷別人的圖,本身的圖畫了半天畫很差。。。),告訴他我要xxx網絡資源

圖中流程-24

neutron-server也不認識他,拿着他的身份證找keystone確認了一下身份

圖中流程-25

nuetron-server把網絡資源信息返回給nova-compute

圖中流程-26

nova-compute找到cinder-api要存儲資源,雲主機得有硬盤啊,得存東西啊(一樣,這裏圖中也有錯誤)

圖中流程-27

cinder-api也不認識他,拿着他的身份證找keystone確認了一下身份

圖中流程-28

cinder-api把存儲資源信息返回給nova-compute

圖中流程-29

nova-compute拿到了全部資源以後,他其實也只是個收集信息的,他把工做全都交給了真正建立虛擬機的Hypervisor(kvm,zen等虛擬化技術)

 

到此爲止,你已經擁有了一臺雲主機了,流程看似複雜實際上在幾十秒就完成了

相關文章
相關標籤/搜索