計算節點宕機了怎麼辦?- 天天5分鐘玩轉 OpenStack(43)

Rebuild 能夠恢復損壞的 instance。web

那若是是宿主機壞了怎麼辦呢? 好比硬件故障或者斷電形成整臺計算節點沒法工做,該節點上運行的 instance 如何恢復呢? api

用 Shelve 或者 Migrate 可不能夠? 很不幸,這兩個操做都要求 instance 所在計算節點的 nova-compute 服務正常運行。 幸運的是,還有 Evacuate 操做。 學習

Evacuate 可在 nova-compute 沒法工做的狀況下將節點上的 instance 遷移到其餘計算節點上。但有個前提: Instance 的鏡像文件必須放在共享存儲上。 ui

下面是 Evacuate instance 的流程圖 spa

image146.png

  1. 向 nova-api 發送請求 日誌

  2. nova-api 發送消息 orm

  3. nova-scheduler 執行調度 blog

  4. nova-scheduler 發送消息 資源

  5. nova-compute 執行操做 it

下面咱們詳細討論每個步驟。

向 nova-api 發送請求

咱們的實驗場景以下: Instance c2 運行在 devstack-compute1 上。

經過斷電模擬計算節點故障,而後執行 Evacuate 操做恢復 instance c2。 目前 Evacuate 只能經過 CLI 執行。

這裏須要指定 --on-shared-storage 這個參數

查看日誌 /opt/stack/logs/n-api.log

nova-api 發送消息

nova-api 向 Messaging(RabbitMQ)發送了一條消息:「Evacuate 這個 Instance」 查看源代碼 /opt/stack/nova/nova/compute/api.py,方法是 evacuate。

你們注意到沒有,evacuate 其實是經過 rebuild 操做實現的。 這是能夠理解的,由於 evacuate 是用共享存儲上 instance 的鏡像文件從新建立虛機

nova-scheduler 執行調度

nova-scheduler 收到消息後,會爲 instance 選擇合適的計算節點。 查看日誌 /opt/stack/logs/n-sch.log。

nova-scheduler 最後選擇在 devstack-controller 計算節點上重建 instance。

nova-scheduler 發送消息

nova-scheduler 發送消息,通知計算節點能夠建立 instance 了。 源代碼在 /opt/stack/nova/nova/scheduler/filter_scheduler.py 第 95 行,方法爲 select_destinations。

image254.png

nova-compute 執行操做

計算節點上的工做是用共享存儲上的鏡像文件重建 instance。 日誌在 devstack-controller:/opt/stack/logs/n-cpu.log。

爲instance分配資源


使用共享存儲上的鏡像文件

啓動 instance

Evacuate 操做完成後,instance 在 devstack-controller 上運行。

以上是 Evacuate 操做的詳細分析。
至此,咱們已經學習完 Nova 全部的操做,下一節將用一張圖總結這些操做的用途和使用場景。

 

相關文章
相關標籤/搜索