日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Migrate 操作的作用是將 instance 從當(dāng)前的計(jì)算節(jié)點(diǎn)遷移到其他節(jié)點(diǎn)上。

Migrate 不要求源和目標(biāo)節(jié)點(diǎn)必須共享存儲(chǔ),當(dāng)然共享存儲(chǔ)也是可以的。 Migrate 前必須滿足一個(gè)條件:計(jì)算節(jié)點(diǎn)間需要配置 nova 用戶無密碼訪問。

下面是 Migrate instance 的流程圖

  • 向 nova-api 發(fā)送請(qǐng)求

  • nova-api 發(fā)送消息

  • nova-scheduler 執(zhí)行調(diào)度

  • nova-scheduler 發(fā)送消息

  • nova-compute 執(zhí)行操作

  • 下面我們?cè)敿?xì)討論每一個(gè)步驟。

    向 nova-api 發(fā)送請(qǐng)求

    客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向 API(nova-api)發(fā)送請(qǐng)求:“幫我遷移這個(gè) Instance” Migrate 操作是特權(quán)操作,只能在 Admin 的 instance 菜單中執(zhí)行





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

    nova-api 發(fā)送消息

    nova-api 向 Messaging(RabbitMQ)發(fā)送了一條消息:“遷移這個(gè) Instance” 查看源代碼 /opt/stack/nova/nova/compute/api.py,方法是 resize。 沒錯(cuò),是 resize 而非 migrate。
    這是由于 migrate 實(shí)際上是通過 resize 操作實(shí)現(xiàn)的,至于為什么要這樣設(shè)計(jì),我們會(huì)在下一節(jié) resize 中詳細(xì)分析。

    nova-scheduler 執(zhí)行調(diào)度

    nova-scheduler 收到消息后,會(huì)為 instance 選擇合適的目標(biāo)計(jì)算節(jié)點(diǎn)。 查看日志 /opt/stack/logs/n-sch.log

    可以看到,因?yàn)?devstack-compute1 的權(quán)值比 devstack-controller 大,最終選擇 devstack-compute1 作為目標(biāo)節(jié)點(diǎn)。

    看到上面的日志,大家發(fā)現(xiàn)什么問題沒有?

    在分析這段日志的時(shí)候,我發(fā)現(xiàn) scheduler 選出來的計(jì)算節(jié)點(diǎn)有可能是當(dāng)前節(jié)點(diǎn)源節(jié)點(diǎn)! 因?yàn)?scheduler 并沒在初始的時(shí)候?qū)⒃垂?jié)點(diǎn)剔除掉,而是與其他節(jié)點(diǎn)放在一起做 filter,按照這個(gè)邏輯,只要源節(jié)點(diǎn)的權(quán)值足夠大,是有可能成為目標(biāo)節(jié)點(diǎn)的。

    那緊接著的問題是:如果源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)是同一個(gè),migrate 操作會(huì)怎樣進(jìn)行呢?

    實(shí)驗(yàn)得知,nova-compute 在做 migrate 的時(shí)候會(huì)檢查目標(biāo)節(jié)點(diǎn),如果發(fā)現(xiàn)目標(biāo)節(jié)點(diǎn)與源節(jié)點(diǎn)相同,會(huì)拋出 UnableToMigrateToSelf 異常。Nova-compute 失敗之后,scheduler 會(huì)重新調(diào)度,由于有 RetryFilter,會(huì)將之前選擇的源節(jié)點(diǎn)過濾掉,這樣就能選到不同的計(jì)算節(jié)點(diǎn)了。 關(guān)于 RetryFilter,大家還有印象嗎?如果生疏了可以看前面章節(jié)。

    好,言歸正傳。在上面的操作中 sheduler 選擇的目標(biāo)節(jié)點(diǎn)是 devstack-compute1,意味著 instance 將從 devstack-controller 遷移到 devstack-compute1。

    nova-scheduler 發(fā)送消息

    nova-scheduler 發(fā)送消息,通知計(jì)算節(jié)點(diǎn)可以遷移 instance 了。 源代碼在 /opt/stack/nova/nova/scheduler/filter_scheduler.py 第 95 行,方法為 select_destinations

    nova-compute 執(zhí)行操作

    nova-compute 會(huì)在源計(jì)算節(jié)點(diǎn)和目標(biāo)計(jì)算節(jié)點(diǎn)上分別執(zhí)行操作。

    源計(jì)算節(jié)點(diǎn) devstack-controller

    遷移操作在源節(jié)點(diǎn)上首先會(huì)關(guān)閉 instance,然后將 instance 的鏡像文件傳到目標(biāo)節(jié)點(diǎn)上。 日志在 /opt/stack/logs/n-cpu.log,具體步驟如下:

    開始 migrate

    在目標(biāo)節(jié)點(diǎn)上創(chuàng)建 instance 的目錄

    nova-compute 首先會(huì)嘗試通過 ssh 在目標(biāo)節(jié)點(diǎn)上的 instance 目錄里 touch 一個(gè)臨時(shí)文件,日志如下

    如果 touch 失敗,說明目標(biāo)節(jié)點(diǎn)上還沒有該 instance 的目錄,也就是說,源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)沒有共享存儲(chǔ)。那么接下來就要在目標(biāo)節(jié)點(diǎn)上創(chuàng)建 instance 的目錄,日志如下

    關(guān)閉 instance

    將 instance 的鏡像文件通過 scp 傳到目標(biāo)節(jié)點(diǎn)上

    目標(biāo)計(jì)算節(jié)點(diǎn) devstack-compute1

    在目標(biāo)節(jié)點(diǎn)上啟動(dòng) instance,過程與 launch instance 非常類似。 會(huì)經(jīng)過如下幾個(gè)步驟: 1. 為 instance 準(zhǔn)備 CPU、內(nèi)存和磁盤資源 2. 創(chuàng)建 instance 鏡像文件 3. 創(chuàng)建 instance 的 XML 定義文件 4. 創(chuàng)建虛擬網(wǎng)絡(luò)并啟動(dòng) instance

    日志記錄在 /opt/stack/logs/n-cpu.log,分析留給大家練習(xí)。

    Confirm

    這時(shí),instance 會(huì)處于 “Confirm or Revert Resize/Migrate”狀態(tài),需要用戶確認(rèn)或者回退當(dāng)前的遷移操作,實(shí)際上給了用戶一個(gè)反悔的機(jī)會(huì)。

    當(dāng)我們按下 Confirm 按鈕后,會(huì)發(fā)生如下事情:

  • nova-api 接收到 confirm 的消息

  • 源計(jì)算節(jié)點(diǎn)刪除 instance 的目錄,并在 Hypervisor 上刪除 instance。


  • 目標(biāo)計(jì)算節(jié)點(diǎn)不需要做任何事情

  • Revert

    如果執(zhí)行的是 Revert 操作會(huì)發(fā)生什么事情呢?

  • nova-api 接收到 revert 的消息

  • 在目標(biāo)計(jì)算節(jié)點(diǎn)上關(guān)閉 instance,刪除 instance 的目錄,并在 Hypervisor 上刪除 instance。

  • 源計(jì)算節(jié)點(diǎn)上啟動(dòng) instance 因?yàn)橹斑w移的時(shí)候只是在源節(jié)點(diǎn)上關(guān)閉了該 instance,revert 操作只需重新啟動(dòng) instance。


  • 以上是 Migrate 操作的完整流程,這里有一點(diǎn)需要特別注意: 遷移過程中源和目標(biāo)節(jié)點(diǎn)之前需要使用 ssh 和 scp,為了使操作順利進(jìn)行,必須要保證 nova-compute 進(jìn)程的啟動(dòng)用戶(通常是 nova,也可能是 root,可以通過 ps 命令確認(rèn))能夠在計(jì)算節(jié)點(diǎn)之間無密碼訪問。否則 nova-compute 會(huì)等待密碼輸入,但后臺(tái)服務(wù)是無法輸入密碼的,遷移操作會(huì)一直卡在那里。

    以上是 Migrate 操作的詳細(xì)分析,下一節(jié)我們討論 Resize。



    轉(zhuǎn)載于:https://www.cnblogs.com/CloudMan6/p/5538599.html

    總結(jié)

    以上是生活随笔為你收集整理的Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。