Nova架構(gòu)
Nova計(jì)算服務(wù)是Openstack的核心服務(wù)翩剪,Nova的架構(gòu)如下:
Nova-架構(gòu).png
Nova的服務(wù)架構(gòu)比較復(fù)雜挟裂,眾多子服務(wù)以后臺(tái)demon的形式運(yùn)行:
-
API
- nova-api - 接受并響應(yīng)用戶(hù)請(qǐng)求
Compute Core
nova-scheduler - nova調(diào)度程序粘室,通過(guò)定義過(guò)濾方法篩選哪個(gè)計(jì)算節(jié)點(diǎn)來(lái)運(yùn)行instance蔑鹦。
nova-compute - 通過(guò)Hypervisor api來(lái)管理虛擬機(jī)的生命周期
Hypervisor - 計(jì)算節(jié)點(diǎn)上運(yùn)行的虛擬機(jī)管理程序歼狼,如KVM裤翩,Xen拳亿,VMware等
nova-conductor - 以前版本的計(jì)算節(jié)點(diǎn)是可以直接訪問(wèn)數(shù)據(jù)庫(kù)的晴股,出于安全和伸縮性的考慮,新的版本增加了該組件肺魁,計(jì)算節(jié)點(diǎn)的訪問(wèn)數(shù)據(jù)庫(kù)要求將托管給該服務(wù)代理电湘。
-
Console Interface
- nova-console - 支持多種方式訪問(wèn)控制臺(tái)
- nova-novncproxy
- nova-spicehtml5proxy
- nova-xvpnvncproxy - 基于java的客戶(hù)端訪問(wèn)
- nova-consoleauth - 為虛擬機(jī)console提供token支持
- nova-cert - x.509證書(shū)支持
- nova-console - 支持多種方式訪問(wèn)控制臺(tái)
-
Database
nova的持久性數(shù)據(jù)將存儲(chǔ)在數(shù)據(jù)庫(kù)中
nova-database.png Massage Queue - 為解耦各個(gè)子服務(wù),nova通過(guò)Message Queue來(lái)做為各個(gè)服務(wù)的消息中心鹅经。
查看nova-*各個(gè)子服務(wù)
nova-*
nova-*工作流
image.png
- 用戶(hù)對(duì)api發(fā)送一個(gè)創(chuàng)建虛擬機(jī)的請(qǐng)求
- API將請(qǐng)求發(fā)送給RabbitMQ
- Nova-scheduler從RabbitMQ得到請(qǐng)求寂呛,然后運(yùn)用調(diào)度算法,挑選合適的計(jì)算節(jié)點(diǎn)瞬雹。
- Message 向指定的算節(jié)點(diǎn)的compute服務(wù)發(fā)送請(qǐng)求昧谊,節(jié)點(diǎn)的nova-compute服務(wù)調(diào)用Hypervisor創(chuàng)建好虛擬機(jī)刽虹。
- 在創(chuàng)建虛擬機(jī)的過(guò)程中酗捌,如果需要查詢(xún)或更新數(shù)據(jù)庫(kù),compute服務(wù)會(huì)通過(guò)message queque向conductor發(fā)送請(qǐng)求涌哲。
Instance 管理常規(guī)操作
instance-manage.png
常規(guī)操作
- Launch胖缤、Start、Reboot阀圾、Shut Off 和 Terminate 都很好理解哪廓。
- resize - 通過(guò)應(yīng)用不同的 flavor 調(diào)整分配給 instance 的資源。
- Lock/Unlock - 可以防止對(duì) instance 的誤操作初烘。
- Pause/Suspend/Resume - 暫停當(dāng)前 instance涡真,并在以后恢復(fù)。
Pause 和 Suspend 的區(qū)別在于 Pause 將 instance 的運(yùn)行狀態(tài)保存在計(jì)算節(jié)點(diǎn)的內(nèi)存中肾筐,而 Suspend 保存在磁盤(pán)上哆料。
Pause 的優(yōu)點(diǎn)是 Resume 的速度比 Suspend 快;缺點(diǎn)是如果計(jì)算節(jié)點(diǎn)重啟吗铐,內(nèi)存數(shù)據(jù)丟失东亦,就無(wú)法 Resume 了,而 Suspend 則沒(méi)有這個(gè)問(wèn)題唬渗。 - snapshot - 備份實(shí)例到glance中典阵,snapshot可以用于生成image。
故障處理
計(jì)劃內(nèi)故障處理
- migrate - 將 instance 遷移到其他計(jì)算節(jié)點(diǎn)镊逝。
遷移之前壮啊,instance 會(huì)被 Shut Off,支持共享存儲(chǔ)和非共享存儲(chǔ)撑蒜。 - live migrate - 與 Migrate 不同歹啼,Live Migrate 能不停機(jī)在線地遷移 instance充坑,保證了業(yè)務(wù)的連續(xù)性。也支持共享存儲(chǔ)和非共享存儲(chǔ)(Block Migration)
- shelve migrate - Shelve 將 instance 保存到 Glance 上染突,之后可通過(guò) Unshelve 重新部署捻爷。
Shelve 操作成功后,instance 會(huì)從原來(lái)的計(jì)算節(jié)點(diǎn)上刪除份企。
Unshelve 會(huì)重新選擇節(jié)點(diǎn)部署也榄,可能不是原節(jié)點(diǎn)。
計(jì)劃外故障處理
- instance故障
- rescue - 用指定的啟動(dòng)盤(pán)啟動(dòng)司志,進(jìn)入 Rescue 模式甜紫,修復(fù)受損的系統(tǒng)盤(pán)。成功修復(fù)后骂远,通過(guò) Unrescue 正常啟動(dòng) instance囚霸。
- rebuild - 如果 Rescue 無(wú)法修復(fù),則只能通過(guò) Rebuild 從已有的備份恢復(fù)激才。Instance 的備份是通過(guò) snapshot 創(chuàng)建的拓型,所以需要有備份策略定期備份。
- 計(jì)算節(jié)點(diǎn)故障 - 利用 共享存儲(chǔ) 上 Instance 的鏡像文件在其他計(jì)算節(jié)點(diǎn)上重建 Instance瘸恼。