1. 程式人生 > >計算節點宕機了怎麼辦?- 每天5分鐘玩轉 OpenStack(43)

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

Rebuild 可以恢復損壞的 instance。
那如果是宿主機壞了怎麼辦呢?
比如硬體故障或者斷電造成整臺計算節點無法工作,該節點上執行的 instance 如何恢復呢?

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

Evacuate 可在 nova-compute 無法工作的情況下將節點上的 instance 遷移到其他計算節點上。但有個前提:
Instance 的映象檔案必須放在共享儲存上。

下面是 Evacuate instance 的流程圖

  1. 向 nova-api 傳送請求
  2. nova-api 傳送訊息
  3. nova-scheduler 執行排程
  4. nova-scheduler 傳送訊息
  5. nova-compute 執行操作

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

向 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。

nova-compute 執行操作

計算節點上的工作是用共享儲存上的映象檔案重建 instance。
日誌在 devstack-controller:/opt/stack/logs/n-cpu.log。

為instance分配資源

使用共享儲存上的映象檔案

啟動 instance

Evacuate 操作完成後,instance 在 devstack-controller 上執行。

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

相關推薦

計算節點怎麼辦?- 每天5分鐘 OpenStack43

Rebuild 可以恢復損壞的 instance。 那如果是宿主機壞了怎麼辦呢? 比如硬體故障或者斷電造成整臺計算節點無法工作,該節點上執行的 instance 如何恢復呢? 用 Shelve 或者 Migrate 可不可以? 很不幸,這兩個操作都要

instance “error” 怎麼辦?- 每天5分鐘 OpenStack159

這是 OpenStack 實施經驗分享系列的第 9 篇。 OpenStack 用多了,經常會遇到這種情況:對 instance 執行某個操作如果失敗了就會處於 “error” 狀態:

每天5分鐘 OpenStack155

這是 OpenStack 實施經驗分享系列的第 5 篇。 對於 Linux 映象,cloud-init 負責 instance 的初始化工作。cloud-init 功能很強大,能做很多事情,而且我們可以通過修改配置檔案靈活定製 cloud-init。 cloud-ini

每天5分鐘 OpenStack4

本節演示如何使用 virt-manager 啟動 KVM 虛機。 首先通過命令 virt-manager 啟動圖形介面 # virt-manager 點上面的圖示建立虛機 給虛機命名為 kvm1,這裡選擇從哪裡啟動虛機。如果是安裝新的 O

VXLAN 概念Part II- 每天5分鐘 OpenStack109

上一節我們介紹了 VXLAN 的封裝格式以及 VTEP。 今天我們將通過例子討論 VXLAN 封裝和轉發包的過程,以及 Linux 對 VXLAN 的原生支援。 VXLAN 包轉發流程 VXLAN 在 VTEP 間建立隧道,通過 Layer 3 網

每天5分鐘 OpenStack9

網路虛擬化是虛擬化技術中最複雜的部分,學習難度最大。 但因為網路是虛擬化中非常重要的資源,所以再硬的骨頭也必須要把它啃下來。 為了讓大家對虛擬化網路的複雜程度有一個直觀的認識,請看下圖 這是 OpenStack 官網上給出的計算節點(可以理解為 K

每天5分鐘 OpenStack47

本節我們將詳細講解 Cinder 的各個子服務。 cinder-api cinder-api 是整個 Cinder 元件的門戶,所有 cinder 的請求都首先由 nova-api 處理。cinder-api 向外界暴露若干 HTTP REST AP

每天5分鐘 OpenStack17

本節按照以下步驟部署 DevStack 實驗環境,包括控制節點和計算節點 建立虛擬機器 按照物理資源需求建立 devstack-controller 和 devstak-compute 虛擬機器 安裝作業系統 安裝 Ubuntu 14.04,

每天5分鐘 OpenStack121

上一節學習了 Neutron LBaaS 的原理,今天開始實踐。首先在配置中啟用 LBaaS 服務。 Neutron 通過 lbaas plugin 和 lbaas agent 提供 LBaaS 服務。 lbaas plugin 與 Neutron

虛擬 ​router 原理分析- 每天5分鐘 OpenStack101

上一節我們建立了虛擬路由器“router_100_101”,並通過 ping 驗證了 vlan100 和 vlan101 已經連通。 本節將重點分析其中的原理。 首先檢視控制節點的 linux bridge 結構發生了什麼變化。 vlan101 的

每天5分鐘 OpenStack7

KVM 的儲存虛擬化是通過儲存池(Storage Pool)和卷(Volume)來管理的。 Storage Pool 是宿主機上可以看到的一片儲存空間,可以是多種型別,後面會詳細討論。Volume 是在 Storage Pool 中劃分出的一塊空間,宿主機

每天5分鐘 OpenStack65

從今天開始,我們將學習 OpenStack 的 Networking Service,Neutron。 Neutron 的難度會比前面所有模組都大一些,內容也多一些。 為了幫助大家更好的掌握 Neutorn,CloudMan 也會分析地更詳細一些。 N

每天5分鐘 OpenStack23

Compute Service Nova 是 OpenStack 最核心的服務,負責維護和管理雲環境的計算資源。 OpenStack 作為 IaaS 的雲作業系統,虛擬機器生命週期管理也就是通過 Nova 來實現的。 在上圖中可以看到,Nova 處於

每天5分鐘 OpenStack5

上一節我們通過 virt-manager 在本地主機上建立並管理 KVM 虛機。其實 virt-manager 也可以管理其他宿主機上的虛機。只需要簡單的將宿主機新增進來 填入宿主機的相關資訊,確定即可。 接下來,我們就可以像管理本地虛機一樣去管

計算節點怎麽

-shared schedule ins com put 宕機 opensta 請求 TP 比如硬件故障或者斷電造成整臺計算節點無法工作,該節點上運行的 instance 如何恢復呢? 用 Shelve 或者 Migrate 可不可以? 很不幸,這兩個操作都要求 insta

Job 失敗怎麽?- 每天5分鐘 Docker 容器技術133

editor edit 有一個 ges 玩轉 uri ida 生效 數量 上一節討論了 Job 執行成功的情況,如果失敗了會怎麽樣呢?修改 myjob.yml,故意引入一個錯誤:先刪除之前的 Job:如果將 restartPolicy 設置為 OnFailure 會怎麽樣?

14、《每天5分鐘Docker容器技術》學習--一張圖解docker網絡

hostman cloudman cloud openstack docker 14、《每天5分鐘玩轉Docker容器技術》學習--一張圖了解docker網絡

鏡像的分層結構 - 每天5分鐘容器技術11

數據 9.png upload 問題: 所有 rfi image tle acs Docker 支持通過擴展現有鏡像,創建新的鏡像。 實際上,Docker Hub 中 99% 的鏡像都是通過在 base 鏡像中安裝和配置需要的軟件構建出來的。比如我們現在構建一個新的鏡像,

調試 Dockerfile - 每天5分鐘 Docker 容器技術15

top add font tom middle 程序 ria family 是個 包括 Dockerfile 在內的任何腳本和程序都會出錯。有錯並不可怕,但必須有辦法排查,所以本節討論如何 debug Dockerfile。 先回顧一下通過 Dockerfile 構建鏡像

Dockerfile 常用指令 - 每天5分鐘 Docker 容器技術16

依次 官方文檔 構建 bottom str -s 暴露 工作 12px 是時候系統學習 Dockerfile 了。下面列出了 Dockerfile 中最常用的指令,完整列表和說明可參看官方文檔。 FROM指定 base 鏡像。 MAINTAINER設置鏡像的作