1. 程式人生 > >Openstack新建雲主機的流程

Openstack新建雲主機的流程

黑客入侵 溝通 頁面 信息 ash con 小兄弟 情況 流程

Openstack可以讓你在登錄dashboard之後只需要點一下”創建主機“的按鈕,選擇相應配置,在幾十秒內就可以創建好一臺雲主機供你使用,這麽牛逼的事情是怎麽做到的呢?

別著急,聽我跟你慢慢道來

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

技術分享圖片

圖中流程-1

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

技術分享圖片

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

圖中流程-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等虛擬化技術)

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

Openstack新建雲主機的流程