前面我們讨論了 Instance 的若幹操作,有的操作功能比較類似,也有各自的适用場景,現在是時候系統地總結一下了。
如上圖所示,我們把對 Instance 的管理按運維工作的場景分為兩類:正常操作和故障處理。
正常操作中,Launch、Start、Reboot、Shut Off 和 Terminate 都很好了解。 下面幾個操作重點回顧一下:
Resize
通過應用不同的 flavor 調整配置設定給 instance 的資源。
Lock/Unlock
可以防止對 instance 的誤操作。
Pause/Suspend/Resume
暫停目前 instance,并在以後恢複。
Pause 和 Suspend 的差別在于 Pause 将 instance 的運作狀态儲存在計算節點的記憶體中,而 Suspend 儲存在磁盤上。
Pause 的優點是 Resume 的速度比 Suspend 快;缺點是如果計算節點重新開機,記憶體資料丢失,就無法 Resume 了,而 Suspend 則沒有這個問題。
Snapshot
備份 instance 到 Glance。産生的 image 可用于故障恢複,或者以此為模闆部署新的 instance。
故障處理有兩種場景:計劃内和計劃外。
計劃内是指提前安排時間視窗做的維護工作,比如伺服器定期的微碼更新,添加更換硬體等。
計劃外是指發生了沒有預料到的突發故障,比如強行關機造成 OS 系統檔案損壞,伺服器掉電,硬體故障等。
對于計劃内的故障處理,可以在維護視窗中将 instance 遷移到其他計算節點。
涉及如下操作:
Migrate
将 instance 遷移到其他計算節點。
遷移之前,instance 會被 Shut Off,支援共享存儲和非共享存儲。
Live Migrate
與 Migrate 不同,Live Migrate 能不停機線上地遷移 instance,保證了業務的連續性。也支援共享存儲和非共享存儲(Block Migration)
Shelve/Unshelve Shelve 将 instance 儲存到 Glance 上,之後可通過 Unshelve 重新部署。
Shelve 操作成功後,instance 會從原來的計算節點上删除。
Unshelve 會重新選擇節點部署,可能不是原節點。
計劃外的故障按照影響的範圍又分為兩類:Instance 故障和計算節點故障
Instance 故障隻限于某一個 instance 的作業系統層面,系統無法正常啟動。
可以使用如下操作修複 instance:
Rescue/Unrescue
用指定的啟動盤啟動,進入 Rescue 模式,修複受損的系統盤。成功修複後,通過 Unrescue 正常啟動 instance。
Rebuild
如果 Rescue 無法修複,則隻能通過 Rebuild 從已有的備份恢複。Instance 的備份是通過 snapshot 建立的,是以需要有備份政策定期備份。
Instance 故障的影響範圍局限在特定的 instance,計算節點本身是正常工作的。如果計算節點發生故障,OpenStack 則無法與節點的 nova-compute 通信,其上運作的所有 instance 都會受到影響。這個時候,隻能通過 Evacuate 操作在其他正常節點上重建 Instance。
Evacuate
利用共享存儲上 Instance 的鏡像檔案在其他計算節點上重建 Instance。
是以提前規劃共享存儲是關鍵。
到這裡,我們已經學習了 OpenStack Nova 的架構,讨論了 Nova API,Scheduler,Compute 等重要元件,并通過案例詳盡的剖析了 Nova 各個操作,最後用一張圖總結了這些操作的用途和使用場景。
Nova 是 OpenStack 最重要的項目,處于 OpenStack 的中心。
其他 Keystone,Glance,Cinder 和 Neutron 項目都是為 Nova 其服務的,一定要好好了解。
下一節我們将學習 OpenStack 塊存儲服務 - Cinder。