1. 程式人生 > >(轉載)Resize Instance 操作詳解

(轉載)Resize Instance 操作詳解

可能 compute api 消息 confirm 詳細分析 tin 相同 .cn

(轉載)Resize Instance 操作詳解 - 每天5分鐘玩轉 OpenStack(41) 原文路徑:https://www.cnblogs.com/CloudMan6/p/5548294.html 內容根據本人測試,可能有刪改補充.

技術分享圖片

Resize 的作用是調整 instance 的 vCPU、內存和磁盤資源。

Instance 需要多少資源是定義在 flavor 中的,resize 操作是通過為 instance 選擇新的 flavor 來調整資源的分配。

有了前面對 Migrate 的分析,再來看 Resize 的實現就非常簡單了。 因為 instance 需要分配的資源發生了變化,在 resize 之前需要借助 nova-scheduler 重新為 instance 選擇一個合適的計算節點,如果選擇的節點與當前節點不是同一個,那麽就需要做 Migrate。

所以本質上講:Resize 是在 Migrate 的同時應用新的 flavor。 Migrate 可以看做是 resize 的一個特例: flavor 沒發生變化的 resize,這也是為什麽我們在上一節日誌中看到 migrate 實際上是在執行 resize 操作。

下面是 Resize instance 的流程圖

技術分享圖片

  1. 向 nova-api 發送請求

  2. nova-api 發送消息

  3. nova-scheduler 執行調度

  4. nova-scheduler 發送消息

  5. nova-compute 執行操作

Resize 分兩種情況:

  1. nova-scheduler 選擇的目標節點與源節點是不同節點。操作過程跟上一節 Migrate 幾乎完全一樣,只是在目標節點啟動 instance 的時候按新的 flavor 分配資源。 同時,因為要跨節點復制文件,也必須要保證 nova-compute 進程的啟動用戶(通常是 nova,也可能是 root,可以通過 ps 命令確認)能夠在計算節點之間無密碼訪問。 對這一種情況我們不再贅述,請參看前面 Migrate 小節。

  2. 目標節點與源節點是同一個節點。則不需要 migrate。下面我們重點討論這一種情況。

向 nova-api 發送請求

客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向 API(nova-api)發送請求:“幫我 Resize 這個 Instance”

技術分享圖片

選擇新的 flavor

技術分享圖片

點擊 Resize 按鈕

技術分享圖片

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

技術分享圖片

nova-api 發送消息

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

技術分享圖片

nova-scheduler 執行調度

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

技術分享圖片

在本例中,nova-scheduler 選擇了 devstack-compute1 作為的目節點,與源節點相同。

nova-scheduler 發送消息

nova-scheduler 發送消息,通知計算節點可以遷移 instance 了 源代碼在 /opt/stack/nova/nova/scheduler/filter_scheduler.py 第 95 行,方法為 select_destinations

技術分享圖片

nova-compute 執行操作

在目標節點上啟動 instance,過程與 launch instance 非常類似。 日誌記錄在 /opt/stack/logs/n-cpu.log

會經過如下幾個步驟:

  1. 按新的 flavor 為 instance 準備 CPU、內存和磁盤資源
    技術分享圖片

  2. 關閉 instance
    技術分享圖片

  3. 創建 instance 鏡像文件
    技術分享圖片

  4. 將 instance 的目錄備份一份,命名為<instance_id>_resize,以便 revert。
    技術分享圖片

  5. 創建 instance 的 XML 定義文件
    技術分享圖片

  6. 準備虛擬網絡
    技術分享圖片

  7. 啟動 instance
    技術分享圖片

Confirm

這時,instance 的狀態處於“Confirm or Revert Resize/Migrate”狀態,需要用戶確認或者回退當前的遷移操作,實際上給了用戶一個反悔的機會。

技術分享圖片

當我們按下 Confirm 按鈕後,會發生如下事情:

  1. nova-api 接收到 confirm 的消息
    技術分享圖片

  2. 刪除計算節上備份的 instance 目錄 <instance_id>_resize
    技術分享圖片
    技術分享圖片

Revert

反過來,如果執行 Revert 操作會發生什麽事情呢?

技術分享圖片

  1. nova-api 接收到 revert 的消息
    技術分享圖片

  2. 在計算節點上關閉 instance
    技術分享圖片

  3. 通過備份目錄 <instance_id>_resize 恢復 instance 目錄。
    技術分享圖片

  4. 重新啟動 instance
    技術分享圖片

以上是 Resize 操作的詳細分析,下一節我們討論 Live Migrate。

(轉載)Resize Instance 操作詳解